0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

智芯原动ICETech 来源:HalfCoder 作者: lgl88911 2021-08-18 09:23 次阅读

在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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DTS
    DTS
    +关注

    关注

    1

    文章

    48

    浏览量

    16005
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66736
  • Zephyr
    +关注

    关注

    0

    文章

    15

    浏览量

    5888

原文标题:Zephyr应用的代码结构--自定义开发板

文章出处:【微信号:智芯原动ICETech,微信公众号:智芯原动ICETech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32的App应用程序用MDK直接仿真,MDK下载后无法正常仿真的原因?

    如题,尝试了STM32的App应用程序用MDK直接仿真,发现MDK下载后无法正常仿真,程序起始地址和中断偏移都设置了。以前用IAR是可以仿真Ap
    发表于 04-12 08:00

    如何将bootloader代码从flash搬到RAM运行?

    如何将bootloader 代码从flash 搬到RAM 运行
    发表于 04-03 07:14

    如何将bootloader代码从flash搬到RAM运行?

    如何将bootloader 代码从flash 搬到RAM 运行
    发表于 04-01 07:10

    STM32 IAP升级,KEIL如何一份代码运行于两个APP区?

    我的想法是一个IAP+APP1+APP2。上电运行IAP。会检测当前有效APP,跳转有效APP运行。在APP运行期间,收到升级指令,直接do
    发表于 03-26 07:20

    如何将F-RAM™添加到现有的PSoC™ Creator项目?

    我们在PSoC™ Creator 中有一个 PSoC6 项目,并希望 QSPI F-RAM™存储器添加到TDA5235_868_5_BOARD中。我很难找到如何在F-RAM™ PSoC
    发表于 03-01 12:14

    HighTec的TC212开发,如何将VADC设置为TOM输出的PWM触发呢?

    HighTec的TC212开发,如何将VADC设置为TOM输出的PWM触发?
    发表于 02-04 09:22

    如何将共享代码映射到DSPR5以及将其映射到其他RAM区域?

    Scratch-Pad Sram(CPU5 DSPR)相关联。 在链接器脚本中,我已经映射了每个.text 部分移至其各自的 PSPR 内核。 我想知道如何将共享代码映射到 DSPR5 以及如何将其映射到其他 RAM 区域。
    发表于 01-24 07:26

    CPU是如何将数据传到GTM模块的?

    ATOM不通过ARU也可以直接写寄存器,从而配置占空比和周期。我的问题是中间发生了什么,CPU是如何将数据传到GTM模块的?
    发表于 01-22 08:09

    如何将Git与用于DS-5 1.0版的Eclipse配合使用

    代码管理系统(SCS)允许您对源文件进行版本设置,并与其他开发人员共享。有许多可用的源代码管理系统,既有商业的,也有开源的。 本教程介绍如何将开源Git源代码管理系统集成到Eclip
    发表于 08-10 07:11

    iOS APP架构设计

    App 架构是软件设计的一个分支,它关心如何设计一个 app 的结构。具体来说,它关注于两个 方面:如何将 app 分解为不同的接口和概念层次部件,以及这些部件之间和自身的不同操作中
    的头像 发表于 07-12 09:57 999次阅读
    iOS <b class='flag-5'>APP</b>架构设计

    知名开源前端框架uni-app包含热更新代码,谷歌“封杀”

    近日,程序员发帖称自己用开源框架 uni-app 开发的 App 被 Google Play 下架,原因是 uni-app 自带的 SDK 包含违反 Google Play 政策的内容 —— 包括广告
    的头像 发表于 06-27 16:30 1401次阅读
    知名开源前端框架uni-<b class='flag-5'>app</b>包含热更新<b class='flag-5'>代码</b>,谷歌“封杀”

    如何将.bin文件加载到Huzzah ?

    我一直致力于基于 Adafruit Huzzah 的项目,并希望代码作为 .bin 文件分发。我可以在 Arduino IDE 中使用 Ctl-Alt-S 导出编译后的代码(在 sketch
    发表于 06-09 06:01

    如何将Deauther手表连接到Arduino IDE?

    ==================================================================================== 现在我想给我的手表编程。最好使用 python,但我不知道如何将 Arduino IDE 切换为 python。无论如何,我安装了开发板软件并
    发表于 06-05 08:29

    如何将0b1000写入代码字段?

    在我的项目中,我想停用MB1(传输邮箱)。根据参考手册的 53.5.7.2,我应该 CODE 字段更新为 INACTIVE (0b1000) 和 MCR[AEN] = 0。 困扰我的是如何将
    发表于 05-29 06:24

    如何将SPIFFS代码移植到LittleFS?

    有没有人有关于 SPIFFS 代码移植到 LittleFS 的过程的任何提示或教程链接? 我做了基准测试,很高兴看到我的代码如何在新文件系统上运行,但它不是一个直接的替代品(我试过)
    发表于 05-16 07:15