自从树莓派 Pico 和 RP2040 微控制器推出以来,很用户通过一个树莓派 Pico 来调试另一个 Pico 上运行的程序。受到这一趋势的启发,近日,树莓派基金会推出了 Raspberry Pi Debug Probe(树莓派调试器)。该方案本身就是基于 RP2040 的,售价 12 美元。
虽然它是针对 Raspberry Pi Pico 和其他基于 RP2040 的板子设计的,但这个调试探针理论可以用来调试任何基于 ARM 的微控制器(只要这些微控制器提供了一个带有 3V3 I/O 的 SWD 端口)。
前言
编程过程中需要调试,大多数的调试器都提供了一套共同的基本功能(单步、断点、变量和内存的检查),但这些功能的提供方式取决于你选择的语言和操作环境。
也许你使用的是一种高级的解释型编程语言,比如 Python,它的调试功能直接内置于运行环境中;如果你使用的是一种低级的编译编程语言,比如C语言,但你的程序是在 Linux 操作系统下运行的,像 GDB 这样的调试器,可以在你的程序运行时与之互动,以提供 Debug 的能力。
但是,如果你的 C 程序直接在处理器上运行,没有操作系统(这通常被称为裸机操作)呢?又或者你正在编写一个操作系统呢?在这种情况下,你需要一种方法来访问处理器本身所具有的调试能力,这也就是调试探针的作用。
什么是 Debug Probe?
现代化的 ARM 架构控制器,包括树莓派自家的 RP2040,都内置有 ARM 的 CoreSight 调试架构,在芯片上提供有 Access Port(AP)来用于单步,设置断点,观察处理器寄存器的值,并通过处理器的总线接口访问内存和外设。
这些微控制器的外部都会提供一个 Debug Port(DP),让外部设备可以通过这个接口来进行探查,在 Raspberry Pi Debug Probe 上,就带有一个 3 针的 Serial Wire Debug(SWD)接口,用来连接访问芯片的 DP 口,而另一头再通过 USB 接口连接到 PC 或者 Mac,让开发者可以在 Host 这边对芯片进行调试。
Debug Probe 提供了一个 USB 和 SWD 协议之间的桥梁。虽然如果你的主机是树莓派的话,并不严格要求(你可以将目标的 SWD 端口直接连接到树莓派的 GPIO),但通过 USB 连接要方便得多。如果你用的是 PC 或 Mac,USB 甚至是你唯一的选择。
除了用来调试,Raspberry Pi Debug Probe 还可以作为一个 USB 串口转接器来使用,通过 UART 接口在电脑与微型控制器之间建立通讯,在后者上面做调试和诊断,这个用法对于不少喜欢折腾开发板的玩家会很喜欢,相比一些专用的USB串口转接器,Raspberry Pi的这个价格也更便宜。
这个几十元的小工具除了有主体,也附带有配套的连接线,以及一个小外壳,到手自己组装一下就可以用,如果想自己做线的话,可以参考他们的接口文档。感兴趣的朋友们可以期待一下。