【问题标题】:BDM elf file vs normal elf fileBDM elf 文件与普通 elf 文件
【发布时间】:2011-03-16 07:18:30
【问题描述】:

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

我对这两者都有以下了解:

  1. BDM ​​ELF 文件可用于通过任何调试器工具进行调试 通过插入 JTAG 就像 Trace32 一样。普通的 ELF 文件也可以 用于调试目的,前提是我们有相应的 FLS 文件(Flash 文件),必须被闪存到的 ROM 区域 ECM。
  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 格式发布。

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

【问题讨论】:

    标签: c++ c debugging elf trace32


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      好的,我再试一次:

      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/

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

        • 我想你对“FLS文件”或“.fls”文件扩展名这个术语不太熟悉……让我试着用手机的例子来解释一下……
        • 扩展名为 .FLS 的文件是用于某些诺基亚手机的软件闪存文件。 “Flash”的目的或者更确切地说“Flashing”的目的是改变手机操作系统或固件。手机操作系统不存储在硬盘上,而是保存在“闪存”中,这是一种非易失性计算机存储器,可以电擦除和重新编程。 “.FLS”文件格式可能特定于用于创建特定版本的 .FLS 文件的软件。使用不正确的软件可能会导致操作系统损坏。所有 ECM 都使用类似的概念
        • 无论您提到什么都是绝对正确的,我知道上述信息。但我的问题仍未得到解答。
        猜你喜欢
        • 2023-03-15
        • 2021-12-17
        • 2011-03-07
        • 2013-03-29
        • 2011-04-02
        • 2010-10-22
        • 2017-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多