跳到主要内容

调试探针Debug-Probe

关于调试探针

调试探针

树莓派调试探针(Debug Probe)是一款 USB 设备,提供 UART 串行端口和标准 Arm 串行线调试 (SWD) 接口。该探针专为方便、无焊、即插即用的调试而设计。它具有以下功能:

  • USB 至 ARM 串行线调试 (SWD) 端口
  • USB 至 UART 桥接器
  • 兼容 CMSIS-DAP 标准
  • 可与 OpenOCD 和其他支持 CMSIS-DAP 的工具配合使用
  • 开源、易于升级的固件
注意

有关树莓派三针调试连接器的更多信息,请参阅规范。

这样就可以在 Windows、macOS 和 Linux 等平台上轻松使用 Raspberry Pi Pico,这些平台缺乏 GPIO 头,无法直接连接到 Pico 的串行 UART 或 SWD 端口。

调试探针

该探针的标称 I/O 电压为 3.3V。

探针

调试探针随附一条 USB 电源线和三条调试线:

  • 三针 JST-SH 连接器转 3 针 JST-SH 连接器电缆
  • 三针 JST-SH 连接器转 0.1 英寸接头(母头)
  • 三针 JST-SH 连接器转 0.1 英寸接头(公头)

两根 0.1 英寸针座电缆的颜色如下--用于面包板(公)或直接连接到带针座针脚(母)的电路板:

橙色
  TX/SC(探针输出)

黑色
  接地

黄色
  RX/SD(探针或 I/O 输入)

而带三针 JST-SH 连接器的电缆则用于 标准三针连接器 ,较新的 Raspberry Pi 板使用这种连接器作为 SWD 调试端口和 UART 连接器。

调试探针有五个 LED 灯,其中一个红色 LED 灯指示电源,另外四个指示活动的 LED 灯分别是

调试LED
注意

OpenOCD 会在目标连接时打开两个 DAP LED 指示灯,并在调用 DAP_DISCONNECT 时关闭它们。

开始

标记接线

根据您的设置,有几种方法可以将调试探针连接到树莓派Pico。下面,我们将调试探针连接到树莓派Pico H,它具有较新的用于 SWD 的三针 JST-SH 连接器。

译注:这里插入Youtube视频

连接以下设备

  • 调试探针 "D "连接器连接 Pico H SWD JST 连接器
  • 调试探针 "U "连接器的三针 JST 连接器与 0.1 英寸针座(公头)连接
    • 调试探针 RX 连接到 Pico H TX 引脚
    • 调试探针 TX 连接到 Pico H RX 引脚
    • 调试探针 GND 连接至 Pico H GND 引脚
注意

如果您拥有非 H 型 Pico 或 Pico W(无 JST-SH 连接器),仍可将其连接至调试探针。将一个公连接器焊接到电路板上的 SWCLKGNDSWDIO 针座引脚上。使用调试探针随附的备用 3 针 JST-SH 连接器转 0.1 英寸接头(母头)电缆,连接至调试探针 "D "端口。将 Pico 或 Pico W 上的 SWCLKGNDSWDIO 分别连接至调试探针的 SCGNDSD 引脚。

标记接线

安装工具

要使用调试探针,请安装以下工具。

安装OpenOCD

您需要安装 OpenOCD。

要安装 OpenOCD,请在终端中运行以下命令:

$ sudo apt install openocd

在 macOS 上安装 OpenOCD

首先,安装 Homebrew 软件包管理器:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

要在 macOS 上安装 OpenOCD,请运行以下命令:

brew install openocd

要运行 OpenOCD,请在终端中使用 openocd 命令。

安装 GDB

我们还需要安装 GNU 调试器 (GDB)。

Linux

安装 gdb-multiarch

$ sudo apt install gdb-multiarch

macOS

运行以下命令安装 gdb

brew install gdb

您可以放心地忽略安装时的 "特殊权限" 请求信息。

重要

GDB 不支持 gdb Arm架构的 Mac。请使用 从源代码安装 gdb 或使用 lldb 代替 gdb。对于在基于 Arm 的 Mac 上运行 GDB,开发人员提供了 非官方支持。在 Sourceware.org 上的 GDB邮件列表 中可以找到对 GDB 的支持。lldb 作为 Xcode 命令行工具的一部分安装。

MS Windows

GDB 可作为 Pico安装程序 的一部分提供。它也包含在 Arm GNU 工具链下载 中。

有关手动安装的其他信息,请参阅 Raspberry Pi Pico 入门 一书的第 9 章和附录 A。

注意

不建议在 Windows 上手动安装 GDB。

串行线调试(SWD)

串行线调试(SWD)是一种双引脚接口(SWDIO 和 SWCLK),可替代 JTAG 四引脚或五引脚调试接口标准。

向Pico上传新程序

Pico 调试探针可让您通过 SWD 端口和 OpenOCD 加载二进制文件:每次向 Pico 推送新的二进制文件时,您无需拔下并按住 BOOTSEL 按钮。使用调试探针上传新的二进制文件完全不需要动手。

构建二进制文件后

sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "program blink.elf verify reset exit"
注意

使用调试探针上传二进制文件时,使用的是 ELF 版本的文件,而不是拖放时使用的 UF2 文件。

使用SWD调试

它还允许你在服务器模式下使用 openocd,并连接 GDB,从而提供断点和 "正确的 "调试。

重要

要进行调试,必须将二进制文件编译为 Debug 而非 Release 编译类型,例如

cd ~/pico/pico-examples/
rm -rf build
mkdir build
cd build
export PICO_SDK_PATH=.../../pico-sdk
cmake -DCMAKE_BUILD_TYPE=Debug .
cd blink
make -j4

在调试编译中,当你在调试器下运行程序时会得到更多信息,因为编译器在编译程序时会告诉 GDB 你的程序在做什么。

更多信息,请参阅《树莓派Pico 入门》第 6 章。

要启动 OpenOCD 服务器,请运行以下命令:

sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000"

然后打开第二个终端窗口,切换到包含已构建二进制文件的目录,并启动调试器将其连接到 OpenOCD 服务器:

$ gdb blink.elf
> target remote localhost:3333
> monitor reset init
> continue

GDB 并不适用于所有平台。请根据您的操作系统和设备,使用以下替代方案之一来代替 gdb

  • Raspberry Pis 的 Linux 设备上,使用 gdb-multiarch
  • 在基于 Arm 的 macOS 设备上,使用 lldb

串行连接

确保调试探针与树莓派Pico的 UART 引脚相连。

接线

树莓派Pico UART0 的默认引脚如下:

默认 UART0物理引脚GPIO 引脚
GND3N/A
UART0_TX1GP0
UART0_RX2GP1

连接后,树莓派Pico的 UART 通信将由调试探针转发到计算机,并显示为 CDC UART。在树莓派上,该串口显示为 /dev/ttyACM0;在其他平台上,该串口将以不同方式显示(例如,在 macOS 上显示为 /dev/cu.usbmodemXXXX)。

如果尚未安装 minicom,则应安装:

sudo apt install minicom

并打开串行端口:

minicom -b 115200 -o -D /dev/ttyACM0
提示

要退出 minicom,请使用 CTRL-A,然后按 X。

要测试串行通信,您可以构建并上传 "Hello World "示例应用程序。

将目录更改为 pico-examples 树中的 hello_world 目录,然后运行 make。然后,使用 openocd 将其上传到 树莓派Pico。有关构建 hello_serial 示例程序的完整步骤,请参阅《树莓派Pico 入门》第 4 章。

cd pico-examples
mkdir build
cd build
export PICO_SDK_PATH=../../pico-sdk
cmake ..
cd hello_world/serial
make -j4
sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "program hello_serial.elf verify reset exit"
minicom -b 115200 -o -D /dev/ttyACM0

打开 minicom 后,您将看到 "Hello, world!"打印到控制台。

对于支持它的终端程序,USB 串行 UART 的描述会在 USB 设备描述中公布。

描述

该描述中的唯一序列号意味着在 Windows 系统中,每个设备的 COM 端口编号都是 "粘性 "的,这将允许您编写 udev 规则,将命名的设备节点与特定调试探针关联起来。

更新调试探针的固件

调试探针的固件是由 Raspberry Pi 发布的 UF2 文件。

调试探头固件的最新版本是第 2 版。如果您运行的是旧版本,或者不小心覆盖了调试探针上的固件,您可以在 the debugprobe GitHub repository 中找到最新版本的固件。

从最新版本中下载 debugprobe.uf2

捏住并取下调试探针外壳的顶部。

将调试探针插入计算机时按住 BOOTSEL 按钮,挂载名为 "RPI-RP2 "的卷。

debugprobe.uf2 复制到 "RPI-RP2" 卷上。文件复制到设备后,卷将自动卸载。

调试探头将重新启动,并运行更新版的调试探头固件。现在可以进行调试了。

示意图

提供调试探针的原理图和机械图纸:

原理图上显示的测试点 (TP) 位置如下图所示。

调试探针TP

中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352