Почему мы не можем напрямую загрузить ядро в ОЗУ из флэш-памяти без загрузчика? Если мы загрузим его, что произойдет? На самом деле процессор не поддерживает его, но почему мы следуем процедуре?
Bartek, Artless и Felipe все дают части изображения.
Каждый встроенный тип процессора (Е.Г. 386EX, Coretex-A53, EM5200) будет делать что-то автоматически при его сбросе или включении питания.Иногда это что-то различается в зависимости от того, выполняется ли питание циклически или устройство сбрасывается. Некоторые встроенные процессоры позволяют вам изменить это значение что-то на основе напряжений, применяемых к разным контактам при питании или сбросе устройства.
Несмотря на это, существует ограниченное количество то, что процессор может сделать, из-за физического пространства на-процессоре требуется определить, что что-то, будь то на микросхеме FLASH, инструкция микро-код или какой-либо другой механизм.
Это ограничение означает, что что-то является
- неподвижной целью, делает одно, как можно быстрее.
- ограничен в объеме и возможностях, обычно загружая небольшой блок кода (часто несколько килобайт или менее) в фиксированную ячейку памяти и исполняемый с начала загруженного кода.
- невозмещаемый.
Так что процессор делает в ответ на сброс или мощность цикла не может быть изменен, и не может сделать очень много, и мы не хотим, чтобы он автоматически копировать сотни мегабайт или гигабайт в памяти, которая не может существовать или не может быть инициализирован, и который может занять время ожидания.
Так ....
Мы создали небольшую программу, которая меньше, чем размер минимального допустимого во всех устройств, которые мы будем использовать. Эта программа хранится везде, где что-то нуждается в этом.
Иногда небольшая программа U-Boot. Иногда даже U-Boot слишком большой для начальной загрузки, поэтому небольшая программа, в свою очередь, загружает U-Boot.
Дело в том, что все, что загружается в то, является изменяемый по мере необходимости для конкретной системы. Если это U-Boot, отлично, если нет, то он знает, где загрузить основную операционную систему или где загружать U-Boot (или какой-то другой загрузчик).
U-Boot (говоря о загрузчиках в целом), затем настраивает минимальный набор устройств, памяти, настроек чипа и т. Д., Чтобы включить загрузку и запуск основной ОС. Основная ОС init заботится о любой дополнительной конфигурации или инициализации.
Итак последовательность:
- Процессор включения питания или сброса
- Что-то загружает исходный код загрузки (или U-Boot стиле встроенный загрузчик)
- Начальный код загрузки (может не требуется)
- U-Boot (или другой общий встроенный загрузчик)
- Linux init
«Почему мы не можем напрямую загружать ядро в оперативную память из флэш-памяти» - это точно, что делает загрузчик. –
Бартек прав. DIY, и я уверен, что это то, что мы называем загрузчиком. – Yang
Даже если код запускается непосредственно со встроенной вспышки, как вы собираетесь загружать флеш-память? Вам, вероятно, понадобится прошивка для загрузки флэш-памяти ... –