在 STM32H7 上使用 GDB 进行远程调试,无需 PC 连接到评估板

Posted

技术标签:

【中文标题】在 STM32H7 上使用 GDB 进行远程调试,无需 PC 连接到评估板【英文标题】:Remote debugging with GDB on STM32H7 without PC connected to evaluation board 【发布时间】:2019-12-28 12:52:31 【问题描述】:

我正在开发 STM32H7 评估板(Nucleo-144 和 EVAL2)。我的 IDE 是 STM32CUbeIDE。

我的目标是远程调试:在 Linux 服务器上运行 STM32CubeIDE(或其他 IDE)并通过网络连接到开发板。

我可以成功运行以下设置:

将开发板连接到本地 PC 在这台本地 PC 上启动 GDBserver 在远程 Linux 服务器上,设置调试配置以连接到远程 GDB 服务器。

这工作正常。但我需要更进一步:我想删除本地 PC,即。该板将通过以太网直接连接到网络。

有人告诉我,赛灵思有一个名为 Smartlynq 的 JTAG/以太网适配器可以做到这一点,但它的工作方式让我有点困惑。

您知道 STM32 生态系统的等价物吗?

是否有另一种设置可以在没有 PC 的情况下进行远程调试?

【问题讨论】:

【参考方案1】:

使用 Raspberry PI 作为调试适配器。

它会有点比 JLINK Pro 便宜。如果有可用的 WLAN,请使用 Pi Zero W,否则您需要一个更大的带有以太网的。将其设置为远程工作(启用 ssh、设置固定 IP 地址等),然后您可以禁用 GUI 桌面,并断开显示器和键盘的连接。

正在运行gdbserver

Pi 有一个支持 Thumb 指令集但不支持 Thumb-2 的 ARM CPU,因此它的原生 gdbserver可能能够调试 Cortex-M7 控制器。如果不能,则必须在 Pi 上安装 gdb-arm-none-eabi 包。

连接到目标板

有两种选择。

将板载调试适配器连接到 PI 上的 USB 端口,然后像在 PC 上那样运行 openocd。 绕过板载调试适配器,将 Pi 上的一些引脚直接连接到目标的SWD 引脚。您必须移除一些跳线才能禁用板载调试适配器。关于如何编译和使用 openocd 与原生 SWD 支持有 a tutorial at Adafruit。

【讨论】:

感谢@berendi 的提议。对于小预算来说,这听起来很聪明,即使它看起来有点复杂。【参考方案2】:

Segger J-Link PRO 是支持以太网的 ARM 的 JTAG/SWD 调试器。与其他 J-Link 模型一样,它应该适用于 STM32。

【讨论】:

有趣,谢谢。我真的不明白它是如何工作的。它是否执行 gdb 服务器? 您在 PC 上运行 JLinkGDBServer 并指定要连接的 J-Link 适配器的 IP 地址。与 USB 非常相似,只是它通过网络连接到适配器。

以上是关于在 STM32H7 上使用 GDB 进行远程调试,无需 PC 连接到评估板的主要内容,如果未能解决你的问题,请参考以下文章

STM32H7教程第10章 STM32H7的FLASH,RAM和栈使用情况(map和htm文件)

STM32H7教程第89章 STM32H7的CAN FD总线基础之前世今生

STM32H7 SPI通信:FIFO管理问题

在 STM32H7 的 GPIO 上检测上升沿的下降沿和上升沿之间的最短时间

STM32H7B0 HAL库中关于DMA的注意事项以及DCMI调试遇到的问题及解决方法

STM32H7B0 HAL库中关于DMA的注意事项以及DCMI调试遇到的问题及解决方法