Embedded 在嵌入式系统中将ELF可执行文件拆分为两个文件

Embedded 在嵌入式系统中将ELF可执行文件拆分为两个文件,embedded,linker,fpga,Embedded,Linker,Fpga,我在Virtex4 FPGA中使用Xilinx Microblaze CPU核。我想在我当前的代码中添加一个新的代码部分,但是我的代码将超过它烧录到的闪存的大小。因此,我想将添加的代码刻录到另一个flash中 我的代码由引导加载程序复制到RAM,然后跳转到RAM并开始定期执行。我打算以同样的方式从第二个闪存复制新代码,在RAM中与从已经使用的闪存复制的代码相邻 为此,我实际上需要两个单独的elf可执行文件,每个烧掉的闪存一个,它们之间有一个精确的间隔,定义每个文件中驻留的例程。应启用跨文件的例行

我在Virtex4 FPGA中使用Xilinx Microblaze CPU核。我想在我当前的代码中添加一个新的代码部分,但是我的代码将超过它烧录到的闪存的大小。因此,我想将添加的代码刻录到另一个flash中

我的代码由引导加载程序复制到RAM,然后跳转到RAM并开始定期执行。我打算以同样的方式从第二个闪存复制新代码,在RAM中与从已经使用的闪存复制的代码相邻

为此,我实际上需要两个单独的elf可执行文件,每个烧掉的闪存一个,它们之间有一个精确的间隔,定义每个文件中驻留的例程。应启用跨文件的例行调用

我的问题是:如何生成这些单独的elf文件,并在每个文件中精确指定例程?有没有办法将一个可执行文件拆分为两个单独的文件?或者有没有其他解决方案可以在嵌入式系统中生成单独的可执行文件/库文件作为单个链接的输出

谢谢,
Ishai

如果您可以使用动态库,您可以将可执行文件中的一些代码分解成一个,只需在每个闪存区域中放置一个文件。

如果您可以使用动态库,您可以将可执行文件中的一些代码分解成一个,只需在每个闪存区域中放置一个文件。

如果您可以在RAM中重新组合二进制文件,那么链接到单个二进制文件,然后拆分生成的文件就可以了。您必须保证引导加载程序功能包含在主半部分中。最简单的方法是创建一个独立的引导加载程序二进制文件


在将二进制文件复制到闪存之前,您可以使用或之类的实用程序对其进行分割。

如果您可以在RAM中重新组合二进制文件,那么链接到单个二进制文件,然后分割生成的文件应该是非常好的。您必须保证引导加载程序功能包含在主半部分中。最简单的方法是创建一个独立的引导加载程序二进制文件

在将二进制文件复制到flash之前,可以使用或之类的实用程序对二进制文件进行分割

假设您已经完成了显而易见的操作,并运行了“strip”来生成没有调试符号的二进制文件副本。调试信息在实际目标上没有用处

如果剥离的二进制文件仍然大于闪存,则可以使用拆分该二进制文件。除了分割文件之外,它还有更多的选项,如添加校验和、CRC以及支持多种文件格式

如果您的RAM足够大,可以容纳所有程序,那么就不需要特别制作单独的ELF文件/DLL。只需将您的程序构建为在RAM地址空间中运行的一个大型整体式程序,并让引导加载程序将其中的一部分从闪存加载到RAM

假设您已经完成了显而易见的操作,并运行了“strip”来生成没有调试符号的二进制文件副本。调试信息在实际目标上没有用处

如果剥离的二进制文件仍然大于闪存,则可以使用拆分该二进制文件。除了分割文件之外,它还有更多的选项,如添加校验和、CRC以及支持多种文件格式


如果您的RAM足够大,可以容纳所有程序,那么就不需要特别制作单独的ELF文件/DLL。只需将您的程序构建为一个巨大的整体程序,在RAM地址空间中运行,并让引导加载程序将部分程序从闪存加载到RAM。

您的RAM比闪存大?您的RAM比闪存大?