在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
├── 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
+關注
關注
1文章
50瀏覽量
16100 -
代碼
+關注
關注
30文章
4779瀏覽量
68521 -
Zephyr
+關注
關注
0文章
21瀏覽量
5963
原文標題:Zephyr應用的代碼結構--自定義開發板
文章出處:【微信號:智芯原動ICETech,微信公眾號:智芯原動ICETech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論