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 会自动关联;如果是我现在使用的不是通过 west 管理的,那么需要
export ZEPHYR_EXTRA_MODULES="FULL_PATH_TO_MODULE1;FULL_PATH_TO_MODULE2"
否则,west build 无法正确找到自定义的 module 。
板子定义描述文件 board.yml开发板详细定义 boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu.yaml
boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu_defconfig
(这里的 1000000是我现在随便写的)
下面开始定义设备树。
编辑 dts/arm/sifli/sf32lb58.dtsi
创建文件:boards/sifli/sf32lb58_devkit/sf32lb58_devkit_sf32lb586_hcpu.dts
构建,报错:
是因为在 dts/arm/sifli/sf32lb58.dtsi 忘记添加
再构建,再报错:
是因为过早定义了 cpu-power-states,先注释掉
再来
这是因为我有两处定义了 sram_retention,我选择在我的 dts/arm/sifli/sf32lb58_hpsys.dtsi 中移除重复的定义。
再来
缺少一个必须有的属性:
在 dts/arm/sifli/sf32lb58.dtsi 中添加:
再执行构建:
错误提示是表达式不完整。查看错误日志 linker.cmake 的 155行,所以是因为没有定义 NUM_IRQ:
创建文件 soc/sifli/sf32lb58
创建文件 Kconfig.defconfig.sf32lb58_hcpu
再构建
那就放一个空的 CMakeLists.txt
再来
这个问题不大好查,原因是我需要在
sifli_zephyr/soc/sifli/CMakeLists.txt 里添加:
再来:
这个比较简单,就是没有在 CMakeLists.txt 添加对应的头文件路径
在 soc/sifli/sf32lb58/CMakeLists.txt 中添加:
并且创建空文件 soc/sifli/sf32lb58/soc.h
再来
修改 刚才创建的 soc.h
再来
这个原因是没有定义 CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC
在soc/sifli/sf32lb58/Kconfig.defconfig.sf32lb58_hcpu 中添加
这里 1000000 这个数是我随便写的,后面需要查数据手册填写正确的数值。
再来
编译成功了。虽然不能引导,但是可以用于测试添加的文件语法是否正确了。
全部0条评论
快来发表一下你的评论吧 !