Slide 1

Slide 1 text

1 Raspberry Pi Debug Probe sosorry 2023/03/27 @Raspberry Pi Meetup #36

Slide 2

Slide 2 text

姓名標示 — 非商業性 — 相同方式分享 CC (Creative Commons) 姓名標示 — 你必須給予 適當表彰、提供指向本授權 條款的連結,以及 指出(本作品的原始版本)是否已 被變更。你可以任何合理方式為前述表彰,但不得以 任何方式暗示授權人為你或你的使用方式背書。 非商業性 — 你不得將本素材進行商業目的之使 用。 相同方式分享 — 若你重混、轉換本素材,或依本 素材建立新素材,你必須依本素材的授權條款來 散布你的貢獻物。

Slide 3

Slide 3 text

3 ● Raspberry Pi 官方經銷商 ● 專注 Raspberry Pi 應用與推廣 , 舉辦社群活動 關於我們

Slide 4

Slide 4 text

更多詳細資料 https://piepie.com.tw/26335/tutorial-learning-path-v1

Slide 5

Slide 5 text

5 ● MCU 開發板如何 Debug 軟體 ? ● Raspberry Pi Debug Probe 是什麼 ? ● Demo: 如何使用 Debug Probe 偵錯 大綱

Slide 6

Slide 6 text

6 ● 可用 MicroPython/CircuitPython 開發 ● 可用 C/C++ 開發 , 但每次需編譯成 uf2 格式燒錄 Pico 可使用的開發程式

Slide 7

Slide 7 text

使用 MicroPython 開發

Slide 8

Slide 8 text

8 ● MicroPython 是在微控制器上運作的 Python3 直譯器 ● 最初用在 ARM Cortex-M, 由劍橋大學 Damien George 開發 ● 2013 年 Prof. Damien 設計 pyboard 上架到 Kickstarter ● 2016 年移植 MicroPython 到 ESP8266 模組 MicroPython 歷史 https://www.kickstarter.com/projects/214379695/micro-python-python-for-microcontrollers https://www.kickstarter.com/projects/214379695/micropython-on-the-esp8266-beautifully-easy-iot pyboard ESP8266

Slide 9

Slide 9 text

9 ● MicroPython ≠ Python, 只是長的像而已 ● 但 MicroPython 支援多數的 Python3 語法 ● MicroPython 在不同的硬體支援的語法略有不同 ● MicroPython 不適合有嚴格時序或性能要求的程式 ● MicroPython 可以視為一個迷你的 Python OS Python for Microcontrollers https://techexplorations.com/guides/esp32/micropython-with-the-esp32/1-what-is-micropython/

Slide 10

Slide 10 text

10 使用 Thonny 可單步執行偵錯 https://fedoramagazine.org/learn-code-thonny-python-ide-beginners/

Slide 11

Slide 11 text

使用 C/C++ 開發

Slide 12

Slide 12 text

12 使用 C/C++ 編譯出 uf2 https://www.digikey.com/en/maker/projects/raspberry-pi-pico-and-rp2040-cc-part-1-blink-and-vs-

Slide 13

Slide 13 text

13 按著 BOOTSEL 按鍵並將 Pico 接上電腦 https://core-electronics.com.au/guides/getting-started-with-raspberry-pi-pico/

Slide 14

Slide 14 text

14 MCU 上電後的過程 https://www.microcontrollertips.com/what-happens-when-an-mcu-powers-up/

Slide 15

Slide 15 text

● 只要不在本機端的除錯 , 而是透過 TCP/IP 或是 Serial 的除錯 , 都稱為遠端除錯 遠端除錯 (Remote Debugging) https://developer.tizen.org/dev-guide/2.4/org.tizen.gettingstarted/html/native/process/debugging_app_n.htm

Slide 16

Slide 16 text

● 是一種使用軟體控制偵錯過程 , 但 CPU 並沒有停 止 , 暫存器和程式計數器也是持續改變 On-Chip Debug https://www.eetimes.com/jtag-101-part-1-overview-and-on-chip-debug-methods/

Slide 17

Slide 17 text

On-Chip Debug 的軟硬體環境 https://wiki.st.com/stm32mpu/wiki/GDB

Slide 18

Slide 18 text

● 是專門為 ARM-based MCU 設計的偵錯器! Debug Probe 是什麼 ? https://en.wikipedia.org/wiki/Pulse-density_modulation

Slide 19

Slide 19 text

Debug Probe 外觀和燈號 https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 20

Slide 20 text

Debug Probe 和 Pico 接線 https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 21

Slide 21 text

DEMO

Slide 22

Slide 22 text

https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 23

Slide 23 text

$ gdb hello_serial.elf https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 24

Slide 24 text

(gdb) target remote localhost:3333 https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 25

Slide 25 text

(gdb) load https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 26

Slide 26 text

(gdb) monitor reset init https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 27

Slide 27 text

(gdb) break main https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 28

Slide 28 text

常用 GDB 指令 https://piepie.com.tw/51357/how-to-debug-pico-with-debug-probe

Slide 29

Slide 29 text

29 Raspberry Pi Rocks the World Thanks