1. 环境搭建与Hello World
任务目标
本案例完成Zephyr RTOS开发环境的搭建,编译一个Hello World程序并烧录到开发板,通过串口输出验证工具链与开发板连接正常。以nRF52840 DK开发板为例,使用西数(West)构建工具。
环境依赖
- 主机系统:Ubuntu 22.04(64位)或Windows 10/11 + WSL2
- 必要工具:Python 3.8+、pip3、git、cmake(≥3.20)、dtc(device tree compiler)、ninja-build
- 开发板:nRF52840 DK(PCA10056)或其他Zephyr支持的目标板
- Zephyr SDK:用于编译链接的交叉工具链
环境搭建步骤
- 安装系统依赖:
sudo apt install --no-install-recommends git cmake ninja-build gperf ccache dfu-util device-tree-compiler wget python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 - 创建虚拟环境并安装west:
python3 -m venv ~/zephyrproject/.venv,激活后执行pip install west - 获取Zephyr源码:
west init ~/zephyrproject,然后cd ~/zephyrproject && west update - 安装Python依赖:
pip install -r zephyr/scripts/requirements.txt - 下载Zephyr SDK:从官方Release页面下载
zephyr-sdk-0.16.5_linux-x86_64.tar.xz,解压后运行./setup.sh,安装时选择默认路径~/zephyr-sdk-0.16.5 - 导出环境变量:将以下内容加入
~/.bashrc:
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=~/zephyr-sdk-0.16.5
export PATH=~/zephyrproject/.venv/bin:$PATH
然后执行source ~/.bashrc
关键完整代码
Zephyr的Hello World示例位于 zephyr/samples/hello_world,核心源码如下(src/main.c):
#include <zephyr/kernel.h>
#include <zephyr/sys/printk.h>
int main(void)
{
printk("Hello World! %s\n", CONFIG_BOARD);
return 0;
}
构建配置文件 prj.conf 内容为空即可(默认无需额外配置)。开发板配置文件由Zephyr板级支持包自动提供。
编译与烧录
- 进入示例目录:
cd ~/zephyrproject/zephyr/samples/hello_world - 构建:
west build -b nrf52840dk/nrf52840(首次构建会自动调用cmake配置) - 连接开发板USB口,确认主机识别到J-Link调试器
- 烧录:
west flash
验证方法
烧录完成后,打开串口终端(如 screen /dev/ttyACM0 115200 或使用minicom),观察输出。若开发板连接正常且程序运行成功,串口将显示:
Hello World! nrf52840dk/nrf52840
判定通过条件:串口输出与上述内容一致,且无错误信息。若输出乱码,检查串口波特率是否为115200;若无输出,检查开发板USB连接及J-Link驱动是否正常。
常见问题
- west命令找不到:确认虚拟环境已激活,执行
which west检查路径 - 编译报错找不到Zephyr SDK:确认
ZEPHYR_SDK_INSTALL_DIR指向正确的SDK解压目录 - 烧录失败提示无法连接J-Link:安装J-Link驱动,或检查开发板USB线是否为数据线(非仅充电线)