這里的標(biāo)識分別是 BOARD(sf32lb58_devkit), SoC (sf32lb586), cpu cluster (hcpu, acpu, lcpu)。MCU 結(jié)構(gòu)復(fù)雜了,這些定義也開始繁瑣起來。這里以 hcpu 為例來編寫。構(gòu)建命令使用:
west build -p always -b sf32lb58_devkit/sf32lb586/hcpu zephyr/samples/hello_world/
注意,這里使用了 Zephyr 3.7 開始使用的新的硬件模型描述方式

詳情見:https://docs.zephyrproject.org/latest/hardware/porting/board_porting.html。
另外要注意,自己定義的 module,如果是通過 west 管理的,west build 會自動關(guān)聯(lián);如果是我現(xiàn)在使用的不是通過 west 管理的,那么需要
exportZEPHYR_EXTRA_MODULES="FULL_PATH_TO_MODULE1;FULL_PATH_TO_MODULE2"
否則,west build 無法正確找到自定義的 module 。
板子定義描述文件 board.yml
開發(fā)板詳細(xì)定義 boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu.yaml
使用前面的構(gòu)建命令,報(bào)如下錯(cuò)誤。意思是board 指定的 SoC 沒有定義。
?配置 SoC: soc/sifli/soc.yml
再構(gòu)建:
新建文件:soc/sifli/sf32lb58/Kconfig
soc/sifli/sf32lb58/Kconfig.soc
定義了 SoC,但是需要在板級的定義里去選中 SoC。boards/sifli/sf32lb58_devkit/Kconfig.board:
boards/sifli/sf32lb58_devkit/Kconfig.sf32lb58_devkit
boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu_defconfig

(這里的 1000000是我現(xiàn)在隨便寫的)
下面開始定義設(shè)備樹。
編輯dts/arm/sifli/sf32lb58.dtsi

創(chuàng)建文件:boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu.dts

構(gòu)建,報(bào)錯(cuò):

是因?yàn)樵?dts/arm/sifli/sf32lb58.dtsi 忘記添加

再構(gòu)建,再報(bào)錯(cuò):

是因?yàn)檫^早定義了 cpu-power-states,先注釋掉

再來

這是因?yàn)槲矣袃商幎x了 sram_retention,我選擇在我的 dts/arm/sifli/sf32lb58_hpsys.dtsi 中移除重復(fù)的定義。
再來

缺少一個(gè)必須有的屬性:
在 dts/arm/sifli/sf32lb58.dtsi 中添加:

再執(zhí)行構(gòu)建:

錯(cuò)誤提示是表達(dá)式不完整。查看錯(cuò)誤日志 linker.cmake 的 155行,所以是因?yàn)闆]有定義 NUM_IRQ:

創(chuàng)建文件soc/sifli/sf32lb58

創(chuàng)建文件Kconfig.defconfig.sf32lb58_hcpu

再構(gòu)建

那就放一個(gè)空的 CMakeLists.txt
再來

這個(gè)問題不大好查,原因是我需要在
sifli_zephyr/soc/sifli/CMakeLists.txt 里添加:

再來:

這個(gè)比較簡單,就是沒有在 CMakeLists.txt 添加對應(yīng)的頭文件路徑
在 soc/sifli/sf32lb58/CMakeLists.txt 中添加:

并且創(chuàng)建空文件 soc/sifli/sf32lb58/soc.h
再來

修改 剛才創(chuàng)建的 soc.h

再來

這個(gè)原因是沒有定義 CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
在soc/sifli/sf32lb58/Kconfig.defconfig.sf32lb58_hcpu 中添加

這里 1000000 這個(gè)數(shù)是我隨便寫的,后面需要查數(shù)據(jù)手冊填寫正確的數(shù)值。
再來

編譯成功了。雖然不能引導(dǎo),但是可以用于測試添加的文件語法是否正確了。
-
移植
+關(guān)注
關(guān)注
1文章
410瀏覽量
29285 -
RTOS
+關(guān)注
關(guān)注
25文章
865瀏覽量
122749 -
編譯
+關(guān)注
關(guān)注
0文章
691瀏覽量
35014 -
KiCAD
+關(guān)注
關(guān)注
5文章
316瀏覽量
10294
發(fā)布評論請先 登錄
探秘SF - 1206SA - R系列汽車級SMD保險(xiǎn)絲:性能與應(yīng)用全解析
探秘SF-0603SPA-R系列汽車級SMD保險(xiǎn)絲:特性、參數(shù)與應(yīng)用考量
E203移植genesys2(差分時(shí)鐘板)生成比特流文件全過程
思必馳語音平臺項(xiàng)目通過ASPICE 2級能力認(rèn)證
SF51 - SF58超快恢復(fù)整流二極管規(guī)格書資料
對 AN65974 項(xiàng)目中 SF_streamIN.img 和 SF_streamOUT.img 的使用有疑問,求解答
移植 ZephyrRTOS 到思澈 SF32LB58 過程筆記 一
LB/LMB/MB/HB 分集接收模塊 skyworksinc
Sky5? LB / MB / HB 分集接收模塊 skyworksinc
Sky5? LB/MBV/HB 分集接收模塊 skyworksinc
MUN3CAD03-SF原位替代矽力杰的SY98003
Sky5? LB/MB/HB 分集接收模塊 skyworksinc
Sky5? LB/MB/HB LNA Bank 模塊 skyworksinc
移植 ZephyrRTOS 到思澈 SF32LB58 過程筆記之二 建立板級定義
評論