在Zephyr應(yīng)用的代碼結(jié)構(gòu)--West提貨單一文中已經(jīng)將zephyr和zephyr外部項(xiàng)目納入到應(yīng)用的管理,應(yīng)用可以基于zephyr的任意開發(fā)板進(jìn)行開發(fā)。不過實(shí)際的嵌入式應(yīng)用場景需要對硬件進(jìn)行定制,這就需要添加新的board,為了方便應(yīng)用項(xiàng)目代碼集中管理,我們希望將新增的board的代碼直接納入app下。
添加board
在app目錄下添加boards,添加的方式必須遵從boards/《arch》/《board_name》, 例如我的應(yīng)用要跑在兩種不同的硬件上,增加了使用rt1052和esp32兩個(gè)芯片的board,那么就要新建arm和xtensa兩個(gè)arch目錄,并分別在其中建立新的開發(fā)板文件夾atclock和tclock,目錄樹如下
app
├── CMakeLists.txt
├── boards
│ ├── arm
│ │ └── atclock
│ └── xtensa
│ └── tclock
添加board一般的做法是在zephyr/boards目錄下找相同soc的board然后根據(jù)硬件對dts和配置文件進(jìn)行修改,具體添加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.編譯時(shí)指定
west build -b atclock -- -DBOARD_ROOT=app/ app/
2.Cmake指定
編譯時(shí)指定需要在每次編譯時(shí)都指定BOARD_ROOT路徑,略顯累贅,可以在app/CMakeLists.txt中添加如下內(nèi)容
list(APPEND BOARD_ROOT ${CMAKE_SOURCE_DIR})
CMAKE_SOURCE_DIR表示app的source code目錄,也就是app的目錄,由于boards在該目錄下,因此在編譯時(shí)就無需再指定board_root,直接執(zhí)行下面命令即可
west build -b atclock app/
第二種方法是應(yīng)用管理自定義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
+關(guān)注
關(guān)注
1文章
50瀏覽量
16037 -
代碼
+關(guān)注
關(guān)注
30文章
4671瀏覽量
67770 -
Zephyr
+關(guān)注
關(guān)注
0文章
16瀏覽量
5940
原文標(biāo)題:Zephyr應(yīng)用的代碼結(jié)構(gòu)--自定義開發(fā)板
文章出處:【微信號:智芯原動ICETech,微信公眾號:智芯原動ICETech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論