ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

断网编译 Zephyr:手动落盘子模块与离线工具链

断网编译 Zephyr:手动落盘子模块与离线工具链 断网编译 Zephyr手动落盘子模块与离线工具链【免费下载链接】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你在实验室给 nrf52840dk 编译 Zephyr 工程网断了west update卡住、SDK 装到一半。不用干等把资源手动落到本地就能继续编译。思路一句话把 west 的在线拉取拆成手动 clone路径用 CMake 参数传。前置资源硬件、软件、文件三类清单合在一张表里动手前对照勾一遍。资源版本或规格获取方式Zephyr 主仓与 SDK_VERSION 对齐的 taggit clone https://gitcode.com/GitHub_Trending/ze/zephyr子模块仓库revision 以 west.yml 为准按 west.yml 中url字段逐个克隆Zephyr SDK1.0.1linux-x86_64 tar.xz官网下载后拷入离线介质Python / CMake / NinjaPython ≥ 3.8CMake ≥ 3.21系统包管理器安装Python 依赖包清单见 scripts/requirements-base.txt在线机器pip download预下载开发板 调试器任意受支持板卡板卡列表见 boards/两点注意主仓版本和 SDK 版本要对得上架构编译才不出岔子pip download建议带--only-binary:all:和平台参数避免离线机器装不上源码包。表里的东西都齐了下面分四个阶段把它们落位。动手操作落盘主仓与子模块这一步把在线拉取换成从离线包克隆。先在联网机器上把所有仓库克隆进一个目录整体拷进 U 盘。# 在线机器主仓克隆进打包目录 /pkg git clone https://gitcode.com/GitHub_Trending/ze/zephyr /pkg/zephyr # 对照 west.yml 的 url 字段其余模块逐个克隆目录名与模块名保持一致 git clone west.yml 中的 url /pkg/模块名# 离线机器从本地包克隆全程不碰网络 mkdir -p ~/zephyrproject git clone /pkg/zephyr ~/zephyrproject/zephyr # 子模块按 west.yml 的 path 字段放置路径相对 workspace 根目录 git clone /pkg/hal_nordic ~/zephyrproject/modules/hal/nordic看到Receiving objects: 100%且modules/下目录与 west.yml 的path一致这步过了。解压 SDK 写入环境变量SDK 官方安装脚本会做在线校验离线机器上直接手动解压再写环境变量。# 解压到固定目录不跑 setup.sh mkdir -p ~/zephyr_sdk tar xf /pkg/zephyr-sdk-1.0.1_linux-x86_64.tar.xz -C ~/zephyr_sdk # 这两个变量决定 CMake 选哪套工具链写进 .bashrc 永久生效 echo export ZEPHYR_TOOLCHAIN_VARIANTzephyr ~/.bashrc echo export ZEPHYR_SDK_INSTALL_DIR$HOME/zephyr_sdk ~/.bashrc source ~/.bashrcecho $ZEPHYR_SDK_INSTALL_DIR有输出、目录下能看到zephyr-sdk-1.0.1/sysroots说明工具链就位。⚠️ Windows 路径用反斜杠export换成$env:ZEPHYR_SDK_INSTALL_DIRC:\zephyr_sdk。离线安装 Python 依赖构建脚本自己依赖一批 Python 包DTS 生成、镜像体积报告都用得上离线机器装不了就提前下好轮子。# 在线机器把构建基础依赖下载齐 pip download -r scripts/requirements-base.txt -d /pkg/pip_pkgs # 离线机器venv 隔离--no-index 禁止访问网络 python3 -m venv ~/zephyrproject/.venv ~/zephyrproject/.venv/bin/pip install --no-index \ --find-links/pkg/pip_pkgs \ -r scripts/requirements-base.txtvenv 里pip check无输出、pip list能看到pyelftools和PyYAML这步过了。触发首次构建模块路径不再由 west 注入手动用ZEPHYR_MODULES传给 CMake多个路径用分号分隔。cd ~/zephyrproject/zephyr # -S 指样例目录-DBOARD 指定目标板模块路径逐个列出 cmake -B build -S samples/hello_world \ -DBOARDnrf52840dk/nrf52840 \ -DZEPHYR_MODULES$HOME/zephyrproject/modules/hal/nordic;$HOME/zephyrproject/modules/cmsis # 实际编译交给 ninja ninja -C build配置阶段出现Configuring done和Generating done两行日志说明模块路径都找齐了。四个阶段走完后跑一次最小构建确认整条链路。跑通确认最小验证就是上面 hello_world 这条链路不需要任何联网动作。构建完成时终端最后几行[178/178] Linking C executable zephyr/zephyr.elf Memory region Used Size Region Size %age Used FLASH: 22 KB 192 KB 11.44% RAM: 5 KB 16 KB 33.45%看到Linking C executable zephyr/zephyr.elf且没有红色报错离线环境就算通了。接上开发板用 J-Link 把产物烧进去# 启动 J-Link 交互模式swd 接口、4MHz JLinkExe -device nRF52840_xxaa -if swd -speed 4000 -autoconnect 1 # 进入交互后依次执行加载镜像到 0x0、复位、退出 # loadbin build/zephyr/zephyr.bin 0x0 # r # q串口按 115200 8N1 打开看到*** Booting Zephyr OS开头的一行和Hello World! (nrf52840dk/nrf52840)整条链路闭环。离线环境最坑的几处基本都能用下面这张表对号入座。排障速查症状原因一条命令修复CMake 阶段报 west 相关错误机器上装了 westZephyr 会自动接管pip3 uninstall west提示找不到模块或缺链接符号ZEPHYR_MODULES漏了路径cmake -B build -DZEPHYR_MODULES路径1;路径2提示找不到 SDK 或编译器环境变量没在当前 shell 生效export ZEPHYR_TOOLCHAIN_VARIANTzephyr export ZEPHYR_SDK_INSTALL_DIR$HOME/zephyr_sdk模块版本不匹配子模块没停在 west.yml 的 revision 上cd modules/名字 git checkout revision延伸与下一步doc/develop/west/without-west.rst不用 west 构建的官方口径包含没有west flash时怎么手动烧录。doc/develop/flash_debug/host-tools.rstJ-Link、OpenOCD、Black Magic Probe 等主机工具的手动调用参数。samples/hello_world/最小样例工程换板子验收离线环境时直接复用。【免费下载链接】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),仅供参考
返回列表