使用 VS Code 开发 Zephyr

本页依据 文档基线与后续更新 中记录的 Zephyr main 快照更新。

VS Code 可作为编辑、代码导航和调试界面。先按 搭建开发环境并运行第一个应用 或 Windows 原生开发环境 建立可用的命令行环境,再配置编辑器。 官方教程使用 C/C++ Extension Pack,其他 Kconfig、Devicetree 等扩展可按需求选用。

工作区与编译数据库

打开 west 工作区顶层目录,例如 ~/zephyrproject。 在集成终端激活对应 Python 虚拟环境,再构建目标:

west build -p always -b qemu_cortex_m3 -d build zephyr/samples/hello_world -- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

这里显式指定 build 为工作区顶层的输出目录。 在 VS Code 设置中把 C_Cpp.default.compileCommands 指向 ${workspaceFolder}/build/compile_commands.json。 不要用一套通用 includePath 手工模拟 Zephyr 为当前目标生成的全部编译选项。

编译数据库只包含本次构建涉及的源文件。切换板卡、配置或应用后应重新生成。 如果使用 clangd,按该扩展设置同一个编译数据库,避免同时让多个语言服务重复诊断。

仓库中的工作区模板

仓库提供 vscode/zephyr.code-workspace。将它复制到 west 工作区顶层后打开, 模板中的 . 才会指向工作区,而不是本中文资料仓库。 模板默认构建 QEMU Hello World,并设置编译数据库路径。

其中 Build、Run、menuconfig 任务使用 west。运行任务前,确保启动 VS Code 的环境或 任务终端能访问已安装依赖的虚拟环境。VS Code 任务不会自动继承另一个终端手动激活的状态。 必要时从激活了环境的终端启动 code zephyr.code-workspace。

任务与构建目录

应用构建可以配置为 shell/process 任务;在命令行先确认同一命令正确,再加入任务。 板卡、应用路径和构建目录应保持一致,不能让 menuconfig 修改另一个目标的配置。 Windows 使用同一套原生主机工具,WSL/容器使用各自的 Linux 工具和构建目录。

调试

对真实硬件,先按开发板文档安装并验证调试探针、runner、服务器与 GDB:

west debug -d <build-directory>
west debugserver -d <build-directory>

替换构建目录;这两个命令分别用于直接调试和启动调试服务器,应按所需方式选择。 随后可在 VS Code 配置对应调试扩展的 launch.json,连接同一个服务器, 使用当前构建的 ELF 和匹配架构的 GDB。

launch.json 不存在适用于所有开发板、探针和 runner 的统一值。 旧教程指向仓库中并不存在的 tasks/launch 文件的链接已移除, 当前模板提供可用的构建任务,硬件调试按所用板卡添加。

上游依据