1

就使用的内存而言,BDM ELF 文件与普通 ELF 文件相比有什么优势?

我对两者都了解以下几点:

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

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

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

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

4

3 回答 3

1

好的,我再试一次:

BDM ELF 文件内容如何在 Trace32 调试器和 ECM 内存之间分布?

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

由于两者都仅用于调试目的,因此两种 ELF 格式之间的优势如何?

这取决于您的调试工具和您的开发工具链。正如我在其他答案中所说,ELF 只是一种标准格式。它用于线路编程的天气取决于您的开发工具在链接时所做的事情。既然你不告诉我你的工具链是什么,我真的只能推测。

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

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

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

于 2010-07-16T14:57:01.303 回答
0

BDM ELF 的功能是在代码运行时查看内存位置和内存映射寄存器的更改,而无需停止它。

通过使用 BDM ELF,我们可以拥有硬件观察点或断点。这很有用,因为您可以在不影响执行速度的情况下中断正在更改的值。一旦调试器中断,我们可以使用 Debugging Kernel and Applications together 方法来准确找出它发生在哪一行。

您不能通过 BDM 调试器在用户程序中设置断点。这是因为它插入了“停止”指令,而这些指令只能由内核代码执行。可以修改 BDM 驱动程序以允许通过 BDM 接口调试用户应用程序。

于 2015-07-15T12:46:20.793 回答
-1

你的问题没有问号。因此,我不确定我是否完全回答了您的要求。

此信息主要来自通过 BDM 使用 ELF 文件,而不是来自实际文档:

ELF 是一个文件规范,所以所有的 ELF 文件都应该是一样的。ELF 文件由链接器生成,包含符号信息以及组织成段的可执行代码。当用户对 ECM 进行编程时,调试器/编程器会通读 ELF 文件,挑选出部分地址及其相关代码,然后根据需要写入这些内容。

将可执行文件写入 RAM 还是 ROM 取决于 ELF 中各部分的地址(通常通过链接器读取的配置文件进行配置)或当程序“编程”时程序员的设置。大多数调试器都可以选择将映像加载到 ROM 或 RAM。程序映像的唯一区别是代码和变量的位置。

在您描述的情况下,您的程序员似乎无法从 elf 文件中提取可执行数据。我假设您的 fls 文件是某种原始图像文件,可以逐字写入目标硬件。

于 2010-07-15T18:41:43.220 回答