c++ - BDM Sprite 文件与普通 Sprite 文件

标签 c++ c debugging elf trace32

BDM ​​ELF 文件在内存使用方面比普通 ELF 文件有什么优势?

我对两者都了解以下内容:

  1. BDM ​​ELF 文件可用于通过任何调试器工具进行调试 通过插入 JTAG 来像 Trace32。普通的ELF文件也可以 用于调试目的,前提是我们有相应的FLS 文件(闪存文件),必须被闪存到的ROM区域 企业内容管理。
  2. BDM ​​ELF 文件加载到 ECM 的 RAM 区域(电子 控制模块),而普通的 ELF 文件及其对应的 FLS被加载到ECM的ROM中。
  3. ELF 文件(BDM 或普通文件)没有完整加载 进入ECM的内存(我是从ECM的大小理解的 我们用于加载 ELF 的内存,以 KB 为单位 与以 MB 为单位的 ELF 的巨大尺寸相比), ELF 文件的某些部分(类型、变量和 函数等)保存在 Trace32 内存中。

以上是我使用ELF的主要理解,我知道大家会帮助我纠正自己,以防我理解错误。

我的期望是了解 BDM ELF 文件内容如何在 Trace32 调试器和 ECM 内存之间分布,两种 ELF 格式相比另一种格式有何优势,因为两者都仅用于调试目的。请注意,在向客户发布应用程序/软件时,我们以客户闪存到其 ECM 中的 FLS 格式发布。

如果您需要更多信息来继续回答我的问题,请告诉我。

最佳答案

好的,我再试一次:

How is BDM ELF file content distributed among the Trace32 debugger and the ECM memory?

ELF 文件可以保存调试符号信息(将内存位置和寄存器与函数和变量相关联),trace32 使用这些信息来帮助您进行调试。此符号信息保存在 trace32 中,用于解码芯片的 BDM 输出(主要是寄存器值)并提供裸组装之外的有用信息。

How is either of the ELF formats advantageous than one another as both are used for debugging purpose only?

这取决于您的调试工具和开发工具链。正如我在其他回答中所说,ELF 只是一种标准格式。它是否用于在线编程取决于您的开发工具在链接时做什么。由于您没有告诉我您的工具链是什么,所以我真的只能推测。

如果您的设备具有平面内存模型和集成 ROM(大多数 32 位设备具有较小的存储量),则只需一个文件即可对设备进行编程。由于 RAM 和内部闪存的寻址相同,地址只需要匹配所需的目的地。

另一方面,如果您有两个存储 ROM 的位置(我怀疑您的产品就是这种情况)并且它们的地址不相同,那么可能需要两个文件。如果有一个与外部闪存 ROM 芯片(或 SD 卡等)接口(interface)的 ECU,就会出现这种情况。在这种情况下,将需要一个单独的镜像来写入片外存储,因为地址可能会重叠(ELF 假定一条数据的唯一地址)。因此,在您的情况下,需要两个 ELF 文件:一个指定要加载到 RAM 中以在调试中启动设备的调试设置,另一个指定操作系统的符号信息和编程到外部闪存芯片中的其他数据。 FLS 文件可能会指定程序员用来寻址 ELF 中不存在的外部闪存的信息,但这取决于体系结构(我不熟悉诺基亚如何设计他们的硬件)。

这可能有助于获取一般 ELF 信息:http://blog.ksplice.com/tag/elf/

关于c++ - BDM Sprite 文件与普通 Sprite 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254020/

相关文章:

c - 我必须按两次CTRL+D才能结束输入,为什么?如何更正?

c - 尝试在单个程序中打印字符、以空格结尾的字符串和以换行符结尾的字符串

c - 在不更改堆栈的情况下获得 5 个最高值和 5 个最低值的更短方法

ruby-on-rails - Rails 应用程序和定位堆栈跟踪

xcode - xcode 或 appcode 中的控制台输出过滤

c++ - 通过将其分配给 const std::tuple<int, int>& 来延长 std::tuple<int&,int> 的生命周期

c++ - 如何在cmake中正确使用include_directories?

c++ - 错误计数超过 100,只有 1 个错误

c++ - undefined symbol "vtable for ..."和 "typeinfo for..."?

visual-studio-2010 - 在 Visual Studio Shell : can't watch the variables 中使用 IronPython 工具进行调试