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或在下面的界面中点击绿色三角形开始进行调试: 出现下面的调试界面(下图右上角有一排在线调试按钮),即表明在线调试正在进行中: