问题描述:
我有两个二进制文件(我们称之为文件A 和 B )。文件A是内核,文件B是要运行的应用程序(是的,它是嵌入式操作系统)。对于文件A,我需要填补从内核末尾到程序启动的空白,从地址0x00020000开始。
然后从0x00020000 +程序长度我需要填补空缺到0x00080000。
我试着查看arm-none-eabi-objcopy gap fill
没有运气。(contiki使用它)
我基本上有两个问题。我怎么知道何时从文件A 到0x00080000开始填充,显然如何进行填充。
如果有什么不清楚请告诉我,我会尽力详细解释我的能力。
答案 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实用程序套件来操作它们,因为格式包括地址/位置元数据。您也可以使用它将两个文件连接成一个图像。