1

问题描述:

我有两个二进制文件(我们称它们为文件 AB)。文件 A 是内核,文件 B 是要运行的应用程序(是的,它是嵌入式操作系统)。对于文件 A,我需要填补从内核末尾到从地址 0x00020000 开始的程序开始之间的空白。

然后从 0x00020000 + 程序长度我需要填补空白到 0x00080000。

我试着调查arm-none-eabi-objcopy gap fill但没有运气。(contiki 使用它)

我基本上有两个问题。我怎么知道何时开始从文件 A到 0x00080000 的填充以及如何进行填充。

如果有不清楚的地方,请告诉我,我会尽我所能更详细地解释。

4

1 回答 1

0

要使用objcopy在最后一部分之后附加填充,您需要--pad-to <address>--gap-fill <fillvalue>.

例如:

arm-none-eabi-objcopy --gap-fill 0x00 --pad-to 0x80000 filea.out filea_padded.out

然而,有必要对目标文件而不是原始二进制文件执行 objcopy。原始二进制文件缺少地址信息和节元数据,这些元数据告诉它间隙和结束地址在哪里。

如果您的“二进制”实际上是一个十六进制文件(例如 Intel 或 S-Record 格式),您可以使用SRecord实用程序套件来操作这些文件,因为格式包括地址/位置元数据。您还可以使用它将两个文件连接成一个图像。

于 2018-06-07T14:10:02.577 回答