1. 环境搭建与Hello World

环境搭建与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:用于编译链接的交叉工具链

环境搭建步骤

  1. 安装系统依赖: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
  2. 创建虚拟环境并安装west:python3 -m venv ~/zephyrproject/.venv,激活后执行 pip install west
  3. 获取Zephyr源码:west init ~/zephyrproject,然后 cd ~/zephyrproject && west update
  4. 安装Python依赖:pip install -r zephyr/scripts/requirements.txt
  5. 下载Zephyr SDK:从官方Release页面下载 zephyr-sdk-0.16.5_linux-x86_64.tar.xz,解压后运行 ./setup.sh,安装时选择默认路径 ~/zephyr-sdk-0.16.5
  6. 导出环境变量:将以下内容加入 ~/.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板级支持包自动提供。

编译与烧录

  1. 进入示例目录:cd ~/zephyrproject/zephyr/samples/hello_world
  2. 构建:west build -b nrf52840dk/nrf52840(首次构建会自动调用cmake配置)
  3. 连接开发板USB口,确认主机识别到J-Link调试器
  4. 烧录: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线是否为数据线(非仅充电线)