【发布时间】:2018-06-07 10:11:12
【问题描述】:
问题描述:
我有两个二进制文件(我们称它们为 file A 和 B)。文件 A 是内核,文件 B 是要运行的应用程序(是的,它是嵌入式操作系统)。对于文件 A,我需要填补从内核末尾到从地址 0x00020000 开始的程序开始之间的空白。
然后从 0x00020000 + 程序长度我需要填补空白到 0x00080000。
我尝试调查arm-none-eabi-objcopy gap fill,但没有运气。(contiki 使用它)
我基本上有两个问题。我怎么知道什么时候从 file A 开始填充到 0x00080000 以及如何进行填充。
如果有什么不清楚的地方请告诉我,我会尽我所能详细解释。
【问题讨论】:
-
srec_cat 或许可以做到这一点。或者只是编写您自己的自定义程序来执行您想要的基本文件 I/O。
-
@kkrambo 建议的 SRecord 实用程序套件是我的建议。我不确定该建议是否值得回答,而不仅仅是评论。
-
你没有展示你是如何尝试使用 objcopy 的——你当然不会像你的问题中那样使用它。
arm-none-eabi-objcopy --gap-fill xx后面可能还有其他参数。但是--gap-fill单独填补了 部分之间的空白,而不是单独文件中的地址空间之间的空白。 -
对于实际的二进制文件,您可以在需要时使用
dd和/dev/zero作为源的各种选项。了解您需要多少填充是一个简单的问题,即计算出您拥有的部分的大小并相对于地址进行数学运算。虽然使用dd方法,您也可以从创建一个充满零的文件开始,然后在正确的偏移量处写入所需的部分。
标签: binary embedded padding contiki objcopy