Загрузите U-boot из оперативной памяти с помощью U-boot

Я хотел бы загрузить образ U-boot из ОЗУ, используя другой U-boot. Я загрузил образ U-boot в ОЗУ с помощью tftp tftp 0x90000000 u-boot.img и попытался запустить его с помощью go 0x90000000, но ничего не происходит. Я предполагаю, что есть некоторые конфликты, касающиеся инициализации. Когда я зашел в код U-boot, я нашел в файле /arch/arm/cpu/armv7/start.S следующий комментарий делаем важные инициализации только если не запускаем по памяти!. Итак, у меня есть несколько вопросов.

  • Во-первых, возможно ли это сделать?

  • Любая идея о том, что это за важные инициализации?

  • И есть ли что-то еще, что мне нужно удалить из кода u-boot?


person EngineerN    schedule 06.07.2015    source источник
comment
Обычно вы не можете загрузить и запустить U-Boot по произвольному адресу. U-Boot обычно создан (т. е. связан) для загрузки и запуска по определенному адресу, указанному в CONFIG_SYS_TEXT_BASE.   -  person sawdust    schedule 07.07.2015
comment
@опилки Спасибо. Я этого не знал. Мне удалось загрузить u-boot, но я не могу с его помощью загрузить ядро ​​Linux. он застрял в Проверка контрольной суммы... функции bootm. Любые идеи ?   -  person EngineerN    schedule 08.07.2015
comment
Похоже, стек и/или текст были перезаписаны. Вам нужно найти, где все находится в памяти, и нарисовать карту памяти. Обратите внимание, что U-Boot может перемещаться со своего загруженного адреса в старшую память. Рассмотрите возможность включения вывода отладки, как указано в начале arch/arm/lib/board.c. Основные сообщения будут такими: Новый указатель стека:... и Теперь выполняется в ОЗУ — U-Boot at:...   -  person sawdust    schedule 09.07.2015


Ответы (1)


Я потратил пару дней, пытаясь сделать то же самое, чтобы избежать хлопот с записью каждой новой версии образа на прошивку, в конце концов, если у меня есть рабочий загрузчик, почему бы не загрузить из него новую версию. Я думаю, что этот раздел страницы документации U-Boot прекрасно объясняет, почему это не < del>im возможно.

Если вы хотите запустить U-Boot из другого загрузчика, вы должны отключить много кода, т.е. е. все части инициализации, которые уже были выполнены этим другим загрузчиком...


Код, который вы должны отключить, содержит наиболее важные части U-Boot, т.е. е. это области, в которых находится 99% или более всех ошибок при переносе U-Boot на новое оборудование. В результате ваш образ RAM может работать, но в итоге вам понадобится полный образ, чтобы запрограммировать с его помощью флэш-память, а затем вам придется включить весь этот весьма критичный и совершенно непроверенный код.

person n1colas.m    schedule 04.04.2020