如何在Linux上使用WchLink+Openocd調試RP2040系單片機

0.前言
最近在制作基于rp2040芯片的音游控制器,從某控制器交流群的大佬口中得知arm系的單片機可以使用調試器,于是就自己買來了一個wchLink準備研究(如圖)
我實際上還用不上調試器,因為現在在用MicroPython(((

又從網上得知了OpenOCD這個開源的調試軟件。
我使用的系統(tǒng)是Linux,但是網上的Linux上使用openocd+wchlink的資料少之又少,而且多半圍繞著專有軟件(就是你MRS)
但是openOCD需要一些特殊配置才能運行,所以折騰了很久才搞明白(感謝群內CafuuChino大佬的幫助)
這個教程應該適用于所有的支持SWD下載調試的arm單片機
有建議和疑問歡迎在評論區(qū)提出

1.你需要什么
????一個wchlink調試器
????一臺Linux系統(tǒng)的電腦(我這里以Debian為例)
????一個基于rp2040的開發(fā)板
????一些杜邦線
????手&腦子&眼睛以及不怕折騰的精神
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到電腦后終端執(zhí)行
????lsusb
得到像下面的輸出

其中“QinHeng Electronics WCH-Link”就是我們的wchLink設備
我們需要知道它的VID和PID(每個wchLink的都不一樣所以別照抄)

所以VID就是:1a86
PID就是:8012
我們還需要在它們前面添加“0x”
所以最終得到VID:0x1a86? PID:0x8012
5.連接硬件&配置OpenOCD并啟動
首先cd到第3步克隆的源碼的根文件夾下
然后連接wchLink和rp2040開發(fā)板
????wchLink的SWDIO連接rp2040開發(fā)板的SWD接口
????wchLink的SWCLK連接rp2040開發(fā)板的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與開發(fā)板的連接有問題

然后你就可以使用telnet或者其他的工具連接OpenOCD進行調試了
具體方法/指令還請百度

