1. 创建最小Zephyr应用

任务目标

创建一个最小Zephyr应用,通过CMake构建系统完成编译,并在目标硬件或模拟器上输出“Hello World”。本案例聚焦于理解Zephyr应用的最小目录结构与CMake构建流程。

环境依赖

  • 已安装Zephyr SDK(包含工具链)
  • 已安装west工具及Zephyr仓库(版本≥3.0)
  • 已设置环境变量 ZEPHYR_BASE 指向Zephyr源码根目录

最小应用结构

创建以下三个文件,构成一个完整的Zephyr应用:

hello_world/
├── CMakeLists.txt
├── prj.conf
└── src/
    └── main.c

关键完整代码

CMakeLists.txt — 声明应用最低CMake版本并引入Zephyr构建系统:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(hello_world)
target_sources(app PRIVATE src/main.c)

src/main.c — 应用入口,通过内核打印接口输出字符串:

#include <zephyr/kernel.h>
#include <zephyr/sys/printk.h>

int main(void)
{
    printk("Hello World\n");
    return 0;
}

prj.conf — 本案例无需额外配置,文件留空即可(也可直接省略该文件)。

构建与运行

在应用根目录执行以下命令(以qemu_x86模拟器为例):

west build -b qemu_x86 -p always .
west build -t run

若使用真实开发板,将 -b 参数替换为对应板型(如 nrf52840dk_nrf52840),并改用 west flash 烧录。

验证方法

运行后观察终端输出。若构建成功且程序正常执行,终端将显示:

Hello World

同时构建过程无报错,生成 build/zephyr/zephyr.elf 文件,即可判定通过。

常见问题

  • 找不到Zephyr包:确认 ZEPHYR_BASE 已正确设置,或使用 west build 时在Zephyr项目目录内执行。
  • 编译报错缺少头文件:检查 target_sources 中源文件路径是否正确,以及 prj.conf 是否存在语法错误。
  • 模拟器无输出:确认使用 west build -t run 而非直接运行可执行文件,qemu需要该命令正确加载内核镜像。