2014-03-14 7 views
1

Я использую this port of FreeRTOS, и я загружаю его на Cortex-M3 в OMAP4430. Это отлично работает с использованием структуры удаленного proc, и я могу использовать RPMsg для связи с ним.Remote Proc не может загрузить FreeRTOS Elf

Иногда, однако, rproc не удается загрузить эльф и выдает следующую ошибку:

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

Это, кажется, происходит, когда размер эльфа файл становится слишком большим: это происходит, когда размер 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 оставалась небольшой?

Спасибо!

ответ

1

Убедитесь, что константы конфигурации FreeRTOS configTEXT_SIZE и configDATA_SIZE согласны с суммой, требуемой вашим скриптом компоновщика. Например, если ваш компоновщик скрипт содержит

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

, то вы должны установить configTEXT_SIZE и configDATA_SIZE к 0x100000.

 Смежные вопросы

  • Нет связанных вопросов^_^