远程进程无法加载FreeRTOS Elf



我正在使用这个FreeRTOS端口,我正在将它加载到OMAP4430内的Cortex-M3上。使用远程进程框架可以很好地工作,并且我可以使用RPMsg与它通信。

然而,有时,rproc无法加载elf并给出以下错误:

rproc remoteproc1: bad phdr da 0x0 mem 0x10310
rproc remoteproc1: Failed to load program segments: -22
rproc remoteproc1: rproc_boot() failed -22

这似乎发生在elf文件的大小变得太大时:当大小为377331字节时发生,但当我简单地删除一堆打印语句并将大小降低到342563字节时不会发生。

我已经追踪到这段代码:http://lxr.free-electrons.com/source/drivers/remoteproc/remoteproc_elf_loader.c?v=3.9#L188。rproc_da_to_va似乎无法在内存中找到足够大的段来容纳ELF。

我如何确保我的ELF有足够的内存?我能告诉内核我特别想为这类东西预先分配一个特定的区域吗?是否有某种方法可以确保我的ELF的这一部分仍然很小?

谢谢!

确保FreeRTOS配置常量configTEXT_SIZEconfigDATA_SIZE与您的链接器脚本所要求的数量一致。例如,如果您的链接器脚本包含

MEMORY
{
  TEXT (rwx) : ORIGIN = 0x00000000, LENGTH = 1M
  DATA (rwx) : ORIGIN = 0x80000000, LENGTH = 1M
}

则应将configTEXT_SIZEconfigDATA_SIZE设置为0x100000

相关内容

  • 没有找到相关文章

最新更新