问题情景: 简单来说,我们是否有一个Trace32命令从加载到目标的ELF文件中读取符号(及其内容)?我们有这种特殊情况,其中ELF文件的特定于应用程序的调试符号是ELF中'.noload'部分的一部分,这意味着符号/内容是ELF文件的一部分(使用readelf -a xxxx读取时可用)。 elf_file_name)但不是生成的最终二进制图像的一部分,即ELF文件中的'.noload'部分在生成闪存到目标内存的xxx.bin时被剥离。
任何输入:
- 我需要一个trace32命令的帮助,它可以直接读取ELF文件中的符号内容而不是目标内存
- 还不确定我是否可以在练习脚本中使用'readelf'?如果我们对上述查询没有任何解决方案,可以在这个方向提供任何帮助吗?
答案 0 :(得分:7)
使用命令
Data.LOAD.Elf myfile.elf [<optional address offset>] /NoCODE
选项/ NoCODE指示TRACE32仅从您的ELF加载debgug符号,但不向目标加载任何代码。您可以使用命令sYmbol.Browse
查看符号。
但是,如果您使用TRACE32将应用程序加载到目标,则不必先从ELF创建二进制文件。使用TRACE32,您还可以将ELF的PROGBITS部分直接加载到目标。 在这种情况下,您只需使用不带/ NoCODE选项的Data.LOAD.Elf命令(启用闪存编程后)。
由于您使用的是MMU,因此可能需要使用命令SYStem.Option.MMUSPACES ON
激活逻辑内存空间ID。然后用
Data.LOAD.Elf myfile.elf <space-ID>:<offset> /NoCODE
其中&#39; space-ID&#39;与MMU用于任务的空间ID匹配,并且&#39; offset&#39;通常为零。
如果您在嵌入式Linux上调试应用程序,则应使用适用于Linux的TRACE32操作系统感知和Linux符号自动加载程序将符号加载到正确的地址。
我认为没有任何理由可以使用“readelf”#re;来自TRACE32。无论如何,您可以使用命令OS.Area
或OS.Command
调用任何命令行程序。