集成另一个二进制文件


8

我正在使用GCC和Crossworks为ARM构建二进制文件。我有一个辅助二进制映像,在启动过程中需要将其加载到另一个IC。

我喜欢将此二进制文件集成到我的工具链中,换言之,我将该二进制文件作为映像的一部分,并且每次构建此二进制文件时,都会将该二进制文件集成到最终的二进制文件中,该文件将被加载到CPU中。最佳做法是什么?

谢谢

Answers:


3

您可以objcopy用来将二进制图像转换为目标文件。目标文件将包含可以从C代码访问的符号。然后告诉GCC链接目标文件,您可以使用来访问目标文件中的符号extern,以便将数据加载到另一个IC中。

这是一个关于如何链接二进制Blob 的很好的教程,包括如何列出传递给objcopy使用的选项objdump

当然还有objcopy手册页objdump手册页


超级答案..我总共花了5分钟使这项工作..
Ktc 2012年

附加问题。obj文件运行良好,但是工具链将其放置在RAM中,由于文件大小,这已成为问题。如何强制将此对象放置在Flash上​​?
Ktc

解决了..基本上,objcopy -I binary -O elf32-littlearm -B arm --rename-section .data = .rodata,alloc,load,readonly,data,contents fpga.bin fpga.o这使整个事情变得完整。 rodata和链接器正确放置在闪存中。
2012年

objcopy有很多选择。它可能可以做任何您想做的事情。它只需要大量凝视该手册页即可。感谢您分享您的解决方案,因为我相信这对于希望做您正在做的事情的人来说是一个常见问题。
Embedded.kyle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.