1.引言
嵌入式系统的开发通常需要使用调试工具来验证和调试代码。ST-Link是STMicroelectronics提供的一种常用调试和编程工具,用于与STM32微控制器系列进行通信。本文将介绍如何在Visual Studio Code(VSCode)中配置并使用ST-Link来调试嵌入式系统。
2.安装必要软件、工具和插件
2.1.安装vscode;
没什么要说的
2.2.安装cortex-debug插件;
在VSCode中,插件是扩展功能的关键。为了与ST-Link一起使用,我们需要安装一个支持ARM嵌入式系统的插件。打开VSCode,点击左侧的扩展图标(或使用快捷键Ctrl+Shift+X),然后在搜索框中输入“Cortex-Debug”并安装该插件。
2.3.安装MingW64;
安装完成记得把安装路劲加入到环境变量。
C:\mingw64\bin
进入路径C:\mingw64\bin。复制mingw32-make.exe,并改名为make.exe
2.4.安装git;
没什么说的
2.5.安装arm-none-eabi-gcc
安装完成后记得将路径加入到环境变量
C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2020-q4-major\bin
2.6.安装 ST-LINK GDB server
st-util是ST-LINK GDB server。st-util需要通过编译官方源码得到。github上找到源码,https://github.com/stlink-org/stlink
通过git bash命令下载源码。

下载完成后,通过下图所示方式编译STLINK源码。

编译完成后在路径stlink\build-mingw\bin
下找到如下图所示文件。st-util
就是本次需要的GDB Server工具。

为了便于管理,可以把目录bin整体复制到C盘下。
3.配置launch.json文件
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Cortex Debug",
"cwd": "${workspaceFolder}",
"executable": "./build/tmr2104.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "stutil",
"serverpath": "C:/Program Files (x86)/STMicroelectronics/bin/st-util.exe",
"interface": "swd",
"device": "STM32G431CB",
"v1": false,
"runToEntryPoint": "main",
//.svd可以在keil官网去下载STM32G0xx_DFP
"svdFile": "G:/SVD/STM32G431xx.svd",
"showDevDebugOutput": "both"
}
]
}
如果需要在在线调试期间,查看MCU寄存器数据,需加入。svd文件。"svdFile": "G:/SVD/STM32G431xx.svd",
。svd文件可以去keil官网下载。
4.用cubemx创建一个makefile工程
创建完成工程后,用vscode打开。在命令行输入make指令编译功能。如下如所示:

5.连接硬件
将ST-Link调试器连接到你的目标STM32开发板上,并确保硬件连接正确。
6.开始调试
通过点击VSCode中的调试按钮或使用快捷键F5启动调试会话。如果一切设置正确,VSCode将连接到ST-Link调试器并开始执行你的代码。
[2023-11-26T03:18:40.572Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session connected. You can switch to "DEBUG CONSOLE" to see GDB interactions.
"C:/Program Files (x86)/STMicroelectronics/bin/st-util.exe" -p 50000 --no-reset
st-util 1.7.0-338-g509d60e
2023-11-26T11:18:40 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:40 INFO gdb-server.c: Listening at *:50000...
2023-11-26T11:18:42 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:42 INFO gdb-server.c: Found 6 hw breakpoint registers
2023-11-26T11:18:42 INFO gdb-server.c: GDB connected.
2023-11-26T11:18:42 INFO gdb-server.c: Found 6 hw breakpoint registers
2023-11-26T11:18:42 INFO common.c: STM32G43x_G44x: 32 KiB SRAM, 128 KiB flash in at least 2 KiB pages.
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: block 08000000 -> 7800
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08000000
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08000800
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08001000
2023-11-26T11:18:42 INFO gdb-server.c: flash_erase: page 08001800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08002000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08002800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08003000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08003800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08004000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08004800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08005000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08005800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08006000
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08006800
2023-11-26T11:18:43 INFO gdb-server.c: flash_erase: page 08007000
2023-11-26T11:18:43 INFO flash_loader.c: Starting Flash write for WB/G0/G4/L5/U5/H5/C0
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: block 08000000 -> 7800
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08000000
1/1 pages written
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08000800
1/1 pages written
2023-11-26T11:18:43 INFO gdb-server.c: flash_do: page 08001000
1/1 pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08001800
1/1 pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08002000
1/1 pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08002800
1/1 pages written
2023-11-26T11:18:44 INFO gdb-server.c: flash_do: page 08003000
1/1 pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08003800
1/1 pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08004000
1/1 pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08004800
1/1 pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08005000
1/1 pages written
2023-11-26T11:18:45 INFO gdb-server.c: flash_do: page 08005800
1/1 pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08006000
1/1 pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08006800
1/1 pages written
2023-11-26T11:18:46 INFO gdb-server.c: flash_do: page 08007000
1/1 pages written
2023-11-26T11:18:46 INFO gdb-server.c: Found 6 hw breakpoint registers
7.结论
通过这些步骤,你现在应该能够在VSCode中成功配置并使用ST-Link调试你的嵌入式系统。这种集成式的开发环境可以提高开发效率,并帮助你更轻松地诊断和修复代码中的问题。
网友评论