2. 开发环境搭建:Zephyr SDK安装、west工具配置、创建第一个Hello World工程
在开始Zephyr OS传感器驱动开发之前,必须搭建一套完整、可复现的开发环境。本章将引导你完成从工具链安装到第一个嵌入式应用运行的完整流程,确保后续I2C传感器驱动调试有一个稳定的基础。
2.1 开发环境全景概览
Zephyr开发环境由四个核心层次组成:主机工具链、Zephyr SDK、west构建系统以及目标板支持包。下图展示了各组件之间的依赖关系与数据流。
2.2 安装Zephyr SDK
Zephyr SDK为嵌入式交叉编译提供完整的工具链、调试器和QEMU模拟器。推荐使用v0.16.8或更新版本,以支持最新的ARM Cortex-M和RISC-V内核。
| 组件 | 用途 | 版本要求 |
|---|---|---|
| arm-zephyr-eabi-gcc | ARM Cortex-M/R/A 交叉编译器 | ≥ 12.2.0 |
| openocd | 片上调试器,支持JTAG/SWD | ≥ 0.12.0 |
| qemu-system-arm | ARM Cortex-M3/M4 模拟器 | ≥ 8.0.0 |
| hosttools | dtc、west依赖、python3 | 随SDK发布 |
2.2.1 Linux/macOS安装步骤
- 下载SDK安装包:从Zephyr官方GitHub Releases页面下载
zephyr-sdk-0.16.8_linux-x86_64.tar.xz(Linux)或对应macOS版本。 - 解压到目标目录:
cd ~ tar xf zephyr-sdk-0.16.8_linux-x86_64.tar.xz mv zephyr-sdk-0.16.8 zephyr-sdk - 运行安装脚本:
cd ~/zephyr-sdk ./setup.sh -t arm-zephyr-eabi -h-t指定目标架构,-h安装主机工具。安装脚本会自动配置udev规则和OpenOCD路径。 - 设置环境变量:将以下内容添加到
~/.bashrc或~/.zshrc:export ZEPHYR_SDK_INSTALL_DIR="$HOME/zephyr-sdk" export PATH="$ZEPHYR_SDK_INSTALL_DIR/sysroots/x86_64-pokysdk-linux/usr/bin:$PATH" - 验证安装:
arm-zephyr-eabi-gcc --version # 应输出类似 "arm-zephyr-eabi-gcc (Zephyr SDK 0.16.8) 12.2.0"
setup.sh 提示缺少 python3 或 pip3,请先执行 sudo apt install python3 python3-pip(Ubuntu)或 brew install python3(macOS)。Windows用户建议使用WSL2 Ubuntu环境。
2.3 安装west工具与获取Zephyr源码
west是Zephyr项目的元构建工具,负责管理多仓库源码树、调用CMake构建以及设备烧录。它通过Python pip安装,并依赖一个 west.yml 清单文件来锁定所有依赖仓库的版本。
2.3.1 安装west
pip3 install --user west
# 确认安装成功
west --version
# 输出示例: West version: v1.2.0
2.3.2 初始化Zephyr工作区
mkdir ~/zephyr-workspace
cd ~/zephyr-workspace
west init -m https://github.com/zephyrproject-rtos/zephyr --mr v3.6.0
west update
west init 会在当前目录创建 .west 配置目录和 zephyr 主仓库。west update 根据 west.yml 拉取所有模块(如 hal_stm32、cmsis、mcuboot 等),总大小约2-3GB。
2.4 安装Python依赖与导出Zephyr环境
Zephyr构建系统需要若干Python包,包括 pyelftools、anytree、canopen 等。推荐使用虚拟环境隔离依赖。
cd ~/zephyr-workspace
pip3 install --user -r zephyr/scripts/requirements.txt
# 导出Zephyr环境变量(每次新终端都需要执行)
source zephyr/zephyr-env.sh
将 source ~/zephyr-workspace/zephyr/zephyr-env.sh 添加到 ~/.bashrc 可避免每次手动导出。
2.5 创建第一个Hello World工程
现在环境已就绪,我们通过west创建一个示例工程并编译运行。目标板选择 QEMU Cortex-M3(无需真实硬件),验证工具链和构建系统是否正常工作。
2.5.1 创建工程
cd ~/zephyr-workspace
west create -p hello_sensor samples/hello_world
cd hello_sensor
west create 会从Zephyr内置示例复制 samples/hello_world 到当前工作区,并自动生成 CMakeLists.txt 和 prj.conf。
2.5.2 查看工程结构
| 文件/目录 | 说明 |
|---|---|
CMakeLists.txt |
CMake构建入口,指定源文件和依赖 |
prj.conf |
Kconfig配置,可启用I2C、GPIO等驱动 |
src/main.c |
主程序源码,包含 main() 函数 |
boards/ |
(可选)板级覆盖配置 |
2.5.3 编译与运行
# 编译目标:qemu_cortex_m3
west build -b qemu_cortex_m3 .
# 启动QEMU运行
west build -t run
如果一切正常,QEMU窗口将输出:
*** Booting Zephyr OS build v3.6.0 ***
Hello World! qemu_cortex_m3
2.6 环境验证清单
在进入传感器驱动开发前,请逐项确认以下检查点:
- SDK工具链:
arm-zephyr-eabi-gcc --version输出正常 - west版本:
west --version≥ 1.2.0 - Zephyr源码:
~/zephyr-workspace/zephyr目录存在且包含Kconfig、CMakeLists.txt - Python依赖:
pip3 list | grep pyelftools已安装 - QEMU运行:
west build -b qemu_cortex_m3 -t run输出Hello World
prj.conf 中是否包含 CONFIG_SERIAL=y 和 CONFIG_CONSOLE=y。对于真实硬件,还需确认 CONFIG_UART_CONSOLE_ON_DEV_NAME 与板级DTS匹配。
2.7 本章小结
通过本章操作,你已成功搭建了完整的Zephyr开发环境,并验证了从源码编译到QEMU仿真的全链路。这个环境将作为后续I2C传感器驱动开发的基础平台。下一阶段我们将深入传感器驱动框架,学习如何编写第一个I2C设备驱动。