2016-11-20 2 views
-1

У меня есть MPC5200 v2.2, Core v1.4 на phyCORE-MPC5200-крошечный совет. DRAM 64 МБ, FLASH 16 МБ. RTOS VxWorks 6.9.Почему U-Boot (DENX) остается в загрузочном цикле и дает «Исключение программы»?

У меня возникли проблемы при загрузке встроенной системы, и он остается в загрузочном цикле, когда U-Boot/uboot (DENX) пытается загрузить изображение загрузки, говоря: «Исключить проверку программы».

Для отладки во время разработки я использую TFTP-сервер для загрузки двоичного файла vxWorks непосредственно в ОЗУ (команда U-Boot: 'tftpboot 0x100000 vxWorks.bin'). В этом случае все работает нормально. Для выпуска чистый * .bin файл VxWorks (размер 8,07 МБ (8,462.808 байт)) сжимается и упаковывается в файл образа совместимого с U-Boot (с информацией о заголовке загрузчика) и результирующим размером 5, 25 МБ (5,509,763 байт). Файл изображения помещается на флеш, откуда он несжатый и загружается в ОЗУ (команда U-Boot: «bootm 0xff800000»). После этого вызывается вышеупомянутое исключение, что приводит к циклу перезагрузки (см. Снимок экрана ниже).

Я уже исследовал, что если подготовленное изображение имеет размер менее 5 МБ, U-Boot загружает его без ошибок. Может быть, и несжатый размер файла может быть проблемой ?! (На 8Мбах?)

enter image description here

У вас есть какие-либо идеи, как эта проблема может быть решена?

+0

Не размещайте изображения текста! – Olaf

+0

Кажется, что проблема возникла из-за ограничения в 8 Мбайт в U-Boot при использовании команды bootm. Любые идеи о том, как обойти этот предел bootm? – Chris

+0

Я исследовал, что неудачной точкой является неутешительный шаг «bootm». Через TFTP (и команду «cp») я скопировал несжатый двоичный файл и сжатое изображение во флэш. Затем я снова попытался загрузить сжатое изображение с помощью bootm. После ожидаемого сбоя и сброса я смог сравнить несжатые данные (по «bootm») в ОЗУ с несжатыми двоичными данными во флэш-памяти (с помощью команды «cmp»). Точно после 8mb данные больше не совпадают! Во втором тесте я создал несжатое изображение, которое «bootm» может загрузиться без проблем. Есть идеи? – Chris

ответ

1

U-boot (с 2011.06) предоставляет переменную среды «bootm_mapsize», чтобы изменить пространство, необходимое для загрузки образа ядра.

Однако ваш u-boot кажется действительно старым; & может не содержать этого.

В вашем U-Boot Я понимаю, это значение устанавливается в "включить/конфиги /" файл, как:

определяют CONFIG_SYS_BOOTMAPSZ (8 < < 20)/* Начальная карта памяти для Linux */

Вы можете изменить это значение & перекомпилировать u-boot, чтобы решить эту проблему.

Надеюсь, это поможет.

+0

Спасибо за этот намек. Мы проверим, повлияет ли это на поведение. Первоначально мы могли узнать, что вышеуказанный параметр не существует в нашей версии, но вместо этого соответствует CFG_BOOTMAPSZ. – Chris

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