Debian13下使用 Vim + Vimspector + ST-LINK v2.1 调试 STM32F103 指南

发布于:2025-09-16 ⋅ 阅读:(20) ⋅ 点赞:(0)

1. 硬件准备与连接

1.1 所需硬件

  • STM32F103C8T6 最小系统板
  • ST-LINK v2.1 调试器
  • 连接线(杜邦线)

1.2 硬件连接

ST-LINK v2.1 ↔ STM32F103C8T6 连接方式:

ST-LINK v2.1 引脚 STM32F103C8T6 引脚 功能说明
SWDIO PA13 数据线
SWCLK PA14 时钟线
GND GND 共地
3.3V (可选) 3.3V (可选) 供电

连接注意事项:

  • 确保目标板的 BOOT0 引脚已接地(低电平)
  • 如目标板已有独立供电,可不连接 3.3V 引脚以避免电源冲突
  • 使用短而优质的连接线,确保连接牢固

2. 软件环境安装与配置

2.1 安装编译工具链

sudo apt update
sudo apt install build-essential git
sudo apt install arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib

2.2 安装调试工具

sudo apt install gdb-multiarch openocd

2.3 安装配置 Vimspector

  1. ~/.vimrc 中添加插件配置(以 vim-plug 为例):

    call plug#begin('~/.vim/plugged')
    Plug 'puremourning/vimspector'
    call plug#end()
    
  2. 安装插件:

    :PlugInstall
    
  3. 安装调试适配器:

    :VimspectorInstall --enable-c
    

    或使用 Python 脚本安装:

    # 进入 vimspector 目录,通常在你的插件管理路径下
    cd ~/.vim/plugged/vimspector  # 路径请根据实际情况修改
    ./install_gadget.py --enable-c
    
  4. 配置 Vimspector 快捷键(添加到 ~/.vimrc):

     nmap <Leader>dd <Plug>VimspectorContinue
     nmap <Leader>dx <Plug>VimspectorStop
     nmap <Leader>dR <Plug>VimspectorRestart
     nmap <Leader>dp <Plug>VimspectorPause
     nmap <Leader>db <Plug>VimspectorToggleBreakpoint
     nmap <Leader>dc <Plug>VimspectorToggleConditionalBreakpoint
     nmap <Leader>dn <Plug>VimspectorStepOver
     nmap <Leader>di <Plug>VimspectorStepInto
     nmap <Leader>do <Plug>VimspectorStepOut
     nmap <Leader>dr <Plug>VimspectorRunToCursor
    

3. Vimspector 调试配置

3.1 创建 .vimspector.json 文件

在项目根目录创建 .vimspector.json 文件:

{
  "configurations": {
    "Launch STM32": {
      "adapter": "vscode-cpptools",
      "configuration": {
        "request": "launch",
        "type": "cppdbg",
        "program": "${workspaceRoot}/build/software.elf", // 确保此路径正确
        "cwd": "${workspaceRoot}",
        "targetArchitecture": "arm",
        "MIMode": "gdb",
        "MIDebuggerPath": "gdb-multiarch",
        "stopOnEntry": true,
        "stopAtConnect": true,
        "serverAddress": "localhost",
        "serverPort": 3333,
        "serverType": "openocd",
        "setupCommands": [
          {
            "description": "Specify executable file", // 明确指定可执行文件
            "text": "file ${workspaceRoot}/build/software.elf",
            "ignoreFailures": false
          },
          {
            "description": "Connect to OpenOCD",
            "text": "target extended-remote :3333"
          },
          {
            "description": "Reset and halt",
            "text": "monitor reset halt",
            "ignoreFailures": true
          },
          {
            "description": "Load program",
            "text": "load",
            "ignoreFailures": false
          }
        ],
        "launchCompleteCommand": "exec-continue"
      }
    }
  }
}

3.2 工作区路径说明

  • ${workspaceRoot} 表示 Vim 的当前工作目录
  • 使用 :pwd 命令可查看当前工作目录
  • 使用 :cd /path/to/project 可切换工作目录

4. 调试流程

4.1 启动 OpenOCD

打开终端,运行以下命令:

sudo openocd -f interface/stlink.cfg -f target/stm32f1x.cfg

4.2 启动 Vim 并打开项目

cd /path/to/project
vim src/main.c

4.3 启动调试会话

在 Vim 中执行:

<Leader>dd