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