UPort OpenOCD 调试器配置
UPort内置的OpenOCD版本为0.12.0。
该方法只支持GCC+CMake工具链,不支持Keil和IAR工具链。
参看OpenOCD文档或官网获取更多信息:
在开始前,请确保已经将STLINK/JLINK/CMSIS-DAP等调试器插入到UPort的USB接口。
打开UPort的后台后,点击“OpenOCD”,即可看到UPort的OpenOCD调试器配置界面。
Step1:检查UPort的配置
在插入调试器后,点击刷新按钮,UPort会自动检测调试器的类型,并显示在界面上。

如果自动识别有误,接下来可以手动调整设置。
Step2:配置OpenOCD的Debugger
默认情况下,UPort会自动识别调试器类型,并选择对应的OpenOCD配置文件。
也可以手动选择调试器,以及的SWD/JTAG调试器接口。

例如:
- 如果使用STLINK调试器,选择
STLINK,并选择SWD接口。 - 如果使用JLINK调试器,选择
JLINK,并选择SWD接口。 - 如果使用CMSIS-DAP调试器,选择
CMSIS-DAP,并选择SWD接口。
如果希望自定义cfg文件,可以选择上传自定义interface,然后手动选择link类型为Custom。
Step3:配置OpenOCD的目标
这个是必须手动配置的选项,错误的配置会导致无法连接目标设备。
默认速度为2000KHz,同时可以在Target 配置中,输入目标芯片的前缀,来快速寻找对应的OpenOCD配置文件。
例如:
- 目标芯片为STM32F103C8T6,输入
stm32f1x,选择对应的OpenOCD配置文件stm32f1x.cfg。 - 目标芯片为STM32F407VGT6,输入
stm32f4x,选择对应的OpenOCD配置文件stm32f4x.cfg。 - 目标芯片为ZYNQ-7000,输入
zynq,选择对应的OpenOCD配置文件zynq_7000.cfg。

如果希望进一步自定义OpenOCD的配置文件,可以选择上传自定义target,然后手动选择link类型为Custom。
Step4:启动OpenOCD服务
配置完成后,点击右上角的启动按钮,UPort会启动OpenOCD服务,并显示OpenOCD的日志信息。
以STM32G4+STLINK为例,调试运行灯闪烁,日志信息如下图所示:

如果没有错误或者警告信息,说明OpenOCD服务已经启动成功。此时此刻GDB端口运行在3333端口,Telnet端口运行在4444端口,TCL命令端口运行在6666端口。
Step5:配置远端VSCode/Jetbrain Clion启动命令
令人激动的最后一步!
建议先停止远端的芯片。使用Telnet连接到UPort的OpenOCD服务,输入reset halt命令,停止目标芯片的运行。
VSCode
以VSCode和STM32CubeMX for VSCode插件为例,对STM32G434进行调试,配置远端调试命令如下:
您需要手动替换以下数据为UPort的IP地址,以及CMake Target的名称。完成后,放置在.vscode/launch.json的顶层(即Json第一个花括号内)。
"inputs": [
{
"id": "openocdIp",
"type": "promptString",
"description": "UPort / OpenOCD IP address",
"default": "192.168.123.1"
},
{
"id": "cmakeTarget",
"type": "promptString",
"description": "CMake target name without .elf",
"default": "Please_input_your_CMake_target_name"
}
]
以下是一个示例配置,默认路径已经配置为RelWithDebInfo模式下的编译输出路径。为了实现跳转功能{Path recorded in ELF debug info}需要填写为项目的绝对路径,
例如/home/user/projects/。
完成后,您可以将其添加到.vscode/launch.json的configurations中:
{
"name": "GDB: Remote OpenOCD ${input:openocdIp}:3333",
"type": "cppdbg",
"request": "launch",
"cwd": "${workspaceFolder}",
"program": "${workspaceFolder}/build/RelWithDebInfo/${input:cmakeTarget}.elf",
"MIMode": "gdb",
"targetArchitecture": "arm",
"miDebuggerPath": "${command:st-stm32-ide-debug-launch.get-gdb-executable}",
"sourceFileMap": {
"{Path recorded in ELF debug info}": "${workspaceFolder}"
},
"stopAtEntry": false,
"setupCommands": [
{
"description": "Disable GDB index cache warning",
"text": "-gdb-set index-cache off",
"ignoreFailures": true
}
],
"customLaunchSetupCommands": [
{
"description": "Load ELF symbols",
"text": "-file-exec-and-symbols \"${workspaceFolder}/build/RelWithDebInfo/${input:cmakeTarget}.elf\"",
"ignoreFailures": false
},
{
"description": "Connect to remote OpenOCD",
"text": "-target-select extended-remote ${input:openocdIp}:3333",
"ignoreFailures": false
},
{
"description": "Reset and halt target",
"text": "-interpreter-exec console \"monitor reset halt\"",
"ignoreFailures": true
},
{
"description": "Load firmware",
"text": "-target-download",
"ignoreFailures": false
},
{
"description": "Break at main",
"text": "-break-insert main",
"ignoreFailures": true
}
],
"launchCompleteCommand": "exec-continue"
}
如果没有其他问题,此时此刻,点击VSCode的调试按钮,会自动下载程序,并进入调试状态。
Jetbrain Clion
参看Jetbrain Clion官方博客配置远端调试命令。
中文版参看Jetbrain Clion 知乎文章。
其他配置
如果您计划使用其他IDE,请参看OpenOCD文档,配置远端调试命令。