U-boot: переезд

Это основной вопрос, связанный с U-Boot.

Почему код u-boot переместился сам?

Хорошо, имеет смысл, если u-boot выполняется из NOR-flash или из пространства загрузочного ПЗУ, но если он уже запускается из SDRAM, почему он должен переместить себя еще раз?

 Chris Stratton24 мая 2013 г., 22:06
Нужно еще один голос для повторного открытия.
 Leo Messi24 мая 2013 г., 22:05
ПОЧЕМУ это закрыто? Разве это не связанный вопрос?
 Chris Stratton24 мая 2013 г., 16:19
Это не должно было быть закрыто.

Ответы на вопрос(3)

Код NOR flash должен инициализировать SDRAM, затем скопировать код из Nor Flash в SDRAM, процесс скопирует сам,потому что вы можете включить MMU, мы начнем виртуальное сопоставление адресов.

Этот вопрос часто возникает.Хорошие ответы иногда тоже.

Я согласен, что это удобно для загрузки сборки в SDRAM во время разработки. Это работает для меня, я делаю это все время. У меня есть специальный загрузочный код во флэш-памяти, который не включает MMU / кэш. Для моих сборок u-boot я переключаю CONFIG_SYS_TEXT_BASE между сборками flash и ram. Я регулярно запускаю свои разработки.

С практической точки зрения обработка повторной инициализации MMU / кеша была бы нетривиальным вопросом. А U-Boot выигрывает у IMO от простоты, так как не учитывает подобные вещи.

Технический лидер в Denx выразил своюмнение, IIRC его другие посты сформулированы сильнее, чем этот. У меня складывается впечатление, что он не любит повторяться.

Обновить:Зачем переселиться. Доступ к памяти быстрее из ОЗУ, чем из ПЗУ, это особенно важно, если у цели нет кэша команд. Выполнение из ОЗУ позволяет перепрограммирование флэш-памяти; также (более незначительный) это позволяет программным точкам прерывания с "ловушка» инструкции; и это больше похоже на цель "нормальный режим работы, например, если Пакетные чтения из ОЗУ сомнительны, ошибка будет видна при ранней загрузке.

 Joe Kul25 мая 2013 г., 17:32
[ладонью по лбу] Тыверно. Ответ обновлен.
 Chris Stratton24 мая 2013 г., 16:22
Ссылка на самом деле не является ответом на вопрос, но то, что вы, по-видимому, предполагаете, является мотивом вопроса. На эту тему интересен ваш комментарий по повторной инициализации MMU - та платформа, на которой ямы загрузили U-Bootот U-Boot без значительных трудностей неу меня есть настоящий MMU.

U-boot должен зарезервировать 3 области памяти, в которой хранятся: 1) сам u-boot, 2) uImage (сжатое ядро) и 3) несжатое ядро. Эти 3 региона должны быть аккуратно помещены в U-boot, чтобы предотвратить конфликт.

Тем не менее, загрузчик предыдущего этапа (BL2 или BL1), который переносит u-boot в память DRAM, не знает u-boot 'Планируя эти 3 региона. Таким образом, он может загружать U-boot только по более низкому адресу в памяти DRAM и переходить к нему. Затем, после того, как u-boot выполнит некоторую базовую инициализацию и обнаружит, что текущий ПК не находится в запланированном месте, функция перемещения вызова u-boot переместит u-boot в запланированное место и перейдет к нему.

Ваш ответ на вопрос