本文只覆盖 编辑 + 自动补全 + 函数跳转。编译 / 烧录 / 断点调试的完整硬件链路见
Windows 下 openvela 的编译、烧录与调试;任务入口已在
.vscode/tasks.json / launch.json 预留为 scaffold。
正确架构(必须遵守)
| |
| 职责 | 跑在哪 | 为什么 |
|---|---|---|
| 源码编辑、补全、跳转 | WSL | NuttX 大量 Linux 绝对路径符号链接;Windows 本地 C/C++ 扩展会跟丢,并混用 Windows newlib 与 NuttX libc |
| 固件编译 | WSL | openvela 官方工具链与 build.sh 是 Linux 路径 |
| QSPI 烧录 | Windows | STM32H750 超 128 KiB 片内 Flash 时,用 CubeProgrammer External Loader 写外部 QSPI;OpenOCD 不负责下载 |
| 断点调试 | Windows OpenOCD | ST-LINK 由 Windows 访问;GDB 只 attach 符号,不再 load flash |
不要把下面的 UNC 路径当普通 Windows 文件夹长期写代码:
| |
一次性准备
Windows 侧
- 安装 WSL(本仓默认发行版名
Debian,可用环境变量OPENVELA_WSL_DISTRO覆盖)。 - 安装 VS Code,并启用 “Add to PATH”。
- 安装扩展:
ms-vscode-remote.remote-wsl- (进入 WSL 窗口后再装)
ms-vscode.cpptools - (后续调试再装)
marus25.cortex-debug
- openvela 整树放在 WSL 文件系统里,例如:
/home/<user>/openvela/,本仓是其子目录contest2026_004_TeamFalcons/。
打开正确窗口
任选其一:
| |
或在已经误开的 UNC 窗口里:Ctrl+Shift+P → Tasks: Run Task →
| |
左下角必须显示 WSL: Debian(或你的发行版名)。
生成 IntelliSense 头文件
NuttX 的 include/arch 符号链接和 include/nuttx/config.h 在 configure 之后才存在。
在 Remote - WSL 窗口执行默认构建任务(Ctrl+Shift+B):
| |
等价命令:
| |
然后:
- 扩展面板确认 C/C++ 已安装到 WSL
C/C++: Reset IntelliSense DatabaseDeveloper: Reload Window
验证补全与跳转
打开 app/hello_app/hello_app_main.c:
- 把光标放在
printf上,按F12(Go to Definition)应进入 NuttX/stdio相关声明。 - 输入
prin应出现补全。 - 状态栏 C/C++ 配置名应为
openvela STM32H750 (WSL)。
若红色波浪很多且无法跳转,按顺序检查:
- 是否 Remote - WSL(不是 UNC / 本地 Windows 文件夹)
- 是否已跑
prepare_wsl_intellisense.sh,且存在:../nuttx/include/nuttx/config.h../nuttx/include/arch→../nuttx/arch/arm/include
../prebuilts/gcc/linux-x86_64/arm-none-eabi/bin/arm-none-eabi-gcc是否可执行- 是否 Reset 过 IntelliSense Database
与后续编译 / 烧录的衔接
当前默认 Ctrl+Shift+B 只准备 IntelliSense,不烧板。
已预留的 scaffold 任务(脚本在、产品 app 选择后续再对齐):
| Task | 作用 |
|---|---|
openvela: build firmware via Windows host script (scaffold) | 经 PowerShell 调 WSL 编译,产物进 .debug/ |
openvela: flash firmware via CubeProgrammer (scaffold) | Windows CubeProgrammer 写 QSPI + boot stub |
openvela: flash current artifacts only (scaffold) | 只烧已有 .debug 产物 |
Debug: openvela: attach only (scaffold) | Cortex-Debug attach,loadFiles: [] |
硬件工具路径在 .vscode/settings.json 的 cortex-debug.* 项;本机安装位置不同时只改该文件,或设:
| 环境变量 | 用途 |
|---|---|
OPENVELA_WSL_DISTRO | WSL 发行版,默认 Debian |
OPENVELA_ROOT_WSL | openvela 根目录 |
OPENVELA_OUT_DIR | 产物目录,默认仓内 .debug |
STM32_PROGRAMMER_CLI | CubeProgrammer CLI |
STM32_EXTERNAL_LOADER | MT25TL01G_STM32H750B-DISCO.stldr |
仓库内相关文件
| |