VSCode+arm-none-eabi+openocd+msys实现STM32在线调试

[复制链接]
 楼主| keer_zu 发表于 2021-12-3 11:59 | 显示全部楼层 |阅读模式
VSCode是一个非常好用的工具,首先免费,个人和商用都免费。这就解决了很多问题,因为现在国内对版权越来越重视了。所以告别那些**的keil等工具吧,涉及版权问题不说,还有可能有病毒,木马等风险。
现在来总结一下VSCode如何实现在线调试STM32代码的方法。先总结Windows平台,后面再来总结Mac OS平台。
1、安装VSCode这个不用说了
2、安装windows-arm-none-eabi扩展这是一个交叉编译工具链,使用这个工具将代码编译成可以在STM32上运行的文件。
直接在VSCode的Extension窗口中,搜索windows-arm-none-eabi,安装,截至我目前的情况是,需要安装0.1.2版本,0.1.6版本编译在最后copy的时候会出错。
方法是,先安装搜索到的版本,安装完成后,点设置按钮,选择 Install Another Version。就可以选择旧版本安装。


5228309-fdfe19b96d6326ee.png

1692161a99556b7924.png
3、安装openocdhttps://gnutoolchains.com/arm-eabi/openocd/ 下载最新版本,解压备用。
4、安装msysmsys是为了提供shell运行环境,避免Makefile不能执行。
msys是MinGW的一部分,先下载MinGW安装器,安装完成后运行。选择MSYS,然后选择右边最上面的msys-base-bin,选中后会自动选中其他一系列的package,然后应用修改。


5228309-81a4d6a568d82182.png

5456661a995657513f.png

安装完成后,会在C:\MinGW\msys\1.0\bin看到安装这些文件。主要看有没有rm,mkdir这些。
5、配置环境变量打开“高级系统设置”--“环境变量”,找到用户变量里的“path”,“编辑”,分别添加上面安装的三个工具的路径。


5228309-8373c7e501429c45.png

634461a995702885c.png

6、添加VSCode调试配置文件切换到调试窗口,添加launch.json配置文件。


5228309-e7f7e052820c3ea0.png

5255761a9957e8c26b.png


选择C++(GDB/LLDB)


5228309-39a0116c7024baec.png

7032761a99588d321a.png


选择arm-none-eabi-gcc.exe build and debug active file

5228309-139acf27404f66a1.png

5421561a995938038d.png


自动创建了一个launch.json文件,有一些默认的配置


5228309-138a8013d7bca3f4.png

3665561a9959cbff67.png


修改部分参数
  1. {
  2.     // Use IntelliSense to learn about possible attributes.
  3.     // Hover to view descriptions of existing attributes.
  4.     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  5.     "version": "0.2.0",
  6.     "configurations": [
  7.         {
  8.             "name": "可以改成自己的项目名",
  9.             "cwd": "${workspaceRoot}",
  10.             "request": "launch",
  11.             "type": "cppdbg",
  12.             "program": "${workspaceRoot}/build/xxx.elf",  // 改成自己的项目生成的elf文件路径
  13.             "stopAtEntry": false,
  14.             "externalConsole": false,
  15.             "MIMode": "gdb",
  16.             "miDebuggerPath": "C:\\Users\\xxx\\.vscode\\extensions\\metalcode-eu.windows-arm-none-eabi-0.1.2\\bin\\arm-none-eabi-gdb.exe",   // 改成arm-none-eabi-gdb.exe的路径
  17.             "targetArchitecture": "arm",   // 目标架构,改成arm
  18.             "preLaunchTask": "build",  // 启动调试之前要执行的任务,这里配置的编译任务,每次调试之前执行一次编译
  19.             "setupCommands": [ // 进入GDB以后,自动执行的一些命令  
  20.                 {
  21.                     "description": "连接GDB Server",
  22.                     "text": "target remote localhost:3333",
  23.                     "ignoreFailures": false
  24.                 },
  25.                 {
  26.                     "description": "选择调试文件(.elf)到gdb",
  27.                     "text": "file D:/xxx/build/xxx.elf",
  28.                     "ignoreFailures": false
  29.                 },
  30.                 {
  31.                     "description": "Halt",
  32.                     "text": "mon halt",
  33.                     "ignoreFailures": false
  34.                 },
  35.                 {
  36.                     "description": "Reset MCU",
  37.                     "text": "mon reset init",
  38.                     "ignoreFailures": false
  39.                 },
  40.                 {
  41.                     "description": "下载代码到MCU",
  42.                     "text": "load",
  43.                     "ignoreFailures": false
  44.                 }
  45.             ]
  46.         }
  47.     ]
  48. }



到这里,launch.json就配置完成了,下面配置task。task主要有2个,一个编译,一个是启动openocd。
Ctrl+Shift+P,打开VSCode的命令行,输入configure task,选择Tasks:Configure Task -- 回车 -- Create task.json file form template -- 回车 -- Others -- 回车。


5228309-f1675606d80caed1.png

1035061a995df4a9f1.png



5228309-9c75b21f24dc0234.png
782461a995e7383cf.png



5228309-799a1bad97b5988a.png

1963261a995f20cdd0.png


自动创建一个task.json文件。


5228309-b9a1075a24c7f5c6.png

7865861a99600db88d.png

修改配置文件
  1. {
  2.     // See https://go.microsoft.com/fwlink/?LinkId=733558
  3.     // for the documentation about the tasks.json format
  4.     "version": "2.0.0",
  5.     "tasks": [
  6.         {
  7.             "label": "build",
  8.             "type": "shell",
  9.             "command": "make",
  10.         },
  11.         {
  12.             "label": "run openocd",
  13.             "type": "shell",
  14.            "command": "openocd -f interface/stlink.cfg -f target/stm32f1x.cfg"  // 这里注意选择和你板子相匹配的配置文件
  15.         }
  16.     ]
  17. }

可以在openocd目录下的share->openocd->scripts下找到interface和target目录,里面有配置文件可以选择。


5228309-a9353d9534ff4c2a.png

9317961a99621a9515.png


到此,所有工作都完成了。
注意,需要先运行启动openocd的任务,然后切换到调试窗口,点击运行即可自动编译,然后烧写,然后运行到断点。


5228309-ce7bde2fffdda786.png

7503361a9962c40204.png

到此实现VSCode+arm-none-eabi+openocd+msys的在线STM32调试.




您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1478

主题

12917

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部