您的位置:首页 > 健康 > 养生 > css字体颜色_汕头seo排名公司_网络平台怎么推广_班级优化大师免费下载学生版

css字体颜色_汕头seo排名公司_网络平台怎么推广_班级优化大师免费下载学生版

2025/4/22 14:33:03 来源:https://blog.csdn.net/weixin_51915497/article/details/147177195  浏览:    关键词:css字体颜色_汕头seo排名公司_网络平台怎么推广_班级优化大师免费下载学生版
css字体颜色_汕头seo排名公司_网络平台怎么推广_班级优化大师免费下载学生版

树莓派Pico C/C++ OpenOCD调试环境搭建(Windows)

参考资料和背景

从上次树莓派Pico C/C++ 开发环境搭建(一键完成版)后,一直想找个合适调试器,最后测试了多种方案,还是使用另一块树莓派pico作为picoprobe 来调试比较方便,其中参考的博客有以下两篇

使用picoprobe调试树莓派PICO(附调试包) - 知乎

Raspberry Pi Debug Probe - Waveshare Wiki

不过完全按照上面两个博客来搭建,可能有bug,至少在我的电脑上行不通😂,所以才有了这篇博客。

openocd调试原理

这里需要说明下 openocd到底是个什么东西,和gdb、cmsis-dap、dap-link之间的关系。

  • openocd: 通常情况下,我们都是使用openocd server,启动openocd作为服务,用于连接通用的调试器gdb和我们插入电脑的硬件调试器(各种link)。
  • gdb:这个应该不用说,C语言常用的调试器,功能强大。
  • cmsis-dap:是arm推出的标准调试接口,支持SWD协议和JTAG协议,可以认为cmsis-dap是一个库,用于写调试器的库。使用这个库最通用的硬件就是dap-link。

只是我们平时使用的ide将openocd和gdb这两个东西结合在一起了。像keil,我们只需要直接在在debug窗口看看有没有我们的调试插入,选择调试的ID就可以了。

所以,使用openocd调试的过程,大概就是

  1. 将调试器接入(这里使用的是picoprobe),并安装对应的驱动。
  2. 启动openocd,他会监听loaclhost:3333这个端口,这个端口用于给调试器访问,如gdb。
  3. 启动gdb给我们要调试的目标开发板(这里是pico)刷写入elf文件,并开始调试。

搭建openocd调试教程

首先第一步插入硬件调试器

我们需要有一个硬件调试器,所以我们需要制作一个picoprobe,只需要连接上一个树莓派pico,将下面的uf2文件拖入即可。

uf2文件可以从树莓派pico-debug-probe的仓库中获取(这里尽量不要使用最新的release版本,据我测试,最新的release版本插入电脑作为cmsis-dapv2设备),而使用较低的版本会显示pico-probe,显示为cmsis-dap设备会对openocd的版本要求比较高。如果不确定用那个,也可以直接下载我文末的压缩包(免积分!!!)里面有一个uf2文件。

image-20250409235615144

注意,如果电脑没有显示上图的Picoprobe设备的话,而是在设备上有个⚠的话,需要先安装下驱动,在文末压缩包里的drivers文件下有一个 zadig-2.7.exe文件,运行安装就可以。

启动openocd server

因为是在windows下的环境,所以自然需要windos下的openocd,但一个尴尬的情况是,在linux下基本上找不到的软件就直接下载源码进行编译了,但windows下编译很麻烦,所以,这里提供一个网站可以直接下载编译好能够在windows下运行的openocd软件。

Download OpenOCD for Windows

我这里直接下载最新版了,不想下载的文末的压缩包也有。

之前那篇博客一键安装好的环境中有openocd文件,但那个应该不是window下可运行的openocd,至少我试着运行失败了😭。

而关于,需不需要将openocd文件夹添加到环境变量,这个就因人而异了,我对于这些可能用到多个版本的软件,我自己更习惯在命令行中使用时直接指定绝对路径(我一般也会在下载时把它放在一个比较短的路径中,方便使用)。

在下载的openocd压缩包解压后的文件中打开powershell,运行以下命令

.\bin\openocd.exe -f .\share\openocd\scripts\interface\picoprobe.cfg -f .\share\openocd\scripts\target\rp2040.cfg -c "adapter speed 5000"

image-20250411221302641

出现上图就说明openocd已经成功连接到我们插入电脑的picoprobe了,并且在监听3333端口。

这里说下上面命令啥意思吧

.\bin\openocd.exe 指定运行的软件路径

-f .\share\openocd\scripts\interface\picoprobe.cfg 指定使用的调试器的配置文件,这里使用picoprobe

-f .\share\openocd\scripts\target\rp2040.cfg 指定我们调试的目标板,这里我们调试rp2040,也就是pico

-c "adapter speed 5000" 指定通信速率

启动gdb开始调试

在上次搭建好的环境下找到build文件夹,运行微雪电子博客中命令,大概可以看到以下输出

image-20250412120839587

同样解释下命令吧

arm-none-eabi-gdb .\ProjectTest.elf 启动gdb调试器,需要注意,后面跟的这个文件必须在该文件夹下有,所以一般就是上次搭建环境中的build文件夹打开powershell就可以了。

GDB启动后的命令

target remote localhost:3333 调试目标不是本机,连接到openocd server

load 加载(刷写)elf文件进pico板子

monitor reset init 重启两个核到debug

continue 这个就是调试中的continue,执行到下一个断点处,但我没打断点,所以代码会一直运行,板子上的灯会开始闪烁。

联合VSCode

上面这样调试还有有些麻烦的,需要先在命令行中启动openocd Server,然后找到elf文件所在的文件夹启动gdb,还需要熟悉gdb的调试指令。通常这个时候就需要搬出“宇宙最强IDE”——VScode🤣🤣

首先,我们要使用Vscode帮助我们完成上面的工作。

原理

运行GDB这个工作需要用插件 Cortex-Debug 来帮我们完成,通过在launch.json中配置调试器type为Cortex-Debug就可以了(当然要先安装这个插件🧐)。

然后,我们还需要一个在启动调试前,先启动openocd server。这里我使用一个tasks.json,并在launch.json中引用它,实现这个功能。

具体操作步骤

  1. 安装Cortex-Debug这个插件,在vscode打开树莓派pico工程目录,打开.vscode目录下的luanch.json 没有的话,就新建一个,写入如下

    {"version": "0.2.0","configurations": [{"name": "Pico Debug","type": "cortex-debug","preLaunchTask": "Start OpenOCD Server",  // 引用tasks.json中的任务"cwd": "${workspaceRoot}","executable": "${command:cmake.launchTargetPath}","request": "launch","servertype": "external","gdbPath": "arm-none-eabi-gdb","gdbTarget": "localhost:3333","svdFile": "${env:PICO_SDK_PATH}/src/rp2040/hardware_regs/rp2040.svd","runToMain": true,"postRestartCommands": ["break main","continue"]}]
    }
    
  2. 在.vscode下打开task.json 文件,没有的话,也是新建一个就可以,写入如下:(注意下自己openocd的路径)

    {"version": "2.0.0","tasks": [{"label": "Start OpenOCD Server","type": "shell","command": "D:\\OpenOCD\\OpenOCD20240916\\bin\\openocd.exe","args": [ //自己不喜欢加环境变量,所以都使用绝对路径,更换成自己的openocd路径就可以"-f", "D:\\OpenOCD\\OpenOCD20240916\\share\\openocd\\scripts\\interface\\picoprobe.cfg","-f", "D:\\OpenOCD\\OpenOCD20240916\\share\\openocd\\scripts\\target\\rp2040.cfg","-c", "adapter speed 5000"],"isBackground": true,// 移除或简化problemMatcher(避免语法冲突)"problemMatcher": []  // 留空或直接删除该字段}]
    }
    

可能出现的警告

image-20250412122708477

如上图,openocd server已经成功启动了,但终端退出要执行gdb时出现的一个警告,选择Debug Anyway 就可以。

image-20250412123003006

可以看到调试器成功启动了,而且信息很丰富,可以开始愉快的玩耍了😉
调试压缩包链接:https://download.csdn.net/download/weixin_51915497/90604382

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com