安装与部署:west 工作流、Zephyr SDK 与首次烧录
安装与部署:west 工作流、Zephyr SDK 与首次烧录
Zephyr 的开发环境由两部分组成:Python 侧的 west 与依赖包,以及 C 侧的交叉编译工具链。前者用 pip 装,后者用官方 Zephyr SDK,二者通过环境变量关联。
- 准备 Python 虚拟环境并安装 west。Zephyr 对 Python 版本有最低要求,用系统 Python 容易和发行版包冲突,建议独立 venv。
- 用
west init创建工程目录,west update拉取 zephyr 主树与全部 module(首次会下载数 GB,网络条件差时很慢)。 - 安装 Zephyr SDK,并用
west sdk install或官方安装脚本注册工具链。SDK 版本号请以官方文档的当前推荐版本为准,不要混用多个大版本。 - 用
west build -b <board>编译官方 hello_world 样例验证环境。 - 用
west flash烧录,观察串口输出确认板子真的跑起来了。
# 1. Python 环境
python3 -m venv ~/zephyr-venv
source ~/zephyr-venv/bin/activate
pip install --upgrade pip
pip install west
# 2. 拉取 Zephyr 工程与全部模块
west init ~/zephyrproject
cd ~/zephyrproject
west update
west zephyr-export
pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt
# 3. 安装 Zephyr SDK(版本号以官方文档为准)
cd ~
# 方式一:用 west 自带命令
west sdk install --version <version>
# 方式二:下载官方安装包后解压注册
# https://github.com/zephyrproject-rtos/sdk-ng/releases
tar xf zephyr-sdk-<version>_linux-x86_64.tar.xz
cd zephyr-sdk-<version>
./setup.sh -t arm-zephyr-eabi -h -c
# 4. 编译与烧录
cd ~/zephyrproject
west build -b nrf52840dk/nrf52840 zephyr/samples/hello_world
west flash
如果不想改板子,用 QEMU 目标先验证一遍最快:west build -b qemu_cortex_m3 zephyr/samples/hello_world,然后 west build -t run,直接看控制台输出,不需要任何硬件。
工具链这块有几个关键约定。交叉编译由 ZEPHYR_TOOLCHAIN_VARIANT 选择,用官方 SDK 时设为 zephyr,路径由 ZEPHYR_SDK_INSTALL_DIR 指定;SDK 内为每个架构准备了独立前缀的 GNU 工具链(如 arm-zephyr-eabi-、riscv64-zephyr-elf-),编译时由 CMake 自动挑选,不需要手工设置 CROSS_COMPILE。除了 GNU 工具链,Zephyr 也支持 LLVM / clang 等变体,可用性以官方文档为准。
目标板要求方面,最低限是一块被官方 board 定义覆盖的开发板加一个调试器。常见组合是 ST-Link、J-Link、CMSIS-DAP 或板载 DAPLink,west flash --runner <runner> 可以显式指定烧录后端。Linux 下若出现权限报错,通常是 udev 规则没装,把调试器加入 plugdev 组或补上对应规则即可。
常见报错与排查:
ERROR: Board '<board>' not found:板名写错了。west boards列出全部可用板名,注意很多板子需要写成board/soc的全名形式。ZEPHYR_SDK_INSTALL_DIR is not set或找不到编译器:SDK 未安装或环境变量未生效,重新source一次 SDK 的env.sh(若有)并确认变量值指向 SDK 安装根目录。west update后编译报缺少模块:west update只更新已登记的 module,手动改过west.yml后需要重新跑一次,west list可查看当前登记的模块清单。- 烧录失败、找不到设备:检查调试器驱动与 udev 权限,必要时用
-r <runner>换后端,或先west build -t debug看能否连上调试会话。

