如何将新增的board的代码直接纳入app下

在zephyr应用的代码结构--west提货单一文中已经将zephyr和zephyr外部项目纳入到应用的管理,应用可以基于zephyr的任意开发板进行开发。不过实际的嵌入式应用场景需要对硬件进行定制,这就需要添加新的board,为了方便应用项目代码集中管理,我们希望将新增的board的代码直接纳入app下。
添加board
在app目录下添加boards,添加的方式必须遵从boards/《arch》/《board_name》, 例如我的应用要跑在两种不同的硬件上,增加了使用rt1052和esp32两个芯片的board,那么就要新建arm和xtensa两个arch目录,并分别在其中建立新的开发板文件夹atclock和tclock,目录树如下
app
├── cmakelists.txt
├── boards
│ ├── arm
│ │ └── atclock
│ └── xtensa
│ └── tclock
添加board一般的做法是在zephyr/boards目录下找相同soc的board然后根据硬件对dts和配置文件进行修改,具体添加board的方法可以参考zephyr移植新board,例如atclock就是从mm_swiftio修改而来,文件如下
└── atclock
├── cmakelists.txt
├── kconfig.board
├── kconfig.defconfig
├── atclock.dts
├── atclock.yaml
├── atclock_defconfig
├── atclock_flexspi_nor_config.c
├── atclock_flexspi_nor_config.h
├── atclock_sdram_ini_dcd.c
├── board.cmake
├── doc
└── pinmux.c
而tclock是从esp32修改而来,文件如下

└── tclock
├── cmakelists.txt
├── kconfig.board
├── kconfig.defconfig
├── board.cmake
├── doc
├── tclock.dts
├── tclock.yaml
└── tclock_defconfig
如何使用
zephyr提供了两种方法使用非zephyr目录下的board
1.编译时指定
west build -b atclock -- -dboard_root=app/ app/
2.cmake指定
编译时指定需要在每次编译时都指定board_root路径,略显累赘,可以在app/cmakelists.txt中添加如下内容
list(append board_root ${cmake_source_dir})
cmake_source_dir表示app的source code目录,也就是app的目录,由于boards在该目录下,因此在编译时就无需再指定board_root,直接执行下面命令即可
west build -b atclock app/
第二种方法是应用管理自定义board这种场景下比较推荐的方法。
参考
https://docs.zephyrproject.org/latest/application/index.html#custom-board-devicetree-and-soc-definitions
https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/application_development/out_of_tree_board


6DOF追踪的进化:从标识追踪到SLAM定位,带给AR体验质的飞越
开关电源啸叫的原因,一般也就这6种!
颜值在我眼里最重要,华为荣耀8青春版
泰迪熊移动叶松:5G消息是传统短信的全面升级
使用LTspice表征电容器组
如何将新增的board的代码直接纳入app下
基于HD61202液晶显示控制器和单片机实现接口设计
如果能用光助力人类健康,岂不是很有意义?
vivoZ3确定10月17日发布 将采用水滴屏主打性价比
南卡又出新作,RunnerPro3科技派新旗舰,体验新升级
2018年彩电市场有望反弹
自然和人工智能网络以相同方式处理视觉图像的3D片段
20W音频功率放大器LM1875
高频链逆变电源的拓扑和原理图
普及型收放机维修
手机颠覆式创新力作 保千里打令VR手机新品将发布
学习单片机可不可以只用软件仿真而不做实验
汽车电子开关电源的EMC设计中频率如何选?
AH1153升压型大功率LED灯恒流驱动控制芯片概述
当安全这杆大旗难以引领360这艘巨舰航行,金融或成救命稻草