【教學/基礎】使用 Raspberry Pi Debug Probe 對 Pico 進行偵錯 | Debug Probe 教學
Last Updated on 2023 年 3 月 24 日 by 小編
內容目錄
Debug Probe 樹莓派偵錯器 內容物
- Raspberry Pi Debug Probe(含塑膠外殼)x1
- Raspberry Pi USB microB Cable(一米)x1
- 3-pin JST 接頭轉 3-pin JST 接頭(15cm)x1
- 3-pin JST 接頭轉杜邦母頭(15cm)x1
- 3-pin JST 接頭轉杜邦公頭(15cm)x1
排線顏色意義說明
- 橙色: TX/SC (Output from Probe)
- 黑色: GND
- 黃色: RX/SD (Input to Probe or I/O)
Debug Probe 外觀和燈號意義
Debug Probe 使用 3.3V 準位的 I/O,工作電壓是 5V。Debug Probe 共有五個 LED,分別是顯示 電源、 TX 、 RX 、 DAP 目標連接、 DAP 執行 等功能。
Debug Probe 和 Pico 接線
Debug Probe 上方的 microUSB 接到電腦。左下方的 UART 排線接到 Pico 的 UART 腳位。 Debug Probe 右下方的 SWD 使用排線接到 Pico 的 Debug 腳位。當然 Pico 也要透過 microUSB 供電才能工作。
電腦 和 Debug Probe 和 Pico 完整接線
安裝軟體(以 Raspberry Pi 為例)
OpenOCD 是什麼 ?
OpenOCD (Open On-Chip Debugger) 是一套開源軟體,用於嵌入式系統中進行偵錯 (debug)、在線燒錄 (in-system programming) 和邊界掃描測試 (boundary-scan testing tool) 等。它支援多種架構,例如 ARM、MIPS、AVR 和 x86 系統等。OpenOCD 可以通過 JTAG/SWD 和存取硬體,並提供一個命令列界面和一個 GDB 介面,方便在開發過程中進行單步執行、斷點偵錯、記憶體檢視和修改等操作。此外,OpenOCD 還提供了多種插件 (plugin) 和腳本 (script),可用於自動化測試、效能分析、能源管理等工作。
step 1
在 Raspberry Pi 安裝 OpenOCD
$ sudo apt-get update $ sudo apt-get install automake autoconf build-essential texinfo libtool libftdi-dev libusb-1.0-0-dev $ cd ~ $ git clone https://github.com/raspberrypi/openocd.git --branch rp2040 --depth=1 --no-single-branch $ cd openocd $ ./bootstrap $ ./configure --enable-sysfsgpio --enable-bcm2835gpio $ time make -j4 $ sudo make install
step 2
在 Raspberry Pi 安裝 Pico SDK
$ cd ~ $ git clone https://github.com/raspberrypi/pico-sdk $ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh $ chmod +x pico_setup.sh $ ./pico_setup.sh $ sudo reboot
step 3
在 Raspberry Pi 安裝 GDB
$ sudo apt-get install gdb-multiarch
開始使用 Debug Probe 偵錯 hello_world
step 1
編譯 pico-examples 的 hello_world
$ cd ~/pico/pico-examples $ mkdir build $ cd build $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ cd hello_world $ make -j4
step 2
透過 OpenOCD
直接上傳 ELF
檔案到 pico
,不需要再按 BOOTSEL
按鍵,指令如下。
# openocd -f <interface-config-file> -f target <target-config-file> -c <command>
假設 OpenOCD
的設定檔在 ~/openocd/tcl
,要偵錯的 hello_serial.elf
在 /home/pi/pico/pico-examples/build/hello_world/serial
,因此上傳檔案的完整指令為。
$ cd ~/openocd/tcl $ sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000; targets rp2040.core0; program /home/pi/pico/pico-examples/build/hello_world/serial/hello_serial.elf verify reset exit"
step 3
hello_world
範例完整程式碼如下,Pico 會透過序列埠每一秒印出 Hello, world!
訊息。
#include <stdio.h> #include "pico/stdlib.h" int main() { stdio_init_all(); while (true) { printf("Hello, world!\n"); sleep_ms(1000); } return 0; }
如果要讀取 Hello, world!
訊息,需要先安裝類似 minicom
的終端機軟體。
$ sudo apt-get install minicom
安裝完成,直接開啟 minicom
並指定正確的序列埠裝置和相關參數就可以了。
$ minicom -b 115200 -o -D /dev/ttyACM0
如果要離開 minicom
,可以使用 ctrl + a
加上 q
離開。
step 4
這時候就可以執行 OpenOCD server 去連上 GDB
。
$ cd ~/openocd/tcl $ sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"
step 5
開啟另一個終端機視窗,進入到要偵錯的 elf
目錄,執行 GDB
$ cd ~/pico/pico-examples/build/hello_world/serial $ gdb hello_serial.elf
step 6
因為要遠端偵錯,因此需要先連上遠端的 GDB Server
後,再使用 GDB
指令偵錯。
(gdb) target remote localhost:3333
step 7
使用 load
指令將 hello_serial.elf
載入到 flash。
(gdb) load
step 8
根據 OpenOCD 手冊,如果要透過 GDB
發出命令,需要使用 monitor
作為開頭。因此要開始使用 GDB
進行端偵錯,需要先立即停止目標,並執行 reset init。
(gdb) monitor reset init
step 9
如果我們要對 main
函式進行偵錯,可以透過指令 break main
或是簡寫的 b main
設定中斷點 (breakpoint),並開始執行,程式將會停在 main
函式的第一行 stdio_init_all();
。
(gdb) break main (gdb) continue
step 10
之後就可以使用 GDB
指令對程式進行單步執行、設定斷點、觀察暫存器的值等等偵錯功能。
常用的一些 GDB
指令如下,也可以參考 透過 GDB 進行遠端除錯、通過GDB 學習C 語言、基本 gdb。
GDB 指令(中括號表示可加的參數) | 意義 |
---|---|
run [args] | 開始執行 |
start [args] | 開始執行(並自動在 main break) |
break [line/functoin] | 設定 breakpoint |
break [condition] | 在條件成立時中斷 |
continue | 執行到被中斷為止 |
next | 單步執行(不會進入到 function) |
step | 單步執行(會進入到 function) |
list [line/function] | 列出程式碼 |
print [exp] | 顯示 expression 的值 |
print [var=val] | 即時修改變數的值 |
backtrace | 顯示目前堆疊(stack)狀況(堆疊追蹤) |
frame | 顯示目前區塊(frame)狀況 |
樹莓派偵錯器 Debug Probe 參考資料
- 【新聞】樹莓派偵錯器 Raspberry Pi Debug Probe
- Raspberry Pi Debug Probe: a plug-and-play debug kit for $12
- Getting Started With Pico
- Raspberry Pi Debug Probe
- Raspberry Pi 3-pin Debug Connector Specification
馬上購買 Raspberry Pi Debug Probe 、 Pico W 、 Pico H 、 Pico
-
RaspberryPi, 品牌商品, 工具, 樹莓派 Raspberry Pi, 配件
Raspberry Pi Debug Probe | 樹莓派官方原廠偵錯器 | RP2040
NT$420 未稅加入購物車Quick View -
Pico, Raspberry Pi, RaspberryPi, 品牌商品, 樹莓派 Raspberry Pi, 開發板
Raspberry Pi Pico W 開發板 | Pico Board | RP2040
NT$220 – NT$270 未稅選擇規格Quick View -
Pico, Raspberry Pi, RaspberryPi, 樹莓派 Raspberry Pi
Raspberry Pi Pico H 開發板(已銲排針) | Pico Board | RP2040
NT$190 未稅加入購物車Quick View -
Pico, Raspberry Pi, RaspberryPi, 樹莓派 Raspberry Pi
Raspberry Pi Pico 開發板 | Pico Board | RP2040
NT$143 – NT$189 未稅選擇規格Quick View
發佈留言