1

我正在使用这个 FreeRTOS 端口,并将其加载到 OMAP4430 内的 Cortex-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 字节时会发生这种情况,但当我简单地删除一堆打印语句并将大小降低到 342563 字节时不会发生这种情况。

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

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

谢谢!

4

1 回答 1

1

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

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

那么你应该设置configTEXT_SIZEconfigDATA_SIZE0x100000

于 2014-03-30T18:12:34.063 回答