)
zephyr-cn 带你从零搭好 Zephyr 开发环境Windows Docker【免费下载链接】zephyr-cnzephyr-cn is a collection of original work of SIG-Zephyr项目地址: https://gitcode.com/openeuler/zephyr-cn第一次搭 Zephyr 开发环境最容易卡在没有 Linux 工具链。跟着 zephyr-cn 走一遍Docker 把构建环境装进 Windows源码和 SDK 落地QEMU 里跑通第一个示例VSCode 和 West 接管日常开发。走完这条线你手里就有一条从开机到 philosophers 输出的完整可复现路径。 备齐三样物料把 Zephyr 工程与 SDK 摆上桌先说原因Zephyr 的构建链靠 west、CMake、Python 配合Windows 上没有现成工具链后面所有步骤都跑在 Linux 容器里所以源码和 SDK 需要从 Windows 这边带进去。需要准备的三份东西下载入口见 doc/source/develop/windows_docker.rst 的准备阶段sig_zephyr_v2.7.4.tar.gz基于 Zephyr LTS 2.7.4、按工程布局打包的源码包zephyr-sdk-0.13.1-linux-x86_64-setup.runSDK即 arm-zephyr-eabi-gcc 等交叉编译工具链的安装包Docker Desktop V4.18.0 和 Windows Terminal。解压后顶层会看到五个目录zephyr主仓库、modules第三方模块、.west工作区标记、tools、bootloader。你即将构建的就是下图这套结构zephyr-cn 仓库里的 Zephyr 架构图编译 philosophers 时你实际构建的就是这套结构中的内核与子系统。验证点三个文件就位、下载说明读了一遍剩下的只是搬运和装配。 三步把 Linux 构建环境搬进 Docker 容器用现成的 Zephyr Project 官方构建镜像zephyrprojectrtos/zephyr-build比装整台 Linux 虚拟机轻得多——镜像里已带 west、CMake、Python 工具链这套流程就是 Windows Zephyr Docker 环境搭建的主体。先改镜像存储位置再配国内镜像加速为什么要动这两处镜像约 12GB默认存 C 盘会很快被吃满默认源在国内访问也不稳定。在 Docker Desktop 的 Settings → Resources 里把 Disk image location 改到非 C 盘再在 Docker Engine 配置里加上国内加速地址{ registry-mirrors: [ https://registry.docker-cn.com, https://mirror.aliyuncs.com ] }保存后重启 Docker Desktop 生效。拉取 zephyr-build 官方镜像打开 Windows Terminal执行docker pull zephyrprojectrtos/zephyr-build:latest做对长什么样docker images列表里出现zephyrprojectrtos/zephyr-build latestSIZE 一栏约 12.1GBdocker pull zephyr-build 的终端截图各层下载完成并显示 digest确认镜像已就绪。创建挂载容器把 Windows 目录映射进 /workdir为什么要挂载源码和 SDK 要在 Windows 和容器之间来回传把D:/Workspace/SIG_Zephyr挂到容器的/workdir两边看到的是同一份文件docker run -it --name SIG_Zephyr -v /d/Workspace/SIG_Zephyr:/workdir zephyrprojectrtos/zephyr-build:latest做对长什么样提示符切换成容器内的userid:/workdir$ls能直接看到 D 盘里放的两个文件docker run 创建 SIG_Zephyr 容器并挂载 /d/Workspace/SIG_Zephyr 到 /workdir 后的终端确认已处于容器内。⚙️ 解压源码装 SDK用 west update 把依赖拉齐先把sig_zephyr_v2.7.4.tar.gz和 SDK 安装包放进D:/Workspace/SIG_Zephyr然后在容器里解压tar -xvzf sig_zephyr_v2.7.4.tar.gz做对长什么样ls -a多出.west、zephyr、modules、tools、bootloader工程布局完整。接着执行west update。它按zephyr仓库里的清单文件west.yml相当于项目购物清单把缺失的依赖仓库克隆到位、把已有的对齐版本这一步同时就是对工程布局完整性的快速体检west update做对长什么样命令正常退出清单里列出的项目仓库全部检出到指定版本。最后安装 SDK按 Zephyr 官方 Getting Started 的 Install a Toolchain 章节操作下载步骤可跳过因为安装包已经在你手里chmod x zephyr-sdk-0.13.1-linux-x86_64-setup.run ./zephyr-sdk-0.13.1-linux-x86_64-setup.run 编译 philosophers在 QEMU 里看第一个示例跑起来为什么要选它哲学家例程是验证工具链全通的最短路径目标板qemu_cortex_m3是纯软件仿真板不依赖任何硬件。这也正是 Zephyr 示例应用 QEMU 运行的标准路径cd zephyr west build -p auto -b qemu_cortex_m3 samples/philosophers-p auto按构建目录状态决定要不要强制干净构建-b指定目标板——Zephyr 里板子指 CPU 外设 设备树的组合。做对长什么样CMake 配置阶段打印版本、编译器与板级信息构建跑满 130/130最后输出 FLASH/SRAM 占用和生成的zephyr/zephyr.elfwest build 编译过程截图CMake 配置信息与 130/130 构建完成验证工具链、板级配置全部就位。运行west build -t run做对长什么样终端持续刷出五位哲学家的 THINKING / EATING 状态开头能看到*** Booting Zephyr OS build v2.7.4 ***。按CtrlC中止例程或CtrlA再按x退出 QEMU。west build -t run 后的终端输出哲学家状态持续刷新验证内核线程与互斥锁按预期工作。✨ 把日常写码搬进 VSCode插件、工作区与 IntelliSenseZephyr 社区的主流开发方式是编辑器改码 命令行编译调试。VSCode 插件体系把命令行这层皮包起来构建核心还是 west CMake但浏览、构建、调试都图形化了。Zephyr VSCode 插件与 IntelliSense 配置的重点就是这一节的四件事。装齐五个 Zephyr 插件C/CIntelliSense 与调试、CMake、kconfigKconfig 配置支持Kconfig 是 Zephyr 的编译期选项系统、nRF DeviceTree设备树支持、Arm AssemblyARM 汇编支持另外可以加个 Trailing Spaces 高亮行尾多余空格。用 multi-root 工作区布局打开整个工程用 multi-root workspaceVSCode 把多个目录当同一个工程打开的能力组织工程建议布局zephyrOS 代码、modules按需加入的模块、app自定义应用用自带例程可省、build单独存放避免构建产物污染 zephyr 的 git 仓库。仓库里有一份现成参考vscode/zephyr.code-workspace关键是 workspace 层级把C_Cpp.default.compileCommands指向构建目录的编译数据库。生成 compile_commands.json让 IntelliSense 看懂 Zephyr为什么需要它Zephyr 代码规模大C/C IntelliSense 的默认配置覆盖不了必须喂它编译数据库。CMake 每次配置后都会生成compile_commands.json包含本次构建涉及的文件和全部编译选项。做法在 build 目录执行cmake -DBOARDqemu_cortex_m3 samples/philosophers或走下面的Zephyr 配置任务先生成它再在 workspace 设置里把C_Cpp.default.compileCommands指过去。注意它只覆盖本次构建用到的部分——构建没开网络功能时subsys/net下的代码不会被索引属正常现象。用 tasks.json 与 launch.json 接上构建和调试构建相关任务build、menuconfig、clean 等写进build/.vscode/tasks.json之后在 VSCode 的 Run Task 菜单里选对应 Zephyr 任务即可调试通过build/.vscode/launch.json的 launch 机制接上 gdb断点、单步、看变量全部图形化。两份配置的参考实现在 doc/source/develop/vscode.rst。用 Docker 插件直接 Attach 进容器写码装 Docker 扩展在 Containers 视图里找到运行中的SIG_Zephyr容器点 Attach to Container就得到一个容器内的完整开发会话不用再切终端敲命令。 用 West 管好后续迭代四个概念加一组命令记住四个概念West 就不难详见 doc/source/develop/west/basic.rst顶级目录工作区根目录比如我们解压出的那个顶层文件夹.west目录标记顶级目录的位置west 从当前目录向上找.west其父目录即顶级目录清单仓库包含west.yml的 Git 仓库对 Zephyr 来说就是zephyr目录项目由 west 管理的 Git 仓库在清单文件里定义modules下那些仓库都是west build等命令则是 zephyr 仓库借扩展命令机制提供的。日常命令速查命令作用west init -m https://gitcode.com/openeuler/zephyr-cn zephyrproject从零初始化工作区tar 包之外的替代路径建顶级目录与.west、克隆清单仓库west update按清单克隆缺失项目、更新已有项目west build -b board 应用路径为指定板级构建应用west build -t run运行构建产物qemu 板会自动拉起 QEMUwest build -t debug进入调试流程出错先翻这一页新手高频坑速查退出容器后不知道怎么回去exit退出docker start SIG_Zephyr启动docker attach SIG_Zephyr进入。提示west: command not found环境没加载在顶级目录先执行source zephyr/zephyr-env.sh。VSCode 里看不到容器中的文件装 Docker 扩展并 Attach to Container别直接打开本地目录。QEMU 一直刷停不下来CtrlC中止例程CtrlA, x退出 QEMU。C 盘告警或拉镜像慢回头检查镜像存储位置与国内加速源两项配置。接下来你可以把 samples 里的例程换成自己的应用用west build -t debug进 GDB 打上第一个断点然后顺着开发者参考里的内核章节互斥锁、信号量、线程通信把环境吃透再开始写业务逻辑。doc/source/develop/index.rst开发者参考主页内核、子系统、驱动doc/source/develop/vscode.rstVSCode 开发详细配置doc/source/develop/west/basic.rstWest 基本概念vscode/zephyr.code-workspace参考工作区配置【免费下载链接】zephyr-cnzephyr-cn is a collection of original work of SIG-Zephyr项目地址: https://gitcode.com/openeuler/zephyr-cn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考