将特定地址中的二进制文件填充到地址

时间:2018-06-07 10:11:12

标签: binary embedded padding contiki objcopy

问题描述:

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

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

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

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

如果有什么不清楚请告诉我,我会尽力详细解释我的能力。

1 个答案:

答案 0 :(得分:0)

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

e.g:

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

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

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