如何获取U-Boot调试符号

How to get U-Boot debugging symbols

我正在努力将 U-Boot 移植到我们正在开发的基于 Texas Instruments AM5728 的定制板上,但我在调试 U-Boot 时遇到了一些问题。我可以通过 JTAG 加载和调试 U-Boot SPL,但是一旦在 SPL 完成后通过 JTAG 正确加载 U-Boot,我就不能 step/reach 硬件断点。这主要是因为不知道调试符号 table 在 U-Boot 二进制文件中的位置。我已经在 U-Boot 中启用了 DEBUG 宏但没有成功,所以我想如果我能得到调试符号,我实际上可以解决我遇到的任何错误。

有没有办法从构建中获取调试符号 process/Makefile?

这里有几点需要牢记。首先,spl/u-boot-splu-boot 是 U-Boot 的 ELF 文件,对于 AM5728,您将将 MLOu-boot.img 加载到内存中以启动它们。要记住的第二件事是,U-Boot 相当早地在内存中从它被加载的地方重新定位到它计算和恢复 运行 的地址。获取此值的最简单方法是,假设您的系统引导到提示符:

=> bdinfo
...
relocaddr   = 0xFFF6D000
reloc off   = 0x7F76D000

这些值取决于系统,但会告诉您系统内存中的绝对地址和添加到链接地址的偏移量,以了解给定函数现在所在的位置。 u-boot.map 文件将列出所有函数链接的其他内容。如何告诉调试器事情在哪里取决于所讨论的调试器。例如,使用 gdb,您将重新加载符号文件并为其赋予新的 relocaddr 值。