我有:
- 带有 eCos OS 的专有原型 ARM 板(基于 Cortex-M3)
- 该板具有已编程的 RedBoot 引导加载程序
- 串行线 (RS-232)
- ARM 的 GDB 调试器 (arm-eabi-gdb)
- 主机操作系统是 Windows/Cygwin 和/或 Linux(实际上,没关系)
问题: GDB 调试器无法通过串行线路连接到目标。
我想要的是:嗅探 GDB 远程协议的数据包,以了解目标上的 GDB 存根是否处于活动状态并且正在运行。
详细信息: RedBoot 可以选择将目标的控制权传递给内置的 GDB 存根。我知道 RedBoot 还活着,我可以连接到它并通过串行线路向它发送命令。RedBoot 手册说,可以通过键入 $ 或 + 符号(实际上是 GDB 远程协议数据包的前缀)来切换到 GDB 存根。当我发送这些符号时,它似乎适用于终端死机。但我不确定 RedBoot 是否使用 GDB 存根支持编译(不要问我为什么 :-))。
然后,当我尝试使用我的 GDB 调试器连接到开发板时,我得到以下图片(在 Windows 上):
(gdb) target remote COM3
Remote debugging using COM3
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
端口正确,波特率也正确。实际上,如果我尝试对另一个未连接任何东西的串行端口执行相同的操作,我会得到相同的输出。
我想知道的是 GDB 存根是否发回任何东西?
直觉上我认为可能
set verbose on
会有所帮助,但 GDB 手册说它的效果非常有限,我的情况超出了它。
是否可以使用启用调试日志记录的宏来编译 GDB 调试器?