GDB如何确定ARM架构

How does GDB determine ARM architecture

我正在使用带有德州仪器 Hercules (Cortex-R4F) 处理器的 gdb (arm-none-eabi)。我正在使用德州仪器的 XDS 代理作为远程 GDB 服务器

在运行之后

target remote ip:port 

在 GDB 中,GDB 将与 XDS GDBserver 连接。然后我可以打印寄存器

info all-registers

它向我展示了 CPU 寄存器,还有 f7 和 fpa 寄存器,这让我得出结论 CPU 有一个浮点协处理器 (FPA)。然而事实并非如此。处理器有 vfpv3。所以 GDB 使用了错误的寄存器定义,这导致了问题。

我试图通过设置

在XDS GDB服务器发送的数据包中找到信息
set debug remote 1

但找不到任何信息。 GDB 如何确定要使用的寄存器定义?

更新: 我找到了设置架构命令:

set architecture

>Requires an argument. Valid arguments are arm, armv2, armv2a, armv3, armv3m, armv4, armv4t, armv5, armv5t, armv5te, xscale, ep9312, iwmmxt, iwmmxt2, arm_any, auto.

Cortex-R4f 是带有 vfpv3 的 armv7。怎么设置?

TI 的 XDS 代理充当 GDBServer。

但它不会响应qXfer:features:read...等数据包来获取有关目标的信息

最后我手动申请了:

set tdesc filename /gdb/binutils-gdb/gdb/features/arm/arm-with-vfpv3.xml

这为 Corter-R4f 设置了正确的功能,并允许我设置断点、调用函数等。

唉,我们现在发现了其他问题。看来TI的XDS GDBserver代理不是很稳定