GDB如何确定ARM架构

GDB如何确定ARM架构,arm,gdb,gdbserver,Arm,Gdb,Gdbserver,我正在使用gdb(arm-eabi)和德克萨斯仪器公司的Hercules(Cortex-R4F)处理器。我正在使用Texas Instrument的XDS代理作为远程GDB服务器 跑步后 target remote ip:port 在GDB中,GDB将与XDS GDBserver连接。然后我可以打印注册表 info all-registers 它向我展示了CPU寄存器,还有f7和fpa寄存器,这使我得出结论,CPU有一个浮点协处理器(fpa)。但事实并非如此。处理器具有vfpv3。所以GD

我正在使用gdb(arm-eabi)和德克萨斯仪器公司的Hercules(Cortex-R4F)处理器。我正在使用Texas Instrument的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命令:

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代理似乎不是很稳定。

TI的XDS代理充当GDBserver

但它不响应诸如qXfer:features:read。。。获取有关目标的信息

最后,我手动应用了:

set tdesc filename /gdb/binutils-gdb/gdb/features/arm/arm-with-vfpv3.xml
这为Corter-R4f设置了正确的功能,并允许我设置断点、调用函数等


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

首先,它是为ARM编译的,与编译器、汇编程序、链接器一样。但除此之外,它可能是通用的,除非你具体告诉它你有什么。较老的手臂没有较新手臂的CPUID,因此无法检测到。您的命令行是什么,是否有指定体系结构的选项?我不希望知道让我们这样说吧。或者用另一种方式说吧。就像工具链一样,人类知道,但工具可能不知道,所以人类告诉工具…好的,但是我如何指定要使用的架构?当我连接到远程目标时(甚至在加载任何程序之前),gdb已经假定了错误的寄存器集。听起来你需要一个理解armv7的gdb/工具链。对于普通寄存器r0到r15、cpsr等,是否有错误?还是仅仅针对协处理器?首先也是最重要的,就像编译器、汇编器、链接器一样,它是为ARM编译的。但除此之外,它可能是通用的,除非你具体告诉它你有什么。较老的手臂没有较新手臂的CPUID,因此无法检测到。您的命令行是什么,是否有指定体系结构的选项?我不希望知道让我们这样说吧。或者用另一种方式说吧。就像工具链一样,人类知道,但工具可能不知道,所以人类告诉工具…好的,但是我如何指定要使用的架构?当我连接到远程目标时(甚至在加载任何程序之前),gdb已经假定了错误的寄存器集。听起来你需要一个理解armv7的gdb/工具链。对于普通寄存器r0到r15、cpsr等,是否有错误?还是只针对协处理器?