NuttX V10.1.0:基于VScode+JLink(swd)+openocd的stm32f4在线调试环境搭建

本文档详细介绍了如何使用VSCode结合Cortex-Debug、OpenOCD和GDB调试STM32F411CEU6微控制器的NuttX操作系统。内容包括前提条件(VSCode插件、工具链、NuttX源码等)、测试OpenOCD和GDB、VSCode环境配置以及在线调试步骤,旨在帮助开发者实现高效的STM32开发和调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

参考链接:

一、前提

二、测试openocd 、gdb

三、VSCode环境配置

四、在线调试


参考链接:

vscode + cortex-debug,stm32 开发更有趣了 - 知乎 (zhihu.com)

(4条消息) STM32开发之 VS Code + GDB下载调试_夏沫的杂物间-CSDN博客

开源调试软件OpenOCD调试stm32 - 知乎 (zhihu.com)

(4条消息) NuttX的应用记录 4 (小记录)_Godenfreemans的博客-CSDN博客

一、前提

1、vscode 扩展

  • C/C++  v1.8.4

  • Cortex-Debug  v1.2.2

  • Cortex-Debug: Device Support Pack - STM32F1 V1.0.0

  • Cortex-Debug: Device Support Pack - STM32F4 V1.0.0

  • gnu-debugger v1.0.4

2、工具

  • openocd v0.10.0 : sudo apt-get install openocd

  • GDB 工具链

3、NuttX V10.1.0

4、JLink v9 盗版

5、mcu:stm32f411ceu6

二、测试openocd 、gdb

Debugging — NuttX latest documentation (apache.org)

        根据NuttX官网上的Debugging指南,它使用的是openocd与gdb进行调试,可以先根据官方上的指南对openocd与gdb来进行测试看我们安装是否成功。

        1、(默认此时已经clone了NuttX的源码并且能过正常编译)进入到menuconfig,开启debug必要的选项。Build Setup → Debug Options

        2、编译测试$make clean; make -j32

         编译成功

        3、官网是使用stlink-v2仿真器来使用openocd进行调试的,我使用过手头两个盗版U盘大小的stlinkv2都无法正常打开openocd。使用了盗版jlink v9则可以正常使用openocd。        

注:jlink与stm32f411是通过swd进行连接

        默认安装的openocd中jlink的interface配置文件是不支持使用swd模式的,我们需要新建一个配置文件

$ cd /usr/share/openocd/script/interface
$ cp jlink.cfg jlink_swd.cfg                  
$ vi jlink_swd.cfg

         接下来是跟着官方操作

在终端1中:

$ openocd -f interface/jlink_swd.cfg  -f  target/stm32f4x.cfg

在终端2中:

$ cd {nuttx目录}
$ gdb-multiarch  nuttx/nuttx            //进入gdb
(gdb) target extended-remote :3333        //在gdb命令行中,连接gdb服务器

         键入上面的命令后,终端1会显示accepting 'gdb' connection on tcp/3333,表示gdb已经成功连接上,即openocd与gdb都安装成功能正常使用。

   进行下面的步骤时,需要把openocd 、 gdb都退出。

三、VSCode环境配置

        1、首先把nuttx源码添加到VScode

        2、把   一、前提   中VScode的插件全部装上。

        3、在资源管理器中, .vscode目录下新建或修改launch.json、task.json这两个配置文件。

launch.json(文件名)

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",

    "configurations": [
        {
            "name": "(gdb) nuttx",              // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cortex-debug",             // 配置类型,这里使用拓展cortex-debug
            "request": "launch",                // 请求配置类型,可以为launch(启动)或attach(附加)
            "servertype": "jlink",              //
            //"program": "System.map",          // 将要进行调试的程序的路径
            "executable": "${workspaceRoot}/nuttx/nuttx/nuttx",     // 指定编译出来的nuttx文件
            "device": "STM32F411CE",            // 指定mcu
            "interface": "swd",                 // 指定调试模式
            "ipAddress": null,
            "serialNumber": null,
            "args": [],                         // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false,                //如果设置为true,调试器应该在目标的入口点停止(在附加时忽略)。默认值为false。
            "cwd": "${workspaceRoot}",          // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
            "environment": [],                  // 当前项目环境变量
            "externalConsole": false,
            "MIMode": "gdb-multiarch",          // 调试器模式/类型
            
            //"showDevDebugOutput": "true",     //打开调试信息,建议关闭


            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
            
        }
    ]
}
task.json(文件名)

{
    "dependsOn":"Build",            // 任务依赖
    "label": "Build and Download",  // 编译任务名
    "type": "shell",                // 编译任务的类型,通常为shell/process类型
    "command": "openocd",           // 编译命令
    "args": [                       // 调用openocd时使用的参数,制定interface
    "-f",
    "interface/jlink_swd.cfg",
    "-f",
    "target/stm32f4x.cfg",
    "-c",
    "program ./nuttx/nuttx.hex verify reset exit"
    ],
    "problemMatcher": []
}

四、在线调试

        1、打开VScode的运行与调试功能,点击(gdb)nuttx的绿色三角形,即可开始在线调试。

        2、可以愉快的进行调试了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值