美文网首页程序员
vscode+stlink实现在线调试

vscode+stlink实现在线调试

作者: xEndLess | 来源:发表于2023-11-25 11:26 被阅读0次

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命令下载源码。

git clone源码

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


stlink编译流程

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

stlink toolset

为了便于管理,可以把目录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指令编译功能。如下如所示:


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调试你的嵌入式系统。这种集成式的开发环境可以提高开发效率,并帮助你更轻松地诊断和修复代码中的问题。

相关文章

网友评论

    本文标题:vscode+stlink实现在线调试

    本文链接:https://www.haomeiwen.com/subject/uphowdtx.html