Linux下使用vscode在线调试STM32开发板


前言

现在越来越多人开始喜欢在Linux环境下开发IOT或MCU程序。本人也弄了一块STM32F769I-DISCO开发板来学习,并尝试将开发板程序移植到OpenHarmony。移植期间碰到不少问题,除了编译问题外还有不少死机问题,因此必须利用在线调试工具来分析和解决这些死机问题。自己上网查阅了不少在线调试的文章,但不知道什么原因,一直都不行。最后采用了vscode+Cortex-Debug+st-util工具才实现。


一、安装vscode Cortex-Debug扩展

在vscode的扩展窗口,找到Cortex-Debug扩展组件,并安装

二、下载和安装STLink开发工具,这是Cortex-Debug需要的配套工具

STLink工具下载地址如下:

https://github.com/stlink-org/stlink/releases

ubuntu版本:

https://github.com/stlink-org/stlink/releases/download/v1.7.0/stlink_1.7.0-1_amd64.deb

完成安装后,确定是否存在st-util和st-flash程序。

# st-util --version
v1.7.0

# st-flash --version
v1.7.0

三、配置Cortex-Debug

在菜单中选择:运行–>添加配置,会打开launch.json的配置文件并显示配置菜单。这个配置下拉菜单可以看到有很多可选项目,找到并选择”Cortex Debug: ST-Util”(配合下载的stlink-tool工具使用) 然后参考下面样例,完成配置。(配置文件位置:<项目根目录>/.vscode/launch.json):

{
          
   
    "version": "0.2.0",
    "configurations": [
        {
          
   
            "cwd": "${workspaceRoot}",
            "executable": "./out/stm32f769i-disco/stm32f769i-disco/OHOS_Image",
            "name": "Debug STUTIL",
            "request": "launch",
            "type": "cortex-debug",
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "servertype": "stutil"
        },
    ]
}

cwd:${workspaceRoot},代码根目录 executable:…/OHOS_Image,配置执行文件的路径和名称 type: cortex-debug,指定调试器 servertype:stutil,指定调试器的类型 runToEntryPoint: “main”,运行到main函数后中断执行

四、编译程序

我的ST32F769I-DISCO开发板适配了鸿蒙OS,直接在Shell终端运行鸿蒙的编译指令来编译代码:

hb build -f

另外也可以配置一个build任务,选择菜单:终端—>运行生成任务…或按Ctrl+Shift+B直接进行编译。配置文件在:<项目根目录>/.vscode/tasks.json

{
          
   
            "label": "mybuild",
            "type": "shell",
            "command": "hb build -f",
            "problemMatcher": [],
            "group": {
          
   
                "kind": "build",
                "isDefault": true
            },
        },

五、下载程序

使用stlink-tool附带的工具将编译的程序下载到开发板中(STM32F769I-DISCO的Flash地址是0x0800000):

st-flash  write OHOS_Image.bin 0x08000000

同样也可以配置一个下载程序的任务,只要运行该任务即可将程序下载到目标板(菜单终端—>运行任务…,选择myupload执行该任务)。配置文件在:<项目根目录>/.vscode/tasks.json

{
          
   
            "label": "myupload",
            "type": "shell",
            "command": "st-flash",
            "args": [
                "write",
                "${workspaceRoot}/out/stm32f769i-disco/stm32f769i-disco/OHOS_Image.bin",
                "0x08000000",
            ],
            "problemMatcher": [],
        },

六、在线调试

连接开发板,将编译的程序下载到目标板后,按F5或在下面的界面中点击绿色三角形开始进行调试: 出现下面的调试界面(下图右上角有一排在线调试按钮),即表明在线调试正在进行中:

经验分享 程序员 微信小程序 职场和发展