在 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 的 GPIO 上检测上升沿的下降沿和上升沿之间的最短时间