目录
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
结束