Raspberry Pi 推出了搭載全新RP2350微控制器的Pico 2。
RP2350是一款有趣的微控制器單元(MCU)。它擁有兩個核心,這兩個核心中的一個或兩個都可以配置為Arm Cortex-M33或Hazard3 RISC-V。但本文將忽略RISC-V功能。
Pico 2并非唯一一款搭載Cortex-M33微控制器的開發(fā)板,但我相信它是全球范圍內(nèi)最便宜且最容易購買的一款。然而,從編程的角度來看,與其他如STM32H5系列的Arm Cortex-M33 MCU相比,Pico 2有一個主要的不同點:RP2350擁有一個(固定的)啟動ROM,這為其提供了額外的功能。這帶來的影響是,RP2350會首先執(zhí)行其啟動ROM,而不是用戶應(yīng)用程序。此外,我認(rèn)為為了支持RP2350的特性(如版本控制、A/B版本、安全啟動、簽名鏡像),引入了塊(以及分區(qū)表)的概念。分區(qū)表是可選的,但使用塊是必須的。因此,雖然一個用C編寫的簡單裸機應(yīng)用程序可以使用Arm GNU工具鏈進(jìn)行編譯(Pico SDK提供了RP2350 CMSIS支持),但它無法直接在RP2350上執(zhí)行,因為它缺少描述鏡像所需的(元數(shù)據(jù))塊。
在Pico SDK構(gòu)建系統(tǒng)中,所需的塊在和pico-sdk/src/rp2_common/pico_crt0/embedded_end_block.inc.S中定義。這些是包含一些ifdefs的匯編源文件,這些文件中定義的數(shù)據(jù)被放入一個名為.embedded_block的段中。然后,這個塊根據(jù)pico-sdk/src/rp2_common/pico_crt0/rp2350中的鏈接器描述腳本嵌入到鏡像中。
用戶應(yīng)用程序二進(jìn)制文件的元數(shù)據(jù)所需的最小塊在RP2350數(shù)據(jù)手冊的第5.9.5節(jié)“最小可行鏡像元數(shù)據(jù)”中進(jìn)行了描述。這些元數(shù)據(jù)存儲在一個名為IMAGE_DEF的塊中,該塊包含兩個項目:PICOBIN_BLOCK_ITEM_1BS_IMAGE_TYPE和PICOBIN_BLOCK_ITEM_2BS_LAST。每個塊都需要一個類型為LAST的項目作為最后一個項目,這意味著這個最小塊實際上只包含一個有意義的項目(IMAGE_TYPE)。鏡像類型項目包含以下關(guān)于鏡像的信息:
鏡像是可執(zhí)行的(IMAGE_TYPE_EXE)
鏡像在安全模式下運行(EXE_SECURITY_S)
鏡像針對Arm架構(gòu)(EXE_CPU_ARM)
鏡像針對RP2350(EXE_CHIP_RP2350)
這個塊長20字節(jié),應(yīng)該位于加載到閃存的二進(jìn)制文件的前4KB內(nèi)。這是啟動ROM代碼找到它的方式。
上述所有信息(EXE、ARM、RP2350)除了一個(SECURITY_S)之外都應(yīng)該很明顯,但你可能會問為什么它在安全模式下運行。原因是RP2350的安全擴展始終啟用(不能像STM32 MCU那樣禁用)。啟動ROM在安全模式下運行,并正常跳轉(zhuǎn)到用戶應(yīng)用程序,因此(至少最初)用戶應(yīng)用程序也應(yīng)該在安全模式下運行。之后,用戶應(yīng)用程序可以根據(jù)需要配置安全性。
由于通常將向量表保存在閃存鏡像的開頭,并且向量表小于4KB,因此將這個20字節(jié)長的塊放在向量表之后是有意義的。與Pico SDK構(gòu)建系統(tǒng)類似,這個塊可以很容易地在匯編源文件中創(chuàng)建,并使用鏈接器描述腳本鏈接到正確的位置。
我創(chuàng)建了一個非常簡單的LED閃爍項目,沒有使用Pico SDK構(gòu)建系統(tǒng)。可以在GitHub上的rp2350-bare-metal-build找到該項目。
-
Pico
+關(guān)注
關(guān)注
0文章
182瀏覽量
17629 -
SDK
+關(guān)注
關(guān)注
3文章
1076瀏覽量
48782
發(fā)布評論請先 登錄
貿(mào)澤開售Raspberry Pi用于嵌入式和IIoT應(yīng)用的RP2350微控制器
樹莓派 RP2350 實現(xiàn)步進(jìn)電機精確控制
樹莓派 Pico 2040 的“速度狂飆”:時鐘速度幾乎翻倍!

RP2350 現(xiàn)已上市!變體即將發(fā)布!

樹莓派 Pico SDK 2.1.1 版本發(fā)布!

RP2350與RP2040全面對比
RP2350 數(shù)據(jù)手冊及深度了解功能性能特性和開源項目案例

Made with KiCad(九十一):基于 RP2350 的最小系統(tǒng)設(shè)計

Raspberry Pi Pico 2 W 發(fā)布

Raspberry Pi Pico 2

評論