Raspberry Pi 调试器

关于 Debug Probe

debug probe

Raspberry Pi Debug Probe是一款USB设备,提供通用异步收发设备串行端口和标准Arm Serial Wire Debug(SWD)接口。该Probe专为简单、无焊料、即插即用的调试而设计。它具有以下特点:

  • USB 至 ARM Serial Wire Debug (SWD) port

  • USB 至 UART 桥接器

  • 兼容 CMSIS-DAP标准

  • 可与 OpenOCD和其他支持 CMSIS-DAP 的工具配合使用

  • 开源、易于升级的固件

Note
有关Raspberry Pi三针debug连接器的更多信息,请参阅 规格

这使得在缺少GPIO标头的Windows、macOS和Linux等平台上使用Raspberry PiPico可以轻松地直接连接到Pico的串行通用异步收发设备或SWD端口。

Debug Probe

probe在3.3V标称I/O电压下工作。

the probe

Debug Probe随附一根USB电源线和三根调试线:

  • 三针 JST-SH 连接器转 3 针 JST-SH 连接器电缆

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

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

两条0.1英寸的接头电缆-用于面包板(公头)或直接连接到带有接头引脚(母头)的板-颜色如下:

橙色

TX/SC(Probe输出)

黑色

GND

黄色

RX/SD(输入到Probe或I/O)

虽然带有三引脚JST-SH连接器的电缆旨在与 standard three-pin connector 一起使用,但较新的Raspberry Pi板用于SWD调试端口和通用异步收发设备连接器。

调试Probe有五个LED,一个红色LED指示电源,还有四个活动指示灯LED

debug leds
Note
OpenOCD在目标连接时打开两个DAP LED,并在调用 DAP_DISCONNECT 时关闭它们。

入门指南

labelled wiring

根据您的设置,有几种方法可以将 Debug Probe 连接到 Pico系列设备。下面,我们将 Debug Probe 连接到树莓派PicoH,它具有用于SWD的较新的三引脚JST-SH连接器。

按照以下方式连接:

  • Debug Probe "D" 端口与 Pico H SWD JST-SH 连接器连接

  • Debug Probe "U" 端口,三针 JST-SH 连接器连接至 0.1 英寸接头(公头):

    • Debug Probe RX 连接到 Pico H TX 引脚

    • Debug Probe TX 连接到 Pico H RX 引脚

    • Debug Probe GND 连接到 Pico H GND 引脚

Note
如果您有非H Pico或Pico W(没有JST-SH连接器),您仍然可以将其连接到 Debug Probe 。将公连接器焊接到板上的 SWCLKGNDSWDIO 接头引脚上。使用替代的3针JST-SH连接器连接到 Debug Probe 随附的0.1英寸接头(母)电缆,连接到 Debug Probe "D"端口。分别将Pico或PicoW上的 SWCLKGNDSWDIO 连接到 Debug Probe 上的 SCGNDSD 引脚。

wiring

安装工具

要使用 Debug Probe,请安装以下工具。

安装OpenOCD

您需要安装OpenOCD。

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

$ sudo apt install openocd

要运行OpenOCD,请在终端中使用 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 arm-none-eabi-gdb

您可以安全地忽略安装时对“特殊权限”消息的请求。

MS Windows

GDB 可作为 Pico-setup-for-Windows-installer的一部分提供。它也包含在 Arm GNU 工具链中。

关于手动安装的其他信息可以在我们 Getting Started with Raspberry Pi Pico 书的第9章和附录A中找到。

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

串口调试 (SWD)

串行线调试(SWD)是JTAG四针或五针调试接口标准的两针接口(https://developer.arm.com/documentation/101761/1-0/Debug-and-trace-interface/Serial-Wire-Debug-signals[SWDIO and SWCLK])替代品。

上传新程序到Pico

Pico Debug Probe 允许通过SWD端口和OpenOCD加载二进制文件:每次将新二进制文件推送到Pico时,您不需要拔掉BOOTSEL按钮再按住按钮。使用Debug Probe上传新文件无需额外操作。

构建二进制文件后:

$ sudo openocd -f interface/cmsis-dap.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "program blink.elf verify reset exit"
Note
当您使用Debug Probe上传二进制文件时,使用的是文件的ELF版本,而不是您在拖放时使用的UF2文件。

使用SWD调试

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

Important

要允许调试,您必须将二进制文件构建为 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您的程序在做什么。

有关详细信息,请参阅 Raspberry Pi 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 Pi 的 Linux 设备上,使用 gdb-multiarch

  • 在 macOS 设备上,使用 arm-none-eabi-gdb

连接串口

确保 Debug Probe 已连接到Raspberry PiPico的通用异步收发设备引脚。

wiring

Raspberry Pi Pico UART0的默认引脚如下:

Default UART0 Physical Pin GPIO Pin

GND

3

N/A

UART0_TX

1

GP0

UART0_RX

2

GP1

连接后,树莓派Pico的通用异步收发设备上的流量将通过 Debug Probe 中继到您的计算机,并作为CDC通用异步收发设备公开。在树莓派上,这将显示为 /dev/ttyACM0;在其他平台上,此串行端口将显示不同(例如,在macOS上,它将显示为 /dev/cu.usbmodemXXXX)。

如果您还没有这样做,您应该安装minicom:

$ sudo apt install minicom

并打开串口:

$ minicom -b 115200 -o -D /dev/ttyACM0
Tip
要退出 minicom,请使用CTRL-A后按X。

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

将目录更改为 pico-examples 树内的 hello_world 目录,并运行 make。之后,您可以使用 openocd 将其上传到您的Raspberry PiPico。有关构建 hello_serial 示例程序的完整走查,请参阅 Getting started with Raspberry Pi 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串行通用异步收发设备的描述在USB设备描述中公布。

description

此描述中的唯一序列号意味着在Windows上,您的COM端口编号对于每个设备是“固定的”,并允许您编写 udev 规则以将命名设备节点与特定 Debug Probe 相关联。

在Debug Probe上更新固件

Debug Probe 的固件可作为Raspberry Pi分发的UF2文件获得。

Debug Probe固件的最新版本是2.2版。如果您运行的是旧版本,或者您不小心覆盖了Debug Probe上的固件,您可以在 the debugprobe GitHub repository 中找到固件的最新版本。

从最新版本下载 debugprobe.uf2

捏住,取下Debug Probe外壳的顶部。

当您将Debug Probe插入计算机以挂载名为“RPI-RP2”的卷时,按住BOOTSEL按钮。

debugprobe.uf2 复制到“RPI-RP2”卷上。文件完成复制到设备后,该卷将自动卸载。

您的Debug Probe将重新启动,现在运行Debug Probe固件的更新版本。它现在已准备好进行调试。

原理图

Debug Probe 的原理图和机械图可供选择:

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

debug probe tps