Remote Proc无法加载FreeRTOS Elf

时间:2014-03-14 14:50:34

标签: elf cortex-m3 omap remote-process

我正在使用this port of FreeRTOS,我将它加载到OMAP4430内的Cor​​tex-M3上。使用远程proc框架可以正常工作,我可以使用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字节时会发生这种情况,但是当我只删除一堆print语句并将大小降低到342563字节时就不会发生这种情况。

我已将错误消息跟踪到这段代码:http://lxr.free-electrons.com/source/drivers/remoteproc/remoteproc_elf_loader.c?v=3.9#L188。似乎rproc_da_to_va无法在内存中找到足以容纳ELF的段。

如何确保有足够的内存用于ELF的大小?我可以告诉内核我特别想要为这种事情预先分配某个区域吗?有没有办法确保我的ELF的这一部分仍然很小?

谢谢!

1 个答案:

答案 0 :(得分:1)

确保FreeRTOS配置常量configTEXT_SIZEconfigDATA_SIZE与链接描述文件所需的数量一致。例如,如果链接描述文件包含

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

然后您应该将configTEXT_SIZEconfigDATA_SIZE设置为0x100000