手把手Zephyr开发环境:五步跑通第一个demo 手把手Zephyr开发环境五步跑通第一个demo【免费下载链接】zephyr-cnzephyr-cn is a collection of original work of SIG-Zephyr项目地址: https://gitcode.com/openeuler/zephyr-cn在 Windows 上跑 Zephyr常常卡在交叉工具链和 Linux 依赖上。我们用 zephyr-cn 提供的 Docker 路线在 Windows 上配好 Zephyr 开发环境五步走完第一个示例就能在容器里编译并运行起来。备齐 4 份文件搭 Zephyr 开发环境前要先下载什么为什么用 Docker一句话它是一个打包好、随手可用的Linux 盒子。盒子里已经装好编译器和构建工具Windows 上不用再装 Linux也不用自己配工具链。你最后拿到的是一个容器代码、编译、运行都在容器里完成。开工前先下载 4 份文件Zephyr 项目文件sig_zephyr_v2.7.4.tar.gz基于 LTS 2.7.4 版本按工程布局打包解压即可用。zephyr sdkzephyr-sdk-0.13.1-linux-x86_64-setup.run提供编译器和 gdb没有它编不了代码。Docker DesktopV4.18.0Windows 上跑容器的入口。Windows Terminal输入命令用的终端。前两份稍后要放进容器后两份装在 Windows 本机。上图是 Zephyr 的整体架构稍后搭好的容器就是这些组件运行的底座。下载来源与文件版本的详细说明见 Windows 下 Docker 开发环境搭建文档。Zephyr Docker 配置改两处拉镜像快很多先弄清两个词镜像是模板容器是跑起来的实例。zephyr-build 这个镜像里预装了编译器和构建工具我们只要从它启动一个实例。Docker Desktop 默认把镜像存在 C 盘镜像源又在国外拉取前先改两处。修改 Docker 镜像存储位置打开 Docker Desktop 设置页进入 Resources 选项卡点 Advanced把 Disk image location 改到空间充足的盘符。这一步是防止 C 盘被塞满。配置国内镜像源在 Docker 的配置文件daemon.json中加入以下内容{ registry-mirrors: [ https://registry.docker-cn.com, https://mirror.aliyuncs.com ] }这两个镜像源用来加速拉取保存后重启 Docker Desktop 生效。拉取 zephyr-build 镜像打开 Windows Terminal用这条命令从镜像仓库拉取 Zephyr 官方构建镜像体积超过 12GB耗时看网速docker pull zephyrprojectrtos/zephyr-build:latest再用这条命令确认镜像已经下载到本地docker images列表里能看到 zephyrprojectrtos/zephyr-build 一行说明拉取成功。Zephyr Docker 配置收尾创建容器并挂载本地目录这一步是 Docker 容器挂载的关键。完成后本地文件夹和容器共享同一份文件Windows 这边改容器那边读。一条命令创建容器这条命令创建名为 SIG_Zephyr 的容器并把本地目录 D:\Workspace\SIG_Zephyr 映射到容器内的 /workdir命令执行完终端直接落在容器里docker run -it --name SIG_Zephyr -v /d/Workspace/SIG_Zephyr:/workdir zephyrprojectrtos/zephyr-build:latest挂载的意思两个位置指向同一份存储。你在 Windows 侧编辑的文件容器里直接能读到不用来回拷贝。放项目文件把下载的两份文件放进 D:\Workspace\SIG_Zephyr容器里的 /workdir 就能看到它们。用这条命令解压项目tar -xvzf sig_zephyr_v2.7.4.tar.gz解压后会多出 .west、zephyr、modules 等目录这就是完整的 Zephyr 工程布局。再执行 west update 校验工程是否完整west updatewest 是什么它是 Zephyr 的项目管理工具west update 会读取清单文件 west.yml把清单里列出的子项目补齐到工作区。工作区结构和清单文件的更多概念见 West 基本概念与工作区说明。安装 zephyr sdk给 sdk 文件加执行权限然后运行安装chmod x zephyr-sdk-0.13.1-linux-x86_64-setup.run ./zephyr-sdk-0.13.1-linux-x86_64-setup.run按提示走完 zephyr sdk 安装即可安装路径用默认值不用改容器里的编译器就此就位。从 west build 到 west run你的第一个哲学家环境齐了跑第一个示例。进入 zephyr 目录编译 philosophers 示例cd zephyr west build -p auto -b qemu_cortex_m3 samples/philosophers参数不难-p auto 自动判断是否需要清理后重新构建-b qemu_cortex_m3 指定目标板是 QEMU 里的虚拟板不需要真实硬件samples/philosophers 是示例路径。编译进度会打在终端里成功后产物放在 build 目录。这个示例模拟经典的哲学家吃饭并发场景输出内容本身就是内核调度的一次演示。接着启动 QEMU 仿真运行west build -t run这条命令复用刚才的构建目录不用重新编译。终端字符开始不停滚动说明哲学家们开动了按 CtrlC 可以停止。打开 VSCodeZephyr 插件与 compile_commands.json 配置demo 跑通只是开始。写代码时你还会想要代码跳转和编译反馈VSCode 配合这套环境分三步接上。安装 VSCode Zephyr 插件组在 VSCode 中安装 5 个插件C/C代码跳转与 IntelliSenseCMakeCMake 语言支持kconfigKconfig 配置文件支持nRF DeviceTreeZephyr 设备树支持Arm AssemblyARM 汇编支持multi-root 工作区布局把下面四个目录作为一个工作区打开zephyr_workspace ├── zephyr # Zephyr 源码 ├── modules # Zephyr 模块 ├── app # 你的应用 └── build # 构建目录build 目录建议单独放避免构建产物污染 zephyr 的 git 仓库。配置 compile_commands.jsonZephyr 代码量大IntelliSense 默认配置覆盖不住。CMake 配置一次之后构建目录会生成 compile_commands.json记录每个文件的编译选项。先生成它cmake -DBOARDqemu_cortex_m3 你的应用路径再在工作区级设置里把 IntelliSense 指向它{ C_Cpp.default.compileCommands: ${workspaceFolder}/build/compile_commands.json }这一行配好zephyr 目录下的代码跳转就准了。同理把 west build、menuconfig 等命令绑定成 VSCode 任务把 gdb 配进调试配置图形界面里就能完成编译和调试。工作区可以直接参考 zephyr code-workspace 工作区配置插件与任务细节见 VSCode 进行 Zephyr 应用开发文档。踩坑速查常见报错与对策⚠️ 卡住时对照下表查现象原因对策west: command not foundwest 不在 PATH 中在容器里 cd 到 zephyr 目录后source zephyr/zephyr-env.shdocker pull 极慢或超时国内镜像源没配回上节补上 registry-mirrors 并重启 DockerC 盘空间被占满镜像存储位置没改修改 Disk image location 到其他盘符容器里改的文件 Windows 侧看不到挂载参数 -v 路径写错核对本地目录与 /workdir 的映射容器 exit 后以为没了exit 只退出会话容器还在docker start SIG_Zephyr再docker attach SIG_Zephyr环境到这里就算真正落袋了。换一块目标板跑一个自己的应用接下来就是熟悉 Zephyr 内核本身的旅途。【免费下载链接】zephyr-cnzephyr-cn is a collection of original work of SIG-Zephyr项目地址: https://gitcode.com/openeuler/zephyr-cn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考