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

发布者:advancement4最新更新时间:2025-01-02 来源: jianshu关键字:STM32  在线调试 手机看文章 扫描二维码
随时随地手机看文章

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。就可以选择旧版本安装。


image.png?imageView2/2/w/1000

3、安装openocd

https://gnutoolchains.com/arm-eabi/openocd/ 下载最新版本,解压备用。

4、安装msys

msys是为了提供shell运行环境,避免Makefile不能执行。
msys是MinGW的一部分,先下载MinGW安装器,安装完成后运行。选择MSYS,然后选择右边最上面的msys-base-bin,选中后会自动选中其他一系列的package,然后应用修改。

image.png?imageView2/2/w/1000


安装完成后,会在C:MinGWmsys1.0bin看到安装这些文件。主要看有没有rm,mkdir这些。


5、配置环境变量

打开“高级系统设置”--“环境变量”,找到用户变量里的“path”,“编辑”,分别添加上面安装的三个工具的路径。


image.png?imageView2/2/w/1000

6、添加VSCode调试配置文件

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


选择C++(GDB/LLDB)

image.png?imageView2/2/w/1000

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

image.png?imageView2/2/w/1000

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


修改部分参数

{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

    'version': '0.2.0',

    'configurations': [

        {

            'name': '可以改成自己的项目名',

            'cwd': '${workspaceRoot}',

            'request': 'launch', 

            'type': 'cppdbg',

            'program': '${workspaceRoot}/build/xxx.elf',  // 改成自己的项目生成的elf文件路径

            'stopAtEntry': false,

            'externalConsole': false,

            'MIMode': 'gdb',

            '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的路径

            'targetArchitecture': 'arm',   // 目标架构,改成arm

            'preLaunchTask': 'build',  // 启动调试之前要执行的任务,这里配置的编译任务,每次调试之前执行一次编译

            'setupCommands': [ // 进入GDB以后,自动执行的一些命令  

                {

                    'description': '连接GDB Server',

                    'text': 'target remote localhost:3333',

                    'ignoreFailures': false

                },

                {

                    'description': '选择调试文件(.elf)到gdb',

                    'text': 'file D:/xxx/build/xxx.elf',

                    'ignoreFailures': false

                },

                {

                    'description': 'Halt',

                    'text': 'mon halt',

                    'ignoreFailures': false

                },

                {

                    'description': 'Reset MCU',

                    'text': 'mon reset init',

                    'ignoreFailures': false

                },

                {

                    'description': '下载代码到MCU',

                    'text': 'load',

                    'ignoreFailures': false

                }

            ]

        }

    ]

}


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


image.png?imageView2/2/w/1000


image.png?imageView2/2/w/1000


image.png?imageView2/2/w/1000


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


image.png?imageView2/2/w/1000


修改配置文件

{

    // See https://go.microsoft.com/fwlink/?LinkId=733558

    // for the documentation about the tasks.json format

    'version': '2.0.0',

    'tasks': [

        {

            'label': 'build',

            'type': 'shell',

            'command': 'make',

        },

        {

            'label': 'run openocd',

            'type': 'shell',

           'command': 'openocd -f interface/stlink.cfg -f target/stm32f1x.cfg'  // 这里注意选择和你板子相匹配的配置文件

        }

    ]

}


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


image.png?imageView2/2/w/1000


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


image.png?imageView2/2/w/1000

到此实现VSCode+arm-none-eabi+openocd+msys的在线STM32调试.
关键字:STM32  在线调试 引用地址:VSCode+arm-none-eabi+openocd+msys实现STM32在线调试

上一篇:基于STM32的智能(GPS+NB-IOT)导盲系统
下一篇:stm32填坑之旅一 - stm32f103c8t6点亮板载贴片蓝色LED

推荐阅读最新更新时间:2026-03-24 01:27

STM32内部RAM在线调试配置方法及详细说明
Ⅰ、 写在前面 本文主要讲述的内容:基于Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。如需要了解更多相关的文章,可以到我博客,或微信公众号查看。 让程序运行在RAM中调试代码有两优点:1.速度快;2.减少对芯片FLASH读写次数,增加芯片寿命。 本文牵涉的知识比较多,如果弄明白所有细节问题,对自己这方面的技能是一种很大的提升。 本文基于ST公司Cortex-M内核的STM32来讲述其配置方法,其实也适用于其他公司(如:TI、NXP等)的Cortex-M芯片,原理都是一样的。 本文内容已经整理成PDF文件,提供给大家下载: http://pan.baidu.com/s/1d
[单片机]
<font color='red'>STM32</font>内部RAM<font color='red'>在线</font><font color='red'>调试</font>配置方法及详细说明
STM32的RAM下载在线调试设置
1. 64Kb = 64*1024Byte =0xf10000Byte 2.将64kB的RAM切割成两份,分别用来存放引导程序和引导程序起作用的缓存区域 3.在C/C++选项增加个向量VECT_TAB_RAM 4.修改base地址 5.设置debug为在线调试方式,注意下面有修改的参数 6.设置调试器,查看已经修改了 7. 添加RAM.ini初始化文件,文件内容如下: /******************************************************************************/ /* RAM.IN
[单片机]
<font color='red'>STM32</font>的RAM下载<font color='red'>在线</font><font color='red'>调试</font>设置
stm32 keil mdk用jlink在线仿真调试键盘按键——图文详解
原来按键用JLINK是能在线调试的!我原来还以为按键这种东西只能用串口发送键值来调试呢!这太好啦,不知道怎么做的新手们赶紧看下去吧! 注意:在调试需要某个按键被按下才能执行的语句时,只需在相应语句前设置断点,然后全速运行,这时再按下相应按键,则程序便会执行到断点语句前(若不按下按键,程序是不会执行到断点前的)。若需要多次观察断点处变量的情况,则重复上述动作即可(全速运行,按键;全速运行,按键;······)。
[单片机]
<font color='red'>stm32</font> keil mdk用jlink<font color='red'>在线</font>仿真<font color='red'>调试</font>键盘按键——图文详解
M60 单片机的在线仿真与步进、日志调试
我们对M40 定时器0的代码进行步进调试,掌握调试技巧... 一、前期准备: 安装好keil C51 51单片机编程推荐软件,熟悉它,后续stm32同样可用 Keil(C51)介绍、下载、安装与注册 准备51开发板(STC系列芯片的或其他)或者安装proteus 开发板一般推荐购买一套,仿真的编程环境和真实环境有出入(51开发板一般不足百元) 开始也可以不买,使用proteus仿真51环境入门 51入门实际上不需要多高大上的开发板,最核心的定时器、数码管、基础传感器、通讯都有了。以下也是从网络搜索的,向导单片机训练营用这个,从知乎 /知乎app下单买向导可以赚1元左右佣金,希望能够站着就把1元钱赚了:)
[单片机]
M60 单片机的<font color='red'>在线</font>仿真与步进、日志<font color='red'>调试</font>
Microchip发布具有强大编程和调试功能的新型在线仿真器
Microchip MPLABÒ ICE 4 在线仿真器是一套完整的仿真、编程和调试系统,具有无线连接、电源调试和使用跟踪的实时代码分析功能 如果要想对项目进行完整的分析以实现快速开发,嵌入式工程师就需要有易于使用且功能强大的仿真硬件。Microchip Technology Inc.(美国微芯科技公司)今日宣布推出下一代集在线仿真、调试和编程功能于一身的开发工具MPLAB® ICE 4。这款新工具适用于Microchip PICÒ和AVRÒ单片机(MCU)、dsPICÒ数字信号控制器(DSC)以及SAM单片机和微处理器(MPU)。 MPLAB ICE 4 在线仿真器是Microchip速度最快、功能最丰富的仿真和
[单片机]
Microchip发布具有强大编程和<font color='red'>调试</font>功能的新型<font color='red'>在线</font>仿真器
Keil(MDK-ARM)系列教程(八)_在线调试(Ⅰ)
Ⅰ、写在前面 Keil在线调试的内容有很多,本文带来在线调试常用的内容:Debug Toolbar调试工具栏(复位、全速运行、停止运行、单步调试、逐行调试、跳出调试、运行到光标行、跳转到暂停行、调试窗口)快捷按钮的详细内容。 Keil工具栏总共有三种:文件工具栏(File Toolbar)、编译工具栏(Build Toolbar)、调试工具栏(Debug Toolbar)。编译工具栏只在编辑模式有效,调试工具栏只在调试模式下有效。文件工具栏在两种模式下都有效。 文件工具栏可以参看文章:Keil(MDK-ARM)系列教程(二)_工具栏详细说明 本文内容已经整理成PDF文件,提供给大家下载: http://pan.ba
[单片机]
Keil(MDK-ARM)系列教程(八)_<font color='red'>在线</font><font color='red'>调试</font>(Ⅰ)
Keil的调试命令、在线汇编与断点设置等调试方法介绍
三、断点设置 程序调试时,一些程序行必须满足一定的条件才能被执行到(如程序中某变量达到一定的值、按键被按下、串口接收到数据、有中断产生等),这些条件往往是异步发生或难以预先设定的,这类问题使用单步执行的方法是很难调试的,这时就要使用到程序调试中的另一种非常重要的方法——断点设置。断点设置的方法有多种,常用的是在某一程序行设置断点,设置好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此观察有关变量值,以确定问题所在。在程序行设置/移除断点的方法是将光标定位于需要设置断点的程序行,使用菜单Debug- Insert/Remove BreakPoint 设置或移除断点(也可以用鼠标在该行双击实现同样的功能);Debug- En
[单片机]
Keil的<font color='red'>调试</font>命令、<font color='red'>在线</font>汇编与断点设置等<font color='red'>调试</font>方法介绍
Microchip新一代在线调试器问世,拥有无与伦比的速度
电子网消息,Microchip (美国微芯)日前发布MPLAB® ICD 4——Microchip的PIC®单片机和dsPIC®数字信号控制器系列产品的在线编程和调试开发工具。MPLAB ICD 4囊括了MPLAB ICD 3调试器的所有功能,在此基础上采用更快的处理器提高了速度并增大了RAM容量。 MPLAB ICD 4速度之所以能够显著提高是因为采用了一片运行在300 MHz的32位MCU。处理速度更快,还增加了2 MB的高速缓存,使得该产品速度是前一代产品的两倍。 圆形MPLAB ICD 4封装在一个耐用的黑色外壳中,顶部采用拉丝铝,醒目的LED灯带用于指示调试状态。该工具具有以下特性: •1.2V至5.5
[半导体设计/制造]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved