目錄
1.1 zephyr工程樹(Zephyr repository application)內添加用戶應用程序
1.2 zephyr工作空間(Zephyr workspace application)內添加用戶應用程序
1.3 獨立於zephyr工程的目錄(Zephyr freestanding application)下添加應用程序
2.2.3 修改nrf52840dk_hhp.yaml文件內容
本學筆記基於zephyr 工程版本 2.2.99,主機環境爲ubuntu18.04
摘要
- 如何添加用戶應用程序?
- 如何添加用戶板級資源?
1 添加用戶應用程序
我的工程路徑如下:
zephyr工程樹: ~/zephyrproject/zephyr
zephyr工作空間: ~/zephyrproject/
1.1 zephyr工程樹(Zephyr repository application)內添加用戶應用程序
zephyr工程樹內添加應用與zephyr自帶的samples應用一樣,參考添加即可。但是在開發中如果添加代碼到zephyr工程樹中是不推薦的。官方不推薦zephyr工程樹有任何更改。
<projects>/zephyrproject └── zephyr ├── arch ├── boards ├── cmake ├── samples │ ├── hello_world │ └── ... ├── tests └── ...
1.2 zephyr工作空間(Zephyr workspace application)內添加用戶應用程序
1.2.1 添加應用程序
爲了簡單起見,我們將以samples/basic/blinky例子作爲用戶的應用程序。首先創建~/zephyrproject/app目錄,再將blinky的內容拷貝到 ~/zephyrproject/app下面,目錄結構如下:
<projects>/zephyrproject ├── zephyr ├── bootloader ├── modules ├── tools └── app ├── CMakeLists.txt ├── prj.conf └── src └── main.c
1.2.2 編譯應用程序
在zephyrproject目錄下執行如下命令:
west build -b nrf52840dk_nrf52840 ./app -d ./app/build
-d ./app/build指定編譯過程中的bulid的路徑
./app 指定應用程序路徑
1.3 獨立於zephyr工程的目錄(Zephyr freestanding application)下添加應用程序
1.3.1 添加應用程序
爲了簡單起見,我們將以samples/basic/blinky例子作爲用戶的應用程序。首先創建~/app目錄,再將blinky的內容拷貝到 ~/app下面,目錄結構如下:
<projects>/zephyrproject
├── zephyr
├── bootloader
└── ...<home>/app
├── CMakeLists.txt
├── prj.conf
└── src
└── main.c
1.3.2 編譯應用程序
在zephyrproject目錄下執行如下命令:
west build -b nrf52840dk_nrf52840 ~/app -d ~/app/build
-d ./app/build指定編譯過程中的bulid的路徑
~/app 指定應用程序路徑
注意:即使app不在zephyrproject下面了,編譯指令也需要在zephyrproject下面執行。
1.3.3 任意目錄下編譯應用程序(解決1.3.2的"注意"問題)
如果想在任意目錄下編譯應用程序,需要制定zephyr的源碼目錄,這可以通過環境變量實現ZEPHYR_BASE,在shell中輸入如下命令:
export ZEPHYR_BASE=/home/hhp/zephyrproject/zephyr
上述命令僅臨時有效,如果想設置永久環境變量,則將上面命令添加到~/.bashrc中
2.添加用戶定義的板級資源
在zephyr/boards下面包含了各式各樣的板級文件。但是都是基於芯片廠家官方開發板的。當我們在實際開發中,官方開發板與我們實際項目中的開發板的板級資源肯定是不一樣的。這樣在實際開發當中,我們需要自己定義板級資源。
2.1.板級資源存放位置
官方建議自己定義的開發板放在app下面,即在app目錄下,創建boards/xx/xxx。
2.2 板級資源的內容
2.2.1 添加板級文件
在app/boards下面,我們可以參考,zephyr/boards下面的內容,以nrf52840爲例,我們創建自己的板級資源,可以參考官方的開發板nrf52840dk_nrf52840。在app/boards下面建立板級目錄,我們簡單命名爲nrf52840dk_hhp。然後將 zephyr/boards/arm/nrf52840dk_nrf52840下的內容拷貝到app/boards/arm/nrf52840dk_hhp目錄下。
2.2.2 修改如下文件名稱:
nrf52840dk_nrf52840_defconfig -> nrf52840dk_hhp_defconfig
nrf52840dk_nrf52840.dts -> nrf52840dk_hhp.dts
nrf52840dk_nrf52840.yaml -> nrf52840dk_hhp.yaml
2.2.3 修改nrf52840dk_hhp.yaml文件內容
2.2.4 編譯
在zephyrproject目錄下執行如下命令:
west build -b nrf52840dk_hhp ~/app -d ../app/build -DBOARD_ROOT=~/app
-d ./app/build指定編譯過程中的bulid的路徑
~/app 指定應用程序路徑-DBOARD_ROOT=~/app 指定編譯器搜索boards的路徑,不要寫-DBOARD_ROOT=~/app/boards
結束