如何在Linux上使用WchLink+Openocd调试RP2040系单片机

0.前言
最近在制作基于rp2040芯片的音游控制器,从某控制器交流群的大佬口中得知arm系的单片机可以使用调试器,于是就自己买来了一个wchLink准备研究(如图)
我实际上还用不上调试器,因为现在在用MicroPython(((

又从网上得知了OpenOCD这个开源的调试软件。
我使用的系统是Linux,但是网上的Linux上使用openocd+wchlink的资料少之又少,而且多半围绕着专有软件(就是你MRS)
但是openOCD需要一些特殊配置才能运行,所以折腾了很久才搞明白(感谢群内CafuuChino大佬的帮助)
这个教程应该适用于所有的支持SWD下载调试的arm单片机
有建议和疑问欢迎在评论区提出

1.你需要什么
一个wchlink调试器
一台Linux系统的电脑(我这里以Debian为例)
一个基于rp2040的开发板
一些杜邦线
手&脑子&眼睛以及不怕折腾的精神
2.安装openOCD&Git
打开终端模拟器输入:
sudo apt install openocd git -y
等待apt安装完毕后进入下一步
3.克隆OpenOCD的源码仓库
为什么要克隆源码?因为我不知道apt安装的OpenOCD的cfg文件在哪(或者根本没有))
我建议你cd一个方便的路径来克隆源码
终端模拟器输入以下命令克隆
git clone https://github.com/raspberrypi/openocd
这里克隆的是树莓派官方的opencod源码,可以调试rp2040的单个核心(因为wchlink不能多重调试)
4.获取wchLink的VID和PID
插入wchLink到电脑后终端执行
lsusb
得到像下面的输出

其中“QinHeng Electronics WCH-Link”就是我们的wchLink设备
我们需要知道它的VID和PID(每个wchLink的都不一样所以别照抄)

所以VID就是:1a86
PID就是:8012
我们还需要在它们前面添加“0x”
所以最终得到VID:0x1a86 PID:0x8012
5.连接硬件&配置OpenOCD并启动
首先cd到第3步克隆的源码的根文件夹下
然后连接wchLink和rp2040开发板
wchLink的SWDIO连接rp2040开发板的SWD接口
wchLink的SWCLK连接rp2040开发板的SWCLK接口
以及把两者的GND和3v3相互连接起来
最后wchLink插入电脑
然后终端模拟器输入
sudo openocd -c 'adapter driver cmsis-dap' -c 'cmsis_dap_vid_pid VID PID' -f tcl/target/rp2040-core0.cfg
其中VID和PID需要替换成上一步中最后得到的
rp2040-core0.cfg是选择调试哪个核心用的配置文件,这里是调试第一个核心(还有rp2040-core1.cfg,调试第二个核心,但是rp2040.cfg不能使用,因为wchLink不支持多重调试,如果你有像jlink之类的支持多重调试的调试器就能用)
如果一切顺利的话你会得到不含ERROR的终端输出,这意味着OpenOCD配置完毕并启动了(如图)
如果出现“Error: Error connecting DP: cannot read IDR”则证明wchLink与开发板的连接有问题

然后你就可以使用telnet或者其他的工具连接OpenOCD进行调试了
具体方法/指令还请百度

