ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Zephyr 离线开发环境搭建完整指南:断网编译到烧录的 4 个阶段

2026/9/10 8:41:25 拓冰建站 浏览量
Zephyr 离线开发环境搭建完整指南:断网编译到烧录的 4 个阶段 Zephyr 离线开发环境搭建完整指南断网编译到烧录的 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/zephyr出差高铁上、产线隔离设备、没有外网的内网机房在线拉包的 Zephyr 工作流在这些场景会直接停摆。这篇 Zephyr RTOS 离线环境搭建指南带你从零把源码、west 模块、工具链、Python 依赖四类资源全部搬到本地最终做到断网也能完整编译并烧录。方案全貌在线与离线的做法对照先把整条链路摊开看一遍。离线化的本质就是把每个依赖网络的环节换成提前备好 手动指定。环节在线默认做法离线替代做法涉及的仓库文件获取源码west initwest update联网拉取提前克隆主仓库断网时用本地副本克隆west.yml拉取依赖模块west update按 manifest 同步 80 模块手工克隆模块并checkout指定 revisionwest.yml安装工具链在线安装并校验 SDK解压预存 SDK 包并指向安装目录SDK_VERSION装 Python 依赖pip install在线拉包用本地 wheel 目录离线安装doc/requirements.txt构建应用west build自动注入ZEPHYR_MODULES直接 CMake手动传ZEPHYR_MODULESsamples/hello_world/烧录调试west flash/west debug手动调用 J-Link 等主机工具doc/develop/flash_debug/host-tools.rst记住一句话只要把模块路径和工具链位置这两样手动喂给构建系统west 就只是可有可无的便利层。动手前的资源盘点先留足磁盘源码、工具链加缓存预留10GB 以上比较稳妥。需要一次备好、之后断网反复用的资源分四类Zephyr 源码—— 主仓库。本仓库为 4.4 开发快照见 VERSION选 SDK 时以版本号为准。west 依赖模块—— west.yml 里列了 82 个projects每项有name/path/revision需逐一克隆并对齐提交。Zephyr SDK 工具链—— 离线安装包版本要和 SDK_VERSION 对得上当前为1.0.1。Python 依赖—— 依赖清单在 doc/requirements.txt用本地 wheel 目录离线安装。⚠️ 建议把上述四类资源统一放到一个~/zephyr_offline/目录之后无论是 U 盘拷贝还是 rsync 到隔离机都是一个目录的事。搭建实操四个阶段阶段一源码与 west 模块落地目的把主仓库和它依赖的模块都固定到本地某个目录断网后也能被构建系统找到。mkdir -p ~/zephyrproject cd ~/zephyrproject # 主仓库有网时先克隆断网时改用本地副本 git clone https://gitcode.com/GitHub_Trending/ze/zephyr zephyr # 提取模块清单name / path / revision 三字段 grep -E ^ - (name|path|revision): zephyr/west.yml # 按 west.yml 的 path 逐个克隆模块并切到对应 revision git clone 本地模块副本 modules/hal_nordic git -C modules/hal_nordic checkout revision成功标志modules/下按path出现了各模块目录且git -C modules/hal_nordic rev-parse HEAD的输出与 west.yml 里的revision完全一致。阶段二工具链离线就位目的让构建系统找到编译器而不是在线安装。mkdir -p ~/zephyr_sdk tar xf ~/zephyr_offline/zephyr-sdk-*.tar.xz -C ~/zephyr_sdk source ~/zephyr_sdk/setup.sh # 运行 SDK 自带的安装脚本 export ZEPHYR_TOOLCHAIN_VARIANTzephyr export ZEPHYR_SDK_INSTALL_DIR$HOME/zephyr_sdk成功标志which zephyr-clang能解析出路径zephyr-clang --version打印版本号并且该版本与 SDK_VERSION 匹配。阶段三Python 依赖离线装目的让 west / 文档脚本需要的 Python 包在断网环境下就绪。python3 -m venv ~/zephyrproject/.venv source ~/zephyrproject/.venv/bin/activate # 一次性有网时准备本地 wheel 目录 pip download -r doc/requirements.txt -d ~/zephyr_offline/pip_pkgs # 断网时走本地 wheel 离线安装 pip install --no-index --find-links~/zephyr_offline/pip_pkgs -r doc/requirements.txt成功标志pip check报无冲突若安装了 westpython -c import west正常返回。阶段四无 west 的 CMake 构建配置目的不依赖 west 自动注入手动把模块路径喂给 CMake。以 samples/hello_world/ 为例目标板选qemu_x86。cd zephyr/samples/hello_world export TOPDIR$HOME/zephyrproject # 模块路径写绝对路径该目标若无需外部模块可直接省略 -DZEPHYR_MODULES cmake -B build -S . -DBOARDqemu_x86 \ -DZEPHYR_MODULES$TOPDIR/modules/hal_nordic;$TOPDIR/modules/lib/hal_nxp cmake --build build成功标志build/zephyr/zephyr.elf与build/zephyr/zephyr.bin都生成全程没有 module ... not found 之类报错。更多细节见 doc/develop/west/without-west.rst。验收闭环编译 烧录一次跑通先验证能不能编译、能不能运行再验证能不能落到芯片两件事合并成一轮验收。在 QEMU 里跑刚才的zephyr.elfqemu-system-i386 -nographic -kernel build/zephyr/zephyr.elf # 期望打印Hello World! x86再用 J-Link 手动烧到 nrf52840dk替代west flashJLinkExe -device nrf52840_xxaa -if swd -speed 4000 -autoconnect 1 # 进入 J-Link 交互提示符后 loadbin build/zephyr/zephyr.bin 0x0 r q可勾选的验收清单build/zephyr/zephyr.elf与build/zephyr/zephyr.bin均已生成QEMU 下打印Hello World! x86J-Link 连接 nrf52840dk 并loadbin成功、复位后芯片运行zephyr-clang --version与pip check均正常断开网络后重复一次完整构建仍然成功出错排查先查这张表现象可能原因处理报 module version mismatch / 模块找不到手工克隆的模块 revision 与 manifest 不一致对照 west.yml 的revisiongit checkout到对应提交SDK 报架构或版本不兼容所用 SDK 与源码要求不符以 SDK_VERSION当前 1.0.1为准换匹配的 SDK 包pip install报哈希或依赖冲突离线 wheel 与锁文件版本不齐pip check定位冲突包pip install --force-reinstall装指定版本CMake 提示模块缺失 / west 未找到忘了传ZEPHYR_MODULES或路径写成相对路径失效改用绝对路径重传目标确无模块依赖时直接省略QEMU 无任何输出用错机型或-kernel路径不对用qemu-system-i386 -nographic -kernel build/zephyr/zephyr.elf⚠️ 排查顺序建议固定为先看模块 revision → 再看 SDK 版本 → 最后才怀疑网络。前两者占了离线构建报错的大头。收尾与延伸回到主线你做的事其实只有三件——把模块和工具链备到本地、用环境变量指好位置、把ZEPHYR_MODULES手动喂给 CMakewest 便从必需品退化成可选便利。跑通验收清单后这套环境可以整体拷走在任何断网机器上复用。想继续往下挖三个方向都指回仓库里已有的文档深入模块与ZEPHYR_MODULES的机制doc/develop/west/without-west.rst读懂构建如何组织源码与链接CMakeLists.txt 与 Kconfig把烧录/调试做规范doc/develop/flash_debug/host-tools.rst以上步骤在 Ubuntu 22.04 与 Windows 10经 WSL下跑通迁移到其他发行版时留意路径分隔符与工具链位宽差异。【免费下载链接】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),仅供参考