使用Visual Studio Code开发STM32系列芯片(续)

使用Visual Studio Code开发STM32系列芯片(续)

前言

书接上回,上篇文章我们说完了如何使用CMake来构建整个工程,并且成功编译完成,得到了我们想要的文件,这篇文章,我们来搞定如何通过OpenOCD来进行STM32程序的下载和调试。

文章中所有的安装包以及测试代码可以在这里找到:【昕某人の网盘-VSCode开发STM32的开发环境】

openocd安装

openocd是一个调试工具,能够按照不同的调试器连接不同的芯片,以达到下载软件和调试的目的。

openocd的安装比较简单,只需要下载openocd的安装包,解压后添加环境变量即可。

替换Jlink驱动

这里需要说明的是,openocd只把Jlink当作普通的USB设备进行处理,但是类似MDK的软件是需要识别Jlink的驱动程序的,也就是说,如果你之前使用MDK能够正常工作,那么openocd是找不到jlink的。

打开“设备管理器”可以看到目前的Jlink驱动程序如下:

使用Visual Studio Code开发STM32系列芯片(续) 插图1

这里可以看到上面的图片中有两个Jlink,一个为通用串行总线控制器,一个为通用串行总线设备。在这里,能够被openocd正常识别的调试器是下面这个(XXXXV9.3 Plus的那个),而上面的Jlink只会被MDK等IDE识别。

想要修改USB设备的类型,可以使用zadig来实现。

首先打开zadig,选择上面的Options,并且按照下图的模式进行配置:

使用Visual Studio Code开发STM32系列芯片(续) 插图2

接着选择Jlink设备(与设备管理器看到的名字一样),点击替换即可:

使用Visual Studio Code开发STM32系列芯片(续) 插图3

等待替换完成:

使用Visual Studio Code开发STM32系列芯片(续) 插图4

替换完成后打开设备管理器就能看到jlink替换后的位置:

使用Visual Studio Code开发STM32系列芯片(续) 插图5

openocd的使用

openocd的使用比较简单,它只需要3个比较简单的参数:

  • 调试器类型,包括ST-Link、J-Link等等,主要看你所使用的调试器类型
  • 芯片类型:如STM32F4、STM32F1等等
  • 要下载的文件:即编译后的Hex文件

烧录程序

首先打开openocd安装(解压后)的路径,打开share->openocd->scripts目录:

使用Visual Studio Code开发STM32系列芯片(续) 插图6

在这个目录下我们能够看到很多的子目录,这些目录中,我们只需关注两个即可:

使用Visual Studio Code开发STM32系列芯片(续) 插图7

这两个目录分别存放着各个调试器所用的文件和各个芯片所用的文件。

interface目录下都是一些调试器的配置文件:

使用Visual Studio Code开发STM32系列芯片(续) 插图8

而target目录下都是各个芯片的配置文件:

使用Visual Studio Code开发STM32系列芯片(续) 插图9

我们将需要的调试器文件拷贝到工程目录下:

并且修改jlink.cfg中的配置,在jlink.cfg中添加一行,声明使用的是SWD的接口:

transport select swd

使用Visual Studio Code开发STM32系列芯片(续) 插图10

然后打开终端,输入下面的指令即可完成下载:

openocd -f jlink.cfg -f stm32f4x.cfg -c "program Build/TestProject.hex verify reset exit"

注意引号!

使用Visual Studio Code开发STM32系列芯片(续) 插图11

此时我们可以看到开发板的流水灯效果!

使用task.json配置自动下载

我们当然不希望每次下载程序都输入那么长一大串的指令,所以可以借助VSCode的“任务”来实现一键下载。

在VSCode中上方菜单的终端,选择配置默认生成任务。

使用Visual Studio Code开发STM32系列芯片(续) 插图12

此时可以看到VSCode为我们生成了一个默认的任务,这个配置文件放在工程目录下的.vscode中,文件名为tasks.json

然后将下面的内容复制并完全替换默认生成的任务配置文件。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "下载程序",
            "type": "shell",
            "command": "openocd",
            "args": [
                "-f",
                "jlink.cfg",
                "-f",
                "stm32f4x.cfg",
                "-c",
                "program Build/TestProject.hex verify reset exit"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "silent"
            },
            "problemMatcher": "$gcc"
        },
        {
            "label": "生成MakeFile",
            "type": "shell",
            "command": "cmake",
            "args": [
                "-G",
                "'MinGW Makefiles'",
                ".",
                "-B",
                "Build"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "silent"
            },
            "problemMatcher": "$gcc"
        }
    ]
}

上面的文件中配置了两个任务,一个为烧录程序,一个为生成MakeFIle文件,其实就是将命令写好,当执行的时候VSCode就按照设置的命令和参数进行编译和烧录。

然后我们就可以中断->运行生成任务中(或者按下Ctrl+Shift+B)来选择任务并执行。

使用Visual Studio Code开发STM32系列芯片(续) 插图13

如果你打算直接用cmake tool插件来执行编译动作,那么选择编译链的时候要选择MinGW。

使用Visual Studio Code开发STM32系列芯片(续) 插图14

启动调试

接下来我们要配置使用openocd来进行Debug调试。

调试之前请保证生成的elf文件为Debug模式下生成的!

下载插件

首先需要下载Cortex-Debug插件。

使用Visual Studio Code开发STM32系列芯片(续) 插图15

配置调试任务

点击运行->添加配置,然后随便选择一个,VSCode会自动生成一个Debug的配置文件,名字为launch.json。

将下面的内容全部复制并替换原有的launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceFolder}",
            "executable": "./Build/TestProject.elf",
            "request": "launch",
            "type": "cortex-debug",
            "runToEntryPoint": "main",
            "servertype": "openocd",
            "device": "STM32F407VG",
            "interface": "swd",
            "configFiles": [
                "jlink.cfg",
                "stm32f4x.cfg"
            ],
            "svdFile": "./STM32F407.svd"
        }
    ]
}

上面的配置文件也比较好理解,需要注意的是最后的svd文件,如果你不需要查看外设寄存器的值,那么这个可以不进行配置。各个芯片的svd文件可以在上面提供的下载链接中找到。

注意:任何VSCode的配置文件请注意路径以及生成文件名称的问题!

配置好后,我们直接点击F5(或者运行->启动调试)即可。

然后我们就可以愉快的调试了!

使用Visual Studio Code开发STM32系列芯片(续) 插图16

结束

至此,我们一套支持跨平台的STM32编译与调试系统就搭建完成了,VSCode给我的调试体验还是蛮不错的,如果你有任何的疑问,都可以在下面留言,我会在最晚半个小时内给你答复!

温馨提示:本文最后更新于2023-03-04 21:42:06,某些文章具有时效性,若有错误或已失效,请在下方留言或联系XinMouRen
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

文章版权声明 1、本网站名称:昕某人の博客
2、本站永久网址:https://xinmouren.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
不需要使用MarkDown格式哦
提交
头像

昵称

夸夸
夸夸
还有吗!没看够!
取消
昵称表情代码图片

    暂无评论内容