ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Zephyr west 实战指南:4 步跑通固件构建与烧录

Zephyr west 实战指南:4 步跑通固件构建与烧录 Zephyr west 实战指南4 步跑通固件构建与烧录【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyrZephyr 是多仓库项目手动对齐每个模块的版本容易出错切换板卡的编译配置也繁琐。west 是 Zephyr 官方的工作区与构建工具一次搞定拉仓库、编译、烧录三件事。本文按环境、构建、烧录、排障的顺序带你完整走一遍。west 到底管什么可以把 west 理解成 Zephyr 的仓库编排器它读一份 west.yml 清单就能把几十个 Git 仓库按正确版本一次性拉到本地内核、HAL、中间件模块全在里面。一句话定位west 多仓库同步 构建入口 烧录入口日常开发里最高频的三步都由它统一收口。5 分钟搭好工作区从装依赖到 west update做完这一步你本地就有完整的 Zephyr 工作区了随时可以开始编译。先装系统依赖。Ubuntu/Debian 上一条命令即可sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler wget python3-dev \ python3-venv python3-tk xz-utils file make gcc g版本底线记一下Python ≥ 3.10、CMake ≥ 3.20.5、dtcdevice-tree-compiler≥ 1.4.6外加 git 和 ninja-build。macOS 和 Windows 的装法不同按 doc/develop/getting_started/ 下对应的安装文档走。然后把 west 装进虚拟环境避免污染系统 Pythonpython3 -m venv ~/zephyrproject/.venv source ~/zephyrproject/.venv/bin/activate pip install west接下来两条命令初始化工作区west init -m https://gitcode.com/GitHub_Trending/ze/zephyr ~/zephyrproject cd ~/zephyrproject west updatewest init克隆 Zephyr 主仓库并把工作区配置写进.west/configwest update负责同步——它按 west.yml 把其余十几个模块仓库拉下来并各自检出清单里锁定的版本。第一次 update 视网络情况要跑几分钟到十几分钟终端会逐个打印每个仓库的进度看到全部完成即可。完成后目录长这样zephyr/Zephyr 内核与驱动源码modules/HAL、中间件等第三方仓库.west/工作区配置文件。构建并烧录第一个固件west build 与 west flash走完这一步固件就落到板子上跑起来了。第一步是构建。west build本质是帮你串起 CMake Ninja-b指定目标板卡最后一个参数是应用源码目录cd ~/zephyrproject/zephyr west build -p always -b nrf52840dk_nrf52840 samples/basic/hello_world-p always表示强制清空重建构建目录专治改了配置不生效这类旧状态问题-d可以把构建目录放到别处。构建成功后build/zephyr/下会生成zephyr.elf和zephyr.bin终端日志会给出各段占用大小。构建完就烧录一条命令west flash --runner jlink板子有多个烧录接口时用--runner明确指定通道比如jlink、pyocd、openocd不指定则按板子默认配置推断。需要进调试环境时west debug直接拉起 GDB 会话并连上目标机更常见的做法是把build/zephyr/zephyr.elf交给 IDE 或命令行 GDB 自己调。高频操作速查查板卡、menuconfig 与默认板卡设置下面这些命令你会每天敲好几遍先记下来能省一半查文档的时间场景命令说明看工作区里有哪些仓库west list列出每个项目的路径与来源查支持的开发板west boards可加-r一并查看烧录方式图形化改配置west build -t menuconfig等同于 CMake 的 menuconfig设默认板卡west config build.board 板卡名之后构建可省掉-bwest list的输出形如省略来源地址仅示意格式$ west list acpica: modules/lib/acpica cmsis: modules/hal/cmsis zephyr: zephyr设一次默认板卡west config build.board nrf52840dk_nrf52840之后west build samples/basic/hello_world就不必再带-b了。另外-t后面能接的不止menuconfig例如west build -t run会构建并顺手烧录、运行。进阶用 west.yml 锁版本与自定义命令要复现某个发布版的构建环境、或团队共享同一套依赖版本时west.yml 里的revision字段就是锁定点。清单的defaults段可设默认远程每个projects条目的revision三选一分支名、标签、提交哈希projects: - name: acpica revision: 8d24867bc9c9d81c81eeac59391cda59333affd4 path: modules/lib/acpicawest update同步时会把每个仓库都检出到对应 revision所有人工作区完全一致改完字段再执行west update也可以只指定单模块如west update acpica即可切换版本。自定义命令走 Python 包扩展机制west 的 build、flash、debug 这些扩展命令都来自仓库内的scripts/west_commands/有自己的需求可照着那个目录的结构写一份再注册进工作区。.west/config则是工作区级配置的落点清单位置、自定义设置都写在这里。外部 CMake 工程想复用 Zephyr 时跑一次west zephyr-export它会导出 CMake 包信息让外部工程找到 Zephyr 的头文件与库。避坑指南三个高频问题与对策起步阶段的坑大多集中在下面三处每条都按症状 → 原因 → 命令来。构建报错、改了配置却不生效→ 多半是上次构建留下的旧缓存 → 清理后重来west build -c也可以直接删掉整个 build 目录再重新west build。west update 同步失败、子仓库状态异常→ 本地仓库卡在无法推进的中间态 → 强制重置回清单指定版本west update --reset注意它会丢弃子仓库里的本地改动动手前先 commit 或 stash。Python 依赖缺失、部分脚本报模块找不到→ 工作区的 venv 没装齐 Python 包 → 批量补装west packages pip --install写在最后一句话收束west 是 Zephyr 开发里拉仓库 → 构建 → 烧录的唯一入口init / update / build / flash四条命令熟练了整个工作流就通了。更多细节见仓库内 doc/develop/getting_started/ 目录。遇到别的坑欢迎留言补充大家一起把路蹚平。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进