# SWD GDB 硬件调试

本页介绍如何使用 GDB(从终端)连接硬件目标。要使用集成开发环境,请参阅以下说明 日蚀VSCode.

有关接线接口的设置,请参阅此详细信息: SWD/JTAG 调试接口.

# 使用 Dronecode 探头/Blackmagic 探头

备注

要调试 STM32F7 或更高版本(FMUv5 及更新版本)的 Dronecode 探头/Blackmagic 探头可能需要进行固件更新。您可以找到如何更新 黑魔法探头 (打开新窗口).

要在 GDB 中使用 Dronecode 探针,请使用自动驾驶仪上当前闪烁的 ELF 文件启动 GDB:

arm-none-eabi-gdb build/px4_fmu-v5_default/px4_fmu-v5_default.elf

然后,您必须选择 Dronecode 探测器接口,例如,在 Linux 下是这样:

target ext /dev/serial/by-id/usb-Black_Sphere_Technologies_Black_Magic_Probe_f9414d5_7DB85DAC-if00

然后扫描目标:

监视器 swdp_scan

你应该会看到类似的内容:

目标电压 3.3V 可用目标:没有。
 1      STM32F76x M7

请注意,对于某些自动驾驶仪,它显示的电压为 0.0V,但后续步骤仍然有效。

现在您可以连接到该目标:

附1

现在你应该连接上了。

要使用 JLink 调试器,首先需要 安装 JLink 软件 (打开新窗口) 包含 JLink GDB 服务器。

JLink 安装程序应将 JLink GDB 服务器安装到 /usr/bin/.安装完成后,您可以使用以下命令启动服务器:

JLinkGDBServer -if swd

然后它可能会提示您更新 JLink(建议更新),然后指定与之通信的设备。请查看自动驾驶仪的文档了解具体设备。

完成后,GDB 服务器就会开始监听端口 2331例如

检查目标电压...目标电压 3.28 V 监听 TCP/IP 端口 2331
连接目标...连接到目标 等待 对于 GDB 连接...

现在,您可以使用自动驾驶仪上当前闪存的确切 elf 文件(在单独的终端中)启动 GDB:

arm-none-eabi-gdb build/px4_fmu-v5_default/px4_fmu-v5_default.elf

并连接到 GDB 服务器:

目标遥控器:2331

现在你应该连接上了。

# GDB 快速入门

连接后,您可以使用常用的 GDB 命令,如

  • 继续 继续执行程序
  • 运行 从头开始
  • 追溯 查看回溯
  • break somewhere.cpp:123 来设置断点
  • 删除某处.cpp:123 再次移除
  • 当地信息 打印本地变量
  • 信息登记 打印寄存器

更多有关 GDB 的信息,请使用您喜欢的资源。

TIP

为了避免每次都在 GDB 中键入所有连接命令,可以将它们写入 ~/.gdbinit.