我正在使用这个 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 的这部分仍然很小?
谢谢!