Skip to content

zuoliangyu/STM32-Debug-Configurator

Repository files navigation

STM32 调试配置器 (by 左岚)

版本 VS Code 许可证 作者

中文 | English

STM32 调试配置器图标

强大的 Visual Studio Code STM32 调试配置扩展


📋 目录

🎯 概述

STM32 调试配置器 是专为 STM32 开发者设计的下一代 Visual Studio Code 扩展。它提供了超现代的图形界面,用于智能高效地管理和生成 Cortex-Debug 配置文件 (launch.json)。

此扩展通过智能环境感知和用户友好的界面大大简化了 STM32 调试配置的复杂性,让开发者能够专注于代码而不是繁琐的配置细节。

为什么选择 STM32 调试配置器?

  • 🚀 零配置:自动检测 OpenOCD 安装和配置文件
  • 🎨 现代界面:清爽、直观的界面,支持深色/浅色主题
  • 🌍 多语言:完全支持中英文界面
  • 🔍 智能搜索:接口和目标文件的高级搜索功能
  • 📊 实时监控:调试会话期间的实时变量监控
  • 🔧 灵活配置:支持多种 GDB 服务器(OpenOCD、J-Link、pyOCD 等)

✨ 特性

核心特性

🎯 活动栏快速访问

  • 专用活动栏图标,一键访问
  • 无需在命令面板中搜索
  • 即时访问调试配置

📁 智能树视图侧边栏

  • 实时显示调试配置
  • 快速访问最近使用的配置
  • 可视化管理和编辑调试配置
  • 一键快捷操作

🔍 高级 OpenOCD 集成

  • 自动路径检测:智能扫描常见的 OpenOCD 安装位置
  • 自定义路径支持:配置自定义 OpenOCD 可执行文件路径
  • 文件浏览器:内置文件浏览器选择 OpenOCD 可执行文件
  • 接口文件搜索:实时搜索和过滤接口配置文件
  • 目标文件搜索:智能搜索目标配置文件,即时过滤

📊 LiveWatch 实时监控

  • 调试期间动态添加/删除监控变量
  • 直观的变量管理界面
  • 实时变量状态更新
  • 可配置更新频率以优化性能

🌍 智能多语言支持

  • 基于系统设置自动检测语言
  • 中英文间无缝切换
  • 本地化界面元素和消息
  • 持久化语言偏好

扩展特性

🔧 多种 GDB 服务器支持

  • OpenOCD(推荐)
  • J-Link GDB Server
  • pyOCD
  • ST-Link GDB Server
  • ST-Util

🎨 可视化配置

  • 无需手动编辑 JSON
  • 直观的表单式配置
  • 实时验证和反馈
  • 常用设置的自动完成

🔄 智能依赖管理

  • 自动检测 Cortex-Debug 扩展
  • 提示缺少的依赖项
  • 自动或手动指定 .elf 文件路径
  • 无需额外插件独立运行

⚙️ 配置自动化

  • 智能更新 launch.json,保留现有配置
  • 自动配置全局 Cortex-Debug 设置
  • 消除手动配置步骤
  • 配置持久化和历史记录

📦 安装

系统要求

  • Visual Studio Code:1.80.0 或更高版本
  • Cortex-Debug 扩展:必需依赖项(自动检测)
  • OpenOCD:推荐用于 STM32 调试(可选,但推荐)

安装方法

方法 1:VS Code 市场(推荐)

  1. 打开 Visual Studio Code
  2. 进入扩展视图(Ctrl+Shift+XCmd+Shift+X
  3. 搜索 "STM32 Debug Configurator by zuolan"
  4. 点击 安装
  5. 如提示重新加载 VS Code

方法 2:手动安装

  1. 发布页面 下载最新的 .vsix 文件
  2. 打开 VS Code
  3. 进入扩展视图
  4. 点击 "..." 菜单并选择 "从 VSIX 安装..."
  5. 选择下载的 .vsix 文件
  6. 重新加载 VS Code

安装后设置

  1. 安装 Cortex-Debug:如未安装,扩展会提示您
  2. 安装 OpenOCD(推荐):
    • Windows:从 OpenOCD 发布页面 下载
    • macOS:brew install openocd
    • Linux:sudo apt-get install openocd(Debian/Ubuntu)
  3. 配置 OpenOCD 路径(如果未自动检测):
    • 打开 VS Code 设置
    • 搜索 "stm32-configurator.openocdPath"
    • 设置 OpenOCD 可执行文件的路径

📖 使用方法

快速开始

  1. 在 VS Code 中打开您的 STM32 项目
  2. 点击活动栏中的 STM32 调试配置器图标(左侧边栏)
  3. 配置您的调试设置
    • 选择 .elf 文件来源(自动/手动)
    • 选择 GDB 服务器(推荐 OpenOCD)
    • 选择接口文件(使用搜索过滤)
    • 选择目标文件(使用搜索过滤)
    • 根据需要配置其他选项
  4. 点击"生成配置"按钮
  5. 使用 VS Code 的运行和调试视图开始调试

详细配置指南

步骤 1:可执行文件配置

自动检测模式(需要 ST 的 STM32 扩展):

  • 自动从构建输出中找到 .elf 文件
  • 无需手动配置路径

手动模式

  • 指定 .elf 文件的确切路径
  • 支持工作区变量如 ${workspaceFolder}
  • 示例:${workspaceFolder}/build/Debug/myproject.elf

步骤 2:OpenOCD 配置

路径配置

  • 点击"浏览"选择 OpenOCD 可执行文件
  • 点击"扫描"重新检测系统 PATH 中的 OpenOCD
  • 或在设置中手动输入路径

接口文件选择

  1. 点击接口文件下拉菜单
  2. 使用搜索框过滤选项(例如,输入 "stlink" 查找 ST-Link 接口)
  3. 从过滤结果中选择您的调试器接口
  4. 常见接口:
    • stlink.cfg - ST-Link V2/V3
    • cmsis-dap.cfg - CMSIS-DAP 兼容调试器
    • jlink.cfg - J-Link 调试器

目标文件选择

  1. 点击目标文件下拉菜单
  2. 使用搜索框按芯片系列过滤(例如,"f4" 查找 STM32F4 系列)
  3. 选择您的具体 MCU 目标
  4. 示例:
    • stm32f4x.cfg - STM32F4 系列
    • stm32h7x.cfg - STM32H7 系列
    • stm32g0x.cfg - STM32G0 系列

步骤 3:高级选项

SVD 文件(可选):

  • 提供外设寄存器描述
  • 在调试会话中启用寄存器视图
  • MCU 的 .svd 文件路径

适配器速度

  • 默认:4000 kHz
  • 较低值以提高稳定性(500-1000 kHz)
  • 较高值以提高速度(最高 10000 kHz)

LiveWatch 变量

  1. 启用 LiveWatch 复选框
  2. 添加要监控的变量:
    • 点击"添加变量"
    • 输入变量名
    • 支持全局变量、结构成员
  3. 配置更新频率(1-100 采样/秒)

使用多个配置

扩展支持多个调试配置:

  1. 为不同目标生成不同配置
  2. 每个配置都以唯一名称保存
  3. 从树视图访问最近配置
  4. 轻松在配置间切换

⚙️ 配置选项

扩展设置

设置 类型 默认值 描述
stm32-configurator.openocdPath string "" OpenOCD 可执行文件的自定义路径
stm32-configurator.language enum "en" 显示语言(en/zh)

生成的配置结构

扩展在 .vscode/launch.json 中生成完整的调试配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "STM32 Debug",
      "type": "cortex-debug",
      "request": "launch",
      "servertype": "openocd",
      "cwd": "${workspaceFolder}",
      "executable": "${workspaceFolder}/build/Debug/project.elf",
      "configFiles": [
        "interface/stlink.cfg",
        "target/stm32f4x.cfg"
      ],
      "svdFile": "${workspaceFolder}/STM32F407.svd",
      "openOCDLaunchCommands": [
        "adapter speed 4000"
      ],
      "liveWatch": {
        "enabled": true,
        "samplesPerSecond": 4
      }
    }
  ]
}

🖼️ 界面截图

主配置界面

主要的 webview 面板提供了直观的表单来配置所有调试设置:

  • 清爽现代的设计,支持主题
  • 实时验证和反馈
  • 可搜索的文件选择下拉菜单
  • 按不同配置方面组织的有序部分

树视图侧边栏

活动栏侧边栏显示:

  • 当前调试配置
  • 最近配置历史记录
  • 快速操作按钮
  • 配置状态指示器

LiveWatch 配置

动态变量管理界面:

  • 动态添加/删除变量
  • 配置更新频率
  • 活动变量的可视化反馈

💻 支持的平台

平台 支持 备注
Windows ✅ 完全支持 自动检测 STM32CubeIDE 安装
macOS ✅ 完全支持 支持 Homebrew OpenOCD
Linux ✅ 完全支持 检测包管理器安装

OpenOCD 自动检测路径

Windows

  • STM32CubeIDE 安装
  • C:\OpenOCD\
  • C:\Program Files\OpenOCD\
  • %USERPROFILE%\AppData\ 中的 xPack 安装

macOS/Linux

  • 系统 PATH
  • /usr/local/bin/
  • /opt/openocd/
  • 用户主目录安装

🔧 故障排除

常见问题和解决方案

OpenOCD 未检测到

问题:扩展无法找到 OpenOCD 解决方案

  1. 官方发布页面安装 OpenOCD
  2. 使用"浏览"按钮手动选择 OpenOCD 可执行文件
  3. 或在 VS Code 设置中设置路径:stm32-configurator.openocdPath

接口/目标文件未填充

问题:下拉列表为空 解决方案

  1. 确保 OpenOCD 路径配置正确
  2. 点击"扫描"刷新 OpenOCD 检测
  3. 检查 OpenOCD 安装是否包含配置文件

Cortex-Debug 不工作

问题:调试会话启动失败 解决方案

  1. 从市场安装 Cortex-Debug 扩展
  2. 确保 GDB 已安装并在 PATH 中
  3. 验证 .elf 文件路径正确
  4. 检查调试控制台的具体错误消息

搜索功能不工作

问题:搜索框不过滤结果 解决方案

  1. 确保在搜索框中输入,而不是下拉菜单
  2. 等待过滤生效
  3. 用 × 按钮清除搜索重置

调试控制台命令

调试会话期间有用的 OpenOCD 命令:

monitor reset halt     # 复位并停止目标
monitor flash erase_address 0x08000000 0x100000  # 擦除闪存
monitor flash write_image erase firmware.elf     # 编程闪存
monitor reset run      # 复位并运行

📝 更新日志

版本 1.0.3(最新)— 2026 年 4 月

🐛 修复

  • OpenOCD scripts 目录识别覆盖更多打包方式:之前只检查 <root>/share/openocd/scripts<root>/scripts,遇到从 GitHub 下载的 win32-x64 包多嵌一层 openocd/C:\Program Files\openocd\openocd\scripts\)的解压结构时,cfg 选择器一直空。新增对 OPENOCD_SCRIPTS 环境变量、<root>/openocd/scripts<root>/openocd/share/openocd/scripts<binDir>/scripts 的识别,并以 installRoot 为起点递归两层兜底搜索;候选要求同时含 interface/target/ 子目录避免误命中

版本 1.0.2 — 2026 年 4 月

🐛 修复

  • 修复 Marketplace 安装后所有命令报 command 'xxx' not found 的致命问题src/services/index.ts 的 barrel 文件意外再导出了 ./toolchainDetectionService.test,编译产物里 out/services/index.js 因此 require('./toolchainDetectionService.test').vscodeignore 已把 *.test.js 从 vsix 排除,导致激活时 Cannot find module 异常,activate() 整个挂掉,所有命令注册都跑不到。dev (F5) 因为 out/ 完整不受影响,只有发布版本受波及

版本 1.0.1 — 2026 年 4 月

🌏 默认语言改为中文

  • 扩展首次安装时 webview UI 默认显示中文;如果 VS Code 本身是英文界面则自动切换为英文
  • Marketplace 详情页默认显示中文 README(原英文版本迁到 README_en.md
  • 已经手动切换过语言的用户保留原选择,不会被强制覆盖

📝 修正

  • 1.0.0 CHANGELOG 移除错误列入的内部开发条目(未影响实际功能)

版本 1.0.0 — 2026 年 4 月 🎉

首个稳定版本。本次自动化重做将"读 .ioc → 找工具链 → 选 cfg → 输出 launch.json"全链路从手动填表升级为打开即用。

✨ 新增功能

  • STM32 设备自动检测:扫描工作区里 .ioc / .cproject / CMakeLists.txt,自动填型号(如 STM32H743ZITx),下方显示来源文件
  • 固件文件自动扫描:发现 build/Debug 等目录下所有 .elf / .axf / .bin / .hex,按 Debug > Release、elf > axf > hex > bin 排序后下拉选择
  • OpenOCD cfg 模态选择器:点击接口/目标输入框 → 弹出居中对话框,顶部搜索 + 滚动列表 + 当前值高亮 + ↑↓/Enter/Esc 键盘操作 + 背景模糊
  • 多工具链候选下拉:列出所有检测到的 ARM 工具链(STM32 官方扩展 bundle 各版本、PATH、cortex-debug 用户配置、其他常见路径),下拉切换无需重新扫描
  • STM32 官方扩展 bundle 优先识别%LOCALAPPDATA%\stm32cube\bundles\gnu-tools-for-stm32\<ver> 自动转成 ${env:LOCALAPPDATA}/... 可移植格式写入 launch.json
  • target.cfg / interface.cfg 智能匹配:根据设备型号推 target(STM32H7 → stm32h7x.cfg);接口默认 cmsis-dap.cfg → stlink.cfg;用户手动选择后不再覆盖
  • SWD / JTAG 传输方式选择:影响 interface 字段和 openOCDLaunchCommandstransport select
  • gdbPath 自动写入:根据工具链 bin 推导,ST bundle 走可移植形式

🎨 UI 重做

  • 12 列响应式 grid + 卡片布局,替代原来的长竖条。卡片:项目 / 目标设备 / GDB Server / ARM 工具链 / 高级选项
  • 编号徽章、统一间距阶梯、native VS Code 颜色变量、自定义下拉箭头、status / info 卡视觉重做

🔧 修复

  • armToolchainPath 修正为 bin 目录(cortex-debug 期望的格式),之前错写成 gcc.exe 完整路径
  • 生成的 launch.json 补全 serverpath / interface / showDevDebugOutput / transport select,空 SVD 不再写入
  • 不再生成 ${command:st-stm32-ide-debug-launch...} 这种依赖 ST 扩展的字符串
  • 修复 webview 消息丢失 race(onDidReceiveMessage 注册时机过晚导致 cfg 下拉一直空)
  • 修复 expandPath 通配符 * 在路径中段时 baseDir 算偏一级的 bug
  • 修复多个未定义全局(stateManager / createStateIndicator / validateGenerationData)导致 webview 初始化崩溃
  • 修复 target / interface 智能填充被默认选中误判为"用户已选过"
  • 修复语言切换 dropdown 与实际 UI 不一致

版本 0.2.5

  • 📚 文档和打包更新:同步所有版本的README版本信息和更新日志
  • 📦 包优化:清理VSIX包,排除开发文件和文档
  • 版本一致性:确保package.json、README和GitHub发布版本对齐
  • 🔄 改进发布流程:完善打包和发布工作流程

版本 0.2.4

  • 🔧 强化 OpenOCD 配置验证:增强配置验证机制,防止配置错误
  • 改进错误处理:更好的错误检测和用户反馈
  • 🛡️ 增强调试可靠性:提高调试配置生成过程的稳定性
  • 完善验证逻辑:更全面的OpenOCD路径和配置检查

版本 0.2.3

  • 🔧 ARM工具链完整集成:完整的ARM GNU工具链检测和配置
  • 🎯 智能路径检测:多策略工具链发现,跨平台支持
  • 📚 用户友好设置:直接下载链接和引导式配置流程
  • ⚙️ 自动配置服务:一键完整环境设置
  • 🌐 路径标准化:跨平台路径处理和正斜杠标准化

版本 0.2.2

  • 🔧 版本升级和功能优化
  • ➕ 添加部分操作和功能完善

版本 0.2.1

  • 🔍 增强了接口和目标文件的搜索功能
  • 📁 添加了 OpenOCD 可执行文件选择的文件浏览器
  • 🌍 改进了本地化支持
  • 🐛 错误修复和性能改进

版本 0.2.0

  • 🎯 添加了活动栏集成
  • 📊 实现了 LiveWatch 变量监控
  • 🌐 添加了多语言支持(中英文)
  • 🔧 改进了 OpenOCD 路径检测

版本 0.1.0

  • ✨ 主要功能更新
  • 🎨 新的现代界面设计
  • 📁 添加了树视图侧边栏
  • 🔄 配置持久化

版本 0.0.9

  • 🚀 首次公开发布
  • 📝 基础配置生成
  • 🔧 OpenOCD 集成

🤝 贡献

欢迎贡献!请随时提交问题和拉取请求。

开发设置

  1. 克隆仓库:
git clone https://github.com/zuoliangyu/stm32-configurator-by-zuolan.git
  1. 安装依赖:
npm install
  1. 在 VS Code 中打开:
code stm32-configurator-by-zuolan
  1. F5 在新的扩展开发主机窗口中运行扩展

测试

npm run test:all      # 运行所有测试
npm run test:unit     # 运行单元测试
npm run test:coverage # 运行带覆盖率的测试

🙏 致谢

  • Cortex-Debug - 提供调试框架
  • OpenOCD - STM32 调试支持
  • VS Code 团队 - 出色的扩展 API
  • STM32 社区 - 反馈和建议

特别感谢所有帮助改进此扩展的贡献者和用户!

📄 许可证

本项目基于 MIT 许可证 - 详情请参阅 LICENSE 文件。


用 ❤️ 创建,作者:左岚

版权所有 (c) 2025 左岚。保留所有权利。

报告错误 | 请求功能

About

用于快速生成cortex-debug的插件仓库

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors