【调试】如何使用vscode搭建openocd调试环境,通过jlink连接芯片进行调试

参考连接

【1】如何使用Openocd驱动Jlink

这里默认已经安装了vscode和C/C++的基本编译环境,并且下载好了openocd相关的文件

要把vscode改造成可以编译的IDE,需要安装花圈的这几个插件

然后根据参考资料1中正确的将Jlink的驱动进行改造对接openocd之后再进行后续的操作。
注意: 如果进行改造之后,需要还原回Jlink本身的驱动,只需要去设备管理器将对应Jlink链接Openocd的"BULK interface"驱动,卸载掉,然后重新插拔Jlink就可以还原回去。

这里我分享下我目前使用的vscode工程的三个重要的配置文件

settings.json

launch.json

c_cpp_properties.json

settings.json

bash 复制代码
{
    "C_Cpp.intelliSenseEngineFallback": "Enabled",
    "C_Cpp.intelliSenseEngine": "Tag Parser",
    "cortex-debug.variableUseNaturalFormat": false,
    "C_Cpp.dimInactiveRegions": true,
    "C_Cpp.inactiveRegionOpacity": 0.55
        "cortex-debug.liveWatchRefreshRate": 500,
    "cortex-debug.armToolchainPath": 填写你的交叉编译器bin文件夹的绝对路径,
    "cortex-debug.openocdPath.windows": 填写你的openocd.exe的绝对路径,
    "cortex-debug.objdumpPath.windows":填写你的交叉编译器的objdump.exe的绝对路径,
    "cortex-debug.gdbPath.windows":填写你的交叉编译器的gdb.exe的绝对路径,
    "mcu-debug.peripheral-viewer.svdPathConfig": "",

}

launch.json

bash 复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "这里写你编译出来的elf文件的相对路径",
            "name": "Debug Microcontroller",
            "request": "launch",
            "type": "cortex-debug",
            "showDevDebugOutput": "raw",
            "interface": "swd",
            "runToEntryPoint": "main",
            "device": "这里写你的芯片型号,例如STM32F103ZI",
            "svdPath": "这里写对应你的芯片的svd文件[用来看芯片外设寄存器]的路径,svd文件可以在openocd的压缩包里找到或者对应厂家的编译器环境里找到",
            "servertype": "openocd",
            "configFiles": [
                "这里写对应你的进行调试所使用的openocd配置文件的名字,这个配置cfg文件最好放在本工程的根目录下"
            ]
        }
    ]
}

c_cpp_properties.json

bash 复制代码
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/inc/**",
				这里逐条写你需要include的文件夹在本工程的相对路径
            ],
            "defines": [
				这里写你需要define的宏定义
            ],
            "compilerPath": 这里写你使用的编译器的绝对路径,例如使用arm-none-eabi-gcc.exe,就写它的绝对路径
            "intelliSenseMode": "${default}",
            
            "browse": {
                "limitSymbolsToIncludedHeaders": true
                
            }
            
        }
    ],
    "version": 4
}

然后完成这些之后

应该在"运行和调试"那里会多一个选项出来

每次点这里进调试。

然后有可能出现的问题
它提示运行错误,GCC版本要大于8
这个是这个Cortex-debug的插件目前对于编译器的版本要求,目前直接安装的插件版本是最新的,如果实在不能换编译器,可以百度下如何下载旧版本的vscode插件,要V1.5以下版本的插件才行.

相关推荐
【0931】3 分钟前
51单片机中断
单片机·嵌入式硬件
学习噢学个屁1 小时前
基于51单片机的超声波液位测量与控制系统
c语言·单片机·嵌入式硬件·51单片机
电鱼智能的电小鱼2 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼2 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
车载诊断技术3 小时前
不同ECU(MCU/ZCU/CCU)其部署(实现)的功能存在差异
单片机·嵌入式硬件·架构·汽车·电子电器架构·软件定义汽车的电子/电气
美好的事情总会发生3 小时前
32.768kHz晶振详解:作用、特性及与其他晶振的区别
嵌入式硬件·硬件工程·智能硬件
国科安芯5 小时前
面向高性能运动控制的MCU:架构创新、算法优化与应用分析
单片机·嵌入式硬件·安全·架构·机器人·汽车·risc-v
电鱼智能的电小鱼8 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
Neil今天也要学习8 小时前
永磁同步电机控制算法-VF控制
单片机·嵌入式硬件
狄加山6759 小时前
STM32 I2C总线通信协议
stm32·单片机·嵌入式硬件