1. 创建最小Zephyr应用

创建最小Zephyr应用 学习卡片

任务目标

本案例将完成Zephyr RTOS开发环境的搭建,创建一个仅包含最基本内核初始化的最小应用,并成功编译生成可运行固件。通过本案例,你将掌握Zephyr项目的基本结构、west工具链的使用方法,以及从源码到固件的完整构建流程。

环境准备

需要一台运行Linux(推荐Ubuntu 22.04+)或macOS的计算机,具备以下依赖:

  • Python 3.8+、pip、cmake(3.20+)、ninja-build、dtc(device tree compiler)
  • git、wget、tar
  • 用于编译的交叉工具链(本案例以x86 native_posix目标为例,无需额外安装交叉编译器)

搭建Zephyr开发环境

安装west工具并获取Zephyr源码(约1.5GB,包含所有模块):

# 安装west
pip3 install west

# 创建工作目录并获取Zephyr源码
mkdir zephyr_project && cd zephyr_project
west init -m https://github.com/zephyrproject-rtos/zephyr --mr v3.7.0
cd zephyr
west update

# 安装Python依赖
pip3 install -r scripts/requirements.txt

# 导出Zephyr环境变量(可加入~/.bashrc)
export ZEPHYR_BASE=$(pwd)
export ZEPHYR_TOOLCHAIN_VARIANT=host

创建最小应用

在zephyr_project目录下创建应用文件夹,包含两个必需文件:

mkdir -p my_minimal_app/src
cd my_minimal_app

CMakeLists.txt:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(my_minimal_app)

target_sources(app PRIVATE src/main.c)

prj.conf(空文件即可,仅用于声明应用配置存在):

touch prj.conf

src/main.c:

#include <zephyr/kernel.h>

void main(void)
{
    printk("Minimal Zephyr app started!\n");
}

编译与运行

在应用目录下执行以下命令构建并运行(native_posix目标将生成一个可在主机上直接执行的程序):

west build -b native_posix .
west build -t run

程序启动后会在终端输出内核初始化信息,并在末尾打印应用消息。

验证方法

观察终端输出,满足以下条件即判定通过:

  1. 构建过程无错误,最终生成build/zephyr/zephyr.exe可执行文件;
  2. 运行后终端出现以*** Booting Zephyr OS build v3.7.0 ***开头的启动日志;
  3. 启动日志之后出现Minimal Zephyr app started!,表明应用代码已成功执行。

常见问题

  • west init失败:检查网络连接,或尝试使用--mr main拉取最新开发分支。
  • 找不到Zephyr包:确认ZEPHYR_BASE环境变量已正确指向zephyr源码根目录。
  • 编译报错缺少dtc:执行sudo apt install device-tree-compiler安装。
Zephyr最小应用构建流程 1. 源码准备 main.c + CMakeLists.txt 2. CMake配置 find_package(Zephyr) 3. 编译链接 ninja + 链接内核 4. 生成固件 zephyr.exe 5. 运行验证 west build -t run 预期输出检查 ✓ "*** Booting Zephyr OS build v3.7.0 ***" ✓ "Minimal Zephyr app started!"