Подтвердить что ты не робот

U-boot: Перемещение

Это один из основных вопросов, связанных с u-boot.

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

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

4b9b3361

Ответ 1

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

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

Как практический вопрос, обработка повторной инициализации MMU/cache была бы нетривиальным вопросом. И U-Boot приносит пользу ИМО от простоты, как результат, оставляя такие вещи.

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

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

Ответ 2

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

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

Ответ 3

Код флэш-памяти NOR должен инициализировать SDRAM, Затем скопировать код из Nor Flash в SDRAM. Процесс будет скопировать сам, , потому что вы можете включить MMU, мы начнем отображение виртуальных адресов.