ARTICLE DETAIL

资讯详情

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

Zephyr RTOS 离线开发环境完整流程怎么做:从源码盘点到编译烧录的实用指南

Zephyr RTOS 离线开发环境完整流程怎么做:从源码盘点到编译烧录的实用指南 Zephyr RTOS 离线开发环境完整流程怎么做从源码盘点到编译烧录的实用指南【免费下载链接】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上个月在客户厂里内网只放行了自家镜像。一条west update卡了十分钟超时的进度条SDK 安装程序也停在下载页整个项目只能干等网络恢复。之后我搭了一套 Zephyr 的离线开发环境——Zephyr 是一款面向多硬件架构的可扩展开源 RTOS这条流程的核心就是把平时自动从网络拉取的三样东西主源码、依赖模块、工具链提前落到本地磁盘断网后依然能走完编译和烧录。断网前的准备盘点三类资源包从 west.yml 提取模块清单先要搞清楚除了 Zephyr 主仓库编译还需要哪些仓库。答案就写在仓库根目录的 west.yml 里——west管理源码模块的命令行工具按projects段逐条列出模块的name、path和revision。趁还联网把清单抽出来grep -E ^ - name:| path:| revision: west.yml成功标志输出里能依次看到模块名、落盘路径、提交哈希把它复制到自己的备忘里断网后逐个对照。列表有四十多条各厂商 HAL、mbedtls、picolibc 之类但不是都要下。只下目标板例程真正引用到的即可比如做 nRF52840 方向的板子至少需要 hal_nordic。备好 SDK 与 Python 依赖包工具链方面先看仓库根目录SDK_VERSION文件里的版本号当前这份源码对应 1.0.1联网时从官网下载对应的 linux-x86_64 压缩包存到~/zephyr_offline/备用。Python 依赖方面清单在 doc/requirements.txt。注意文件头部注明它是按 Python 3.12 编译生成的换版本下载可能导致可选包对不上pip download -r doc/requirements.txt -d ~/zephyr_offline/pip_pkgs跑完后pip_pkgs目录里出现一整批 .whl 文件即算成功。顺手确定一下常做的目标板。仓库boards/目录下有完整板卡清单板子定了HAL 模块集合和烧录工具也就定了后面下载不用盲目。手动放置模块替代 west 的活目录结构与版本对齐断网后west update用不了仓库要自己摆。先建工作目录从本地镜像克隆主仓库mkdir -p ~/zephyrproject cd ~/zephyrproject git clone https://gitcode.com/GitHub_Trending/ze/zephyr再照path字段把各模块放进对应子目录以 west.yml 中的 hal_nordic 为例git clone /path/to/local/hal_nordic.git modules/hal/nordic cd modules/hal/nordic git checkout 4387c79cebd31927fb1ea7d64bee11728ae8041f成功标志目录内git log -1显示的提交与 west.yml 里的revision完全一致。漏掉 checkout 停在 master 头部编译时多半会撞出版本不匹配的错。还有一个细节如果这台机器装过 west构建系统会找到它并尝试自动解析模块官方建议先pip3 uninstall west卸掉。无 west 构建的完整说明在 doc/develop/west/without-west.rst。工具链环境变量一次配好SDK 解压到本地目录运行包内自带的安装脚本tar xf ~/zephyr_offline/zephyr-sdk-*.tar.xz -C ~/zephyr_sdk ~/zephyr_sdk/zephyr-sdk-1.0.1-linux-x86_64/setup.sh解压出的目录名以实际版本号为准上面按 1.0.1 举例。脚本跑完会在 PATH 里加入工具链路径看到编译器前缀出现在输出中即为成功具体输出以官方文档为准。然后把工具链位置告诉构建系统追加到~/.bashrc后source一下export ZEPHYR_TOOLCHAIN_VARIANTzephyr export ZEPHYR_SDK_INSTALL_DIR$HOME/zephyr_sdk/zephyr-sdk-1.0.1-linux-x86_64注意ZEPHYR_SDK_INSTALL_DIR要指向包含setup.sh的那一层目录如果实际解压名不同改成真实路径即可。之后每个新开的终端都直接可用。断网后的第一次编译QEMU 上跑 hello_worldQEMU 首跑最省事的验证是选虚拟板——不用真硬件。进主仓库用 CMake 直接构建 samples/hello_world/ 示例目标选 qemu_x86 虚拟板cd ~/zephyrproject/zephyr cmake -B build -S samples/hello_world -DBOARDqemu_x86 ninja -C build成功标志生成build/zephyr/zephyr.elf。这个示例不引用外部模块可以先不加 ZEPHYR_MODULES若以后构建别的例程提示缺某个模块把它的本地路径按分号拼进-DZEPHYR_MODULES路径1;路径2即可。再交给 QEMU 执行看串口输出qemu-system-x86_64 -nographic -kernel build/zephyr/zephyr.elf看到*** Booting Zephyr OS和 Hello World 字样说明离线工具链全链路通了。QEMU 的完整启动参数以 qemu 板文档为准。烧进板子以及环境的日常维护J-Link 手动烧录要上真板时west flash也用不了它依赖 west得直接调宿主机烧录工具支持的工具清单见 doc/develop/flash_debug/host-tools.rst。以 nrf52840dk 加 J-Link 为例JLinkExe -device nrf52840_xxaa -if swd -speed 4000 -autoconnect 1 # 进入 J-Link 提示符后依次输入 # loadbin build/zephyr/zephyr.bin 0x0 # r # q烧录地址0x0的前提是板头没有被外部引导程序占用若你的板有 bootloader要按板级文档改成对应偏移地址。版本漂移的维护节奏离线环境不是搭完就不管我一般按三个习惯维护。每月联网时重新对照一次 west.yml检查每个本地仓库的提交哈希对不上就 checkout 到对应 revision。升级 Zephyr 源码时先看根目录SDK_VERSION是否变化变了就补下载新 SDK保持工具链与源码同步。pip_pkgs目录按下载当时的 requirements.txt 版本归档出冲突时能倒查是哪个清单版本拉的包。如果今天就打算动手趁现在还有网先用那条 grep 命令抽出模块清单把 SDK 压缩包和依赖包目录建好剩下的摆仓库、配变量、跑通 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),仅供参考
返回列表