2010-07-15 67 views
1

就使用的内存而言,BDM ELF文件比普通ELF文件有什么优势?通过JTAG堵漏BDM精灵文件vs普通精灵文件

  1. BDM ELF文件可用于调试通过任何调试工具 像TRACE32:

    我知道以下两个东西。正常的ELF文件也可以是 用于调试目的,只要我们有相应的FLS 文件(Flash文件)必须闪存到 ECM的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格式进行发布。

请让我知道你是否需要任何信息继续回答我的问题。

回答

1

OK,我会再试一次:

如何BDM ELF文件内容的TRACE32调试器和ECM记忆中的分布?

ELF文件可以保存trace32用来帮助您调试的调试符号信息(将存储器位置和寄存器与函数和变量相关联)。该符号信息保存在trace32中,用于解码芯片的BDM输出(主要是寄存器值),并提供超出裸汇编的有用信息。

如何要么的ELF格式 不是彼此既是 有利的仅用于调试的目的?

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

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

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

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

-1

你的问题没有任何问号。因此,我不确定我是否完全回答你的问题。

这个信息主要是从使用的ELF文件导出了BDM,而不是从实际 文档:

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

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

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

+0

我认为你不熟悉术语“FLS文件”或“.fls”文件扩展名......让我试着用手机的例子来解释你... – wrapperm 2010-07-16 06:54:40

+0

扩展名为.FLS的文件是软件闪存文件以供某些诺基亚手机使用。 'Flash'的目的或者'闪烁'的目的是改变手机操作系统或固件。手机操作系统不是存储在硬盘上,而是保存在可以电擦除和重新编程的非易失性计算机存储器的“闪存”中。 “.FLS”文件格式可能特定于用于创建.FLS文件的特定版本的软件。使用不正确的软件可能会导致操作系统损坏。类似的概念与所有ECM一起使用 – wrapperm 2010-07-16 06:55:01

+0

无论您提到的是绝对正确的,我知道上述信息。但我的问题仍然未得到答复。 – wrapperm 2010-07-16 07:02:13

0

在BDM ELF的能力是查看更改存储器位置,并且代码运行时存储器映射寄存器,并且不必将其停止。

通过使用BDM ELF,我们可以拥有硬件观察点或断点。这非常有用,因为您可以在不影响执行速度的情况下更改值。一旦调试器中断,我们可以使用调试内核和应用程序一起找到它发生的确切线路。

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