树莓派调试套件(Raspberry Pi Debug Probe)
最后更新于
最后更新于
FreeBSD 中文社区 2024
树莓派调试套件是一款提供了 UART 串口和标准 Arm 串行线调试(SWD)接口的 USB 设备。该调试器设计用于简单、无需焊接的即插即用调试。它具有以下功能:
USB ARM 串行线调试(SWD)接口
USB 串口桥接器
兼容 CMSIS-DAP 标准
与兼容 CMSIS-DAP 的 OpenOCD 和其他工具搭配使用
易升级的开源固件
注意
有关树莓派三针调试连接器的更多信息,请参阅规格书。
这使得在 Windows、macOS 和 Linux 等没有 GPIO 引脚来直连 Pico 串口或 SWD 接口的设备也可轻松使用树莓派 Pico。
调试器在 3.3V 容忍 I/O 电压下运行。
调试器附带一根 USB 线和三根调试线:
三针 JST-SH 连接器到 3 针 JST-SH 连接器电缆
三针 JST-SH 连接器到 0.1 英寸排针(母)
三针 JST-SH 连接器到 0.1 英寸排针(公)
两根 0.1 英寸排针电缆 — 用于面包板(公头)或直接连接到带排针的板上(母头) — 颜色如下:
橙色 TX/SC(调试器输出)
黑色 GND
YellowRX/SD(输入到调试器或 I/O)
带有三针 JST-SH 连接器的电缆旨在与较新的树莓派主板用于 SWD 调试端口和 UART 连接器的标准三针连接器一起使用。
调试器有五个 LED 灯:一个是红色 LED 电源指示灯,另外四个是状态指示灯。
注意
当目标连接时,OpenOCD 会同时打开 DAP 的两个 LED,并在调用 DAP_DISCONNECT 时将它们关闭。
根据你的设置,有不同的方法可以将调试器连接到树莓派 Pico。在下面的示例中,我们将调试器连接到具有更新的三针 JST-SH 连接器用于 SWD 的树莓派 Pico H。
连接以下内容:
将调试器“D”接口连接到 Pico H SWD JST-SH 连接器
将调试器“U”接口,带有三针 JST-SH 连接器连接到 0.1 英寸排针(公头):
调试器 RX 连接到 Pico H TX 引脚
调试器 TX 连接到 Pico H RX 引脚
调试器 GND 连接到 Pico H GND 引脚
注意
如果你有非 H Pico 或 Pico W(没有 JST-SH 连接器),你仍然可以将其连接到调试器。在板上的 SWCLK,GND 和 SWDIO 引脚上焊接一个公连接器。使用随调试器附带的备用 3 引脚 JST-SH 连接器到 0.1 英寸排针(母)电缆,连接到调试器的“D”端口。分别将 Pico 或 Pico W 上的 SWCLK,GND 和 SWDIO 连接到调试器上的 SC,GND 和 SD 引脚。
要使用调试器,需安装以下工具。
你需要安装 OpenOCD。
要安装 OpenOCD,请在终端中运行以下命令:
在终端中使用 openocd 命令来运行 OpenOCD。
首先,安装包管理器 Homebrew:
在 macOS 上安装 OpenOCD,请运行以下命令:
要运行 OpenOCD,请在终端中使用 openocd 命令。
我们还需要安装 GNU 调试器 (GDB)。
安装 gdb-multiarch :
运行以下命令安装 gdb :
你可以安全地忽略安装过程中关于“特殊权限”请求的消息。
重要
GDB 不支持 gdb Arm-based Macs。因此,要么从源代码编译
gdb
,要么使用lldb
来代替gdb
。开发者没有为在 Arm-based Macs 上运行 GDB 提供官方支持。可以在 Sourceware.org 的 GDB 邮件列表中找到有关 GDB 的支持。lldb 可作为 Xcode 命令行工具的一部分进行安装。
GDB 包含在我们的 Pico Windows 安装程序中。它也包含在 Arm GNU Toolchain Downloads 中。
或者,你可以在我们的《树莓派 Pico 入门指南》第 9 章和附录 A 中找到有关手动安装的信息。
注意
不建议在 Windows 上手动安装 GDB。
串行线调试(Serial Wire Debug,SWD)是一种两引脚接口(SWDIO 和 SWCLK),可替代 JTAG 四或五引脚调试接口标准。
Pico 调试器可使你通过 SWD 接口和 OpenOCD 来加载二进制文件:从而无需在每次将新二进制文件推送到 Pico 后拔下,然后按住 BOOTSEL 按钮这些操作。使用调试器上传新的二进制文件是完全自动化的。
假如你构建了一个二进制文件:
注意
当你使用调试器上传二进制文件时,使用的是文件的 ELF 版本,而不是你在拖放时使用的 UF2 文件。
它还将让你在服务器模式下使用 openocd,并连接 GDB,这将为你提供断点和“正确”的调试。
在调试构建中,当你在调试器下运行时,你将获得更多信息,因为编译器会使用信息构建你的程序,以告诉 GDB 你的程序正在做什么。
有关更多信息,请参阅《树莓派 Pico 入门指南》第 6 章。
要启动 OpenOCD 服务器,请运行以下命令:
然后打开第二个终端窗口,切换到包含你构建的二进制文件的目录,并启动调试器以将其附加到 OpenOCD 服务器:
GDB 不适用于所有平台。根据你的操作系统和设备,请使用以下替代方案取代 gdb :
在非树莓派设备上使用 gdb-multiarch
。
在基于 Arm 的 macOS 设备上使用 lldb
。
确保调试器连接到了你树莓派 Pico 的 UART 引脚。
树莓派 Pico UART0 的默认引脚如下:
在连接后,树莓派 Pico 的 UART 上的流量将通过调试器中继到你的计算机,并显示为 CDC UART。在树莓派上,显示为 /dev/ttyACM0;在其他平台上,此串口将以不同方式显示(例如,在 macOS 上,显示为 /dev/cu.usbmodemXXXX )。
如果你尚未安装 minicom,请执行以下操作:
并打开串口:
技巧
要退出 minicom,请按 CTRL-A,然后按 X 键。
要测试串行通信,你可以构建并上传“Hello World”示例应用程序。
进入 pico-examples 树中的 hello_world 目录,并运行 make。之后,你可以使用 openocd 将其上传到你的树莓派 Pico。要了解构建 hello_serial 示例程序的完整步骤,请参阅《开始使用树莓派 Pico》第 4 章。
打开 minicom 后,应该在控制台上看到打印出了"Hello, world!"。
对于支持的终端程序,USB 串行 UART 的描述会在 USB 设备描述中进行广告。
此描述中的唯一序列号意味着在 Windows 上,你的 COM 端口编号是"粘性"的每个设备,并且将允许你编写 udev 规则以将命名设备节点与特定的调试器绑定起来。
调试器固件以 UF2 文件的形式由树莓派分发。
调试器固件的最新版本是版本 2。如果你正在运行旧版,或者如果你意外地覆盖了调试器的固件,你可以在 debugprobe GitHub 存储库中找到最新版本的固件。
从最新版本下载 debugprobe.uf2。
捏住调试器外壳顶部以拆除。
在将调试器插入计算机时按住 BOOTSEL 按钮,以挂载名为“RPI-RP2”的卷。
将 debugprobe.uf2 复制到 "RPI-RP2" 卷。文件复制到设备后,将自动卸载设备。
你的调试器将重启,现在运行更新版本的调试器固件。现在已准备好进行调试了。
调试器的原理图和机械图纸可用:
原理图(PDF)
机械图(PDF)
原理图上显示的测试点(TP)位于下图所示位置。
默认 UART0 | 物理引脚 | GPIO 引脚 |
---|---|---|
GND
3
不适用
UART0_TX
1
GP0
UART0_RX
2
GP1