bob多特蒙德官方下载ElectronicsHub标志

学习如何编程和调试覆盆子πPico门限

在本教程中,我们将学习如何上传程序覆盆子πPico使用门限和也与门限调试。直到现在,我们一直在使用拖放上传程序“微小”的方法。但如果你想使用门限接口的Pico程序和调试,那么本教程是为你。学习编程的步骤覆盆子πPico门限和调试代码与社署,OpenOCD和GDB。

Program-Raspberry-Pi-Pico-with-SWD-Image-1

对门限短暂的注意

你曾经在开发嵌入式系统的应用程序?如果答案是肯定的,那么你可能会熟悉这个词“调试”。在嵌入式系统中,主要是设计一个任务(或一个很小的数量和特定的任务),调试和测试的过程是非常重要的我们经常工作至CPU寄存器。

有几个调试嵌入式系统的硬件和软件解决方案。这样一个提供被称为串行线调试或社署简而言之。社署是一个调试和跟踪港口嵌入到硅大多数现代ARM微控制器和微处理器为基础。

使用门限探针(小的硬件通常连接到门限USB端口的单片机和地图)你可以计划单片机的Flash,调试的固件,添加断点,步进通过代码等只有两个电线。

门限的结合,GDB (GNU调试器)和OpenOCD(一个片上调试器支持调试,在系统编程和边界扫描嵌入式系统)是一个非常强大的调试安装,特别是手臂皮层系列的处理器。

覆盆子πPico门限编程和调试

像所有手臂皮层处理器,覆盆子πPico也有专门的硬件调试通过门限界面。社署调试所需的两个电线被称为SWDIO(双向门限数据)和SWCLK门限时钟)。

覆盆子πPico,社署别针是分开的别针和放置底部的董事会。

Raspberry-Pi-Pico-SWD-Pins

此2线社署接口RP2040覆盆子πPico董事会允许您执行以下操作:

  • 把程序上传到外部Flash或内部存储器。
  • 控制处理器的执行状态即。、运行、停止、步骤,设置断点,等等。
  • 处理器访问内存和IO外设(内存映射)通过系统总线。

安装工具覆盆子π

如前所述,GDB调试所需和OpenOCD任何手臂皮层处理器。所以,现在我们将安装这两个在我们的主机系统,这对于我来说是一个覆盆子π运行最新覆盆子π操作系统。

OpenOCD

了解社署协议和控制臂皮质处理器(两个在RP2040),你需要一个叫做OpenOCD的特殊翻译。现在让我们看看如何安装OpenOCD覆盆子π。

注意:下面的步骤将安装在/home/pi/pico/openocd. OpenOCD

cd ~
cd皮科
sudo apt安装automake autoconf建设重要texinfo libtool libftdi-dev libusb - 1.0 - 0 - dev

Pico-SWD-1

这将由OpenOCD安装需要的所有工具。接下来,我们将克隆OpenOCD进入我们的主机和安装OpenOCD。输入以下命令一个接一个。

git克隆https://github.com/raspberrypi/openocd.git递归分支rp2040深度= 1
cd openocd
。/引导
. / configure -enable-ftdi -enable-sysfsgpio -enable-bcm2835gpio
让阁下
sudo make install

我需要一些时间来构建和安装OpenOCD。坐下来,放松一下。

广东发展银行

下一步是安装GDB。GDB连拱的安装,使用以下命令:

sudo apt安装gdb-multiarch

Pico-SWD-2

我们将看到如何使用OpenOCD和GDB调试在下一节。

布线覆盆子πPico和树莓π

之前看到如何计划覆盆子πPico使用门限时,你必须首先正确线覆盆子π皮科。

重要提示:我不知道确切的原因,但是在连接之前,我不得不关闭覆盆子π成功项目覆盆子πPico使用门限。我读在覆盆子π论坛的覆盆子π和目标即。,覆盆子π皮科in this case must be powered down before connecting SWD pins.

自从覆盆子πPico通过USB连接到覆盆子π(权力),我所要做的就是关闭覆盆子π,使门限连接然后权力覆盆子π。

下面的表显示了所有必要的覆盆子π和树莓πPico之间的联系需要。

覆盆子π皮科

覆盆子π
SWDIO

GPIO 24(销18)

社署接地

接地(销20)
SWCLK

GPIO 25(销22)

Program-Raspberry-Pi-Pico-with-SWD-Image-2

编程覆盆子πPico门限

让我们用“眨眼”项目为例,了解覆盆子πPico门限编程工作。如果你还记得在编程覆盆子πPico C的教程中,我们已经建立了眨眼程序,导致几个目标文件。

拖放编程通过USB接口,我们使用.uf2文件。但OpenOCD使用.elf文件上传程序。

使用以下命令程序覆盆子πPico门限。

cd ~
cd皮科
cd pico-examples /构建/
使眨眼

Pico-SWD-3

/ raspberrypi-swd openocd - f接口。目标/ rp2040.cfg cfg - f-c “program blink/blink.elf verify reset exit”

Pico-SWD-4

上面的命令将调用OpenOCD程序眨眼。精灵文件树莓πPico,重置董事会和退出OpenOCD。如果一切顺利,应该显示终端这样和LED覆盆子πPico应该开始闪烁。

Pico-SWD-5

调试覆盆子πPico门限

现在让我们看看如何调试代码起诉门限,OpenOCD和GDB。我们已经安装了GDB在前面的步骤。现在,包括调试构建文件中的相关设置,你有使用CMake指令的-DCMAKE_BUILD_TYPE =调试”。

但在此之前,您需要删除的“构建”目录“pico-examples”目录,并创建一个新的“构建”目录。使用下面的命令来构建示例的调试信息。

cd ~ / pico / pico-examples /
rm射频构建
mkdir构建
cd构建
出口PICO_SDK_PATH = . . / . . / pico-sdk
cmake -DCMAKE_BUILD_TYPE =调试. .

Pico-SWD-6

让我们使用hello_world例子和构建的连续变异。你不能使用基于串行连接为门限调试USB设备将停止处理器内核调试时断开连接。

同时,覆盆子πPico和树莓π之间的连接查看覆盆子πPico的输出UART串行输出树莓π如下:

覆盆子π皮科

覆盆子π
GPIO 0 (UART0_TX)

GPIO 15 (UART_RX0)销10

GPIO 1 (UART0_RX)

GPIO 14 (UART_TX0)销8
接地

接地(销14)

连接后,打开hello_world UART目录和构建它。

cd hello_world /串行
让阁下

使用OpenOCD打开GDB服务器。

/ raspberrypi-swd openocd - f接口。目标/ rp2040.cfg cfg - f

Pico-SWD-7

保持这个终端,打开另外一个终端窗口,浏览到UART串行目录建立目录。

cd ~
cd pico pico-examples /构建/ hello_world /串行/

GDB和连接到OpenOCD服务器开放。

gdb-multiarch hello_serial.elf
(gdb)目标远程localhost: 3333

Pico-SWD-8

将程序加载到覆盆子πPico的闪存,使用load命令。

(gdb)负载

开始运行代码。

(gdb)监控复位初始化
(gdb)继续

Pico-SWD-9

如果您熟悉GDB命令,您可以探索它们。

结论

一个完整的教程编程和调试覆盆子πPico门限。学习覆盆子πPico门限接口工作,必要的覆盆子πPico之间的连接和覆盆子π为门限,程序覆盆子πPico门限,使用GDB调试覆盆子πPico使用门限。

6的反应

  1. 感谢。

    只是让你知道有表中出现一个错字,说如何连接Pico门限。

    GPIO 24(销18)以及GPIO 25(销18)

    1. 从技术上讲,应该是可能的但不直接与圣链接固件。你需要flash不同的固件(耐火的J链接或黑魔法探测)。我没有试过。

  2. 这是一个很好的过程,我麻烦的一件事是,社署连接在一段时间对我来说只有一次。我解决了这个问题通过π之间最短的电线和笔。可能也许我原来的电线是一个问题,但它似乎合理使用短的电线,因为高带宽。我看过其他设置,使用带连接器,也许双绞线也将更好地工作。电线我现在大约3英寸,连接没有问题。

留下一个回复

你的电子邮件地址将不会被发表。必填字段标记*

Baidu
map