|

樹莓派推出12美元Debug Probe除錯探測器

   

作者:陸向陽

Raspberry Pi Debug Probe的電路板(圖片來源:樹莓派官網)

2021年1月樹莓派官方推出獨家微控制器晶片RP2040,並用該晶片推出Raspberry Pi Pico(簡稱RPi Pico)控制板。事隔兩年後,樹莓派官方再次用RP2040晶片來實現新硬體,於2023年2月推出Raspberry Pi Debug Probe,或可譯為樹莓派除錯探針、探測器,建議售價12美元(在此打一下預防針,官方每次都標榜低價,但透過配銷、經銷、零售通路上架後,價格都不是這樣)。

為何樹莓派官方會推出這種新硬體?答案是官方對RPi Pico控制板進行除錯時,作法上就是用一片RPi Pico控制板來對另一片RPi Pico控制板除錯。既然如此,乾脆把另一片RPi Pico控制板改做成除錯專用的硬體,如此就成了RPi除錯探測器。

不過,RPi除錯探測器不是只能給RPi Pico控制板除錯,只要是Arm架構的微控制器晶片所構成的電路板都可以用它來除錯。

低階程式開發必然要用硬體除錯器

所謂除錯,其實就是給程式設一些執行中斷點,以便讓程式執行到中斷點時能暫停一下,然後檢查程式變數的值是否如預期的維持或變化?檢查暫存器或記憶體內的值是否如預期的維持或變化?或者也可以讓程式一行一行慢慢執行來觀察變化,稱為單步除錯,或者是一行一行回退執行,或回退執行到前一個中斷點等,以便更詳細觀察執行歷程。一旦發現執行不如預期,就可以進一步追蹤、檢討,然後修正原本撰寫的程式。

如果是撰寫高階程式語言,例如Python,那本來就有軟體的除錯器可用(執行環境內建除錯功能),不需要硬體的除錯探測器。或者,開發者撰寫的是在作業系統上執行的C語言程式,那也是可以使用純軟體除錯器(例如Linux上的gdb除錯器)。

但是,如果撰寫的是直接跑在硬體上的C語言,沒有作業系統層,也稱為Bare Metal(或稱裸機)運作模式,或者你就是在撰寫一套直接跑在硬體上的作業系統,那就沒有軟體除錯器可用,只能用硬體除錯探測器了。

依循CoreSight、CMSIS-DAP等標準

回到硬體的RPi除錯探測器,其實Arm對所有Arm核心的控制器電路都有設計名為CoreSight的除錯架構,每個控制器核心都有一個存取埠(Access Port, AP),透過對該埠的通訊傳輸,就可以對每個核心設置中斷點、單步執行、觀察暫存器值等。

而一個Arm控制晶片內可能不只一個核心,例如RP2040就有兩個Arm核心,所以有兩個AP,但整個晶片對外只有一個除錯埠(Debug Port, DP),兩個AP會匯集到同一個DP,讓除錯相關通訊透過DP進出。

除錯探測器左邊接個人電腦Host,右邊接要除錯的目標開發板Target(圖片來源:樹莓派官網)

RP2040晶片的DP是透過SWDSerial Wire Debug)的少數接腳(僅3支)來傳輸,用來傳輸SWD協定,而後RPi除錯探測器再運用USB埠將資訊傳遞給電腦,如PCMac或樹莓派等均可,從電腦上觀看執行結果、暫存器值。

USB埠到PC這一段路程走的是Arm制訂的CMSIS-DAP標準,然後電腦上要安裝OpenOCD(Open On-Chip Debugger)之類的除錯軟體,其他除錯軟體也是可以,只要該軟體也支援CMSIS-DAP標準。

另外,我們有時希望電腦端能夠用串列傳輸與目標電路板建立連線,如果電腦端是樹莓派,由於樹莓派本身有GPIO接腳,是可以用UART介面直接連接目標板來實現連線,但若是PC、Mac就沒有外露的GPIO接腳可用,這時若想讓電腦與目標板間建立串列傳輸連線,則可以透過RPi除錯探測器,探測器具有USB-to-UART的傳輸轉換功能,讓PC、Mac也能與目標板建立串列傳輸連線。

由此可知,即便使用者沒有在撰寫低階系統程式,也沒有其他使用除錯探測器的需要,也依然可以買RPi除錯探測器,即單純充當USB轉UART的轉接器來用,價格其實與真的只有USB轉UART功能的轉接器相差無幾。

除錯探測器完整配件內容(圖片來源:樹莓派官網)

蓋上殼蓋的RPi除錯探測器(圖片來源:樹莓派官網)

RPi除錯探測器(左)用灰色SWD線路連接目標板(右)的除錯埠,再用紅黑黃三線提供UART介面連接目標板,讓電腦與目標板建立起串列傳輸連線(圖片來源:樹莓派官網)

開發團隊分工

最後,RPi除錯探測器的專案推動者為James Adams,他也負責設計探測器的硬體電路;軟體方面則由Janathan Bell撰寫,其靈感啟發來自DapperMime專案;至於簡潔的塑膠機構外殼則由John Cowan-Hughes開發,外型藝術設計則為Jack Willis;生產製造的供應鏈主責者為Rose Nott;相關文件則由Alasdair Allan與Andrew Scheller負責編寫。

(責任編輯:謝嘉洵。)

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *