Встроенный Linux - этапы загрузки

Хочу систематизировать свои знания U-Boot / linux. Верно ли, что для каждой встроенной платформы требуется минимум 2 фазы загрузчика? Или следующий процесс может отличаться?

  1. Загрузчик 1-го уровня (может быть U-Boot) хранится во внутреннем ПЗУ процессора и не может быть обновлен. Он будет запускаться из внутренней кэш-памяти. Эта U-Boot должна (как минимум): инициализировать ОЗУ, инициализировать внешнюю флеш-память, инициализировать последовательную консоль, прочитать и запустить загрузчик 2-го уровня.

  2. Загрузчик 2-го уровня (может быть U-Boot) хранится во флэш-памяти RW. Он будет обрабатывать Ethernet, функции flash RW и т. Д. Этот U-Boot можно настроить и перезаписать. Основная задача - загрузить ядро ​​Linux в оперативную память и запустить его.

  3. запуск ядра Linux.

Всегда ли загрузчик 1-го уровня доступен только для чтения?


person Bartlomiej Grzeskowiak    schedule 26.09.2011    source источник


Ответы (3)


Где и как находится этот первый загрузчик, сильно зависит от системы. У вас может быть какое-то загрузочное устройство USB, которое перечисляет и загружает микропрограммы для оперативной памяти всего оборудования, после чего процессор загружается с этой оперативной памяти.

Обычно да, первая загрузка - это какая-то флешка. Это хорошая идея, чтобы этот первый загрузчик был очень простым, по сути, на 100% свободным от ошибок, прочным и надежным, возможно, с последовательным или другим способом входа, чтобы вы могли использовать его для замены второго / настоящего загрузчика.

В идеале второй загрузчик также должен быть флэш-памятью, второй загрузчик захочет выполнять основную часть работы, инициализируя ddr, настраивая Ethernet, если он хочет иметь какую-то отладку на основе Ethernet или передачу файлов, bootp и т. Д. Поскольку он значительно больше и сложнее, ожидается, что он будет содержать ошибки и будет обновляться чаще, чем основной загрузчик. Мы надеемся, что первичный загрузчик защищен от перезаписи, так что вы можете легко заменить второй загрузчик, не разрушая систему.

Все ли системы используют вышеуказанное? Нет, некоторые / многие могут использовать только один загрузчик, при этом, возможно, есть очень ранняя пауза, так что нажатие клавиши на последовательном порту может прервать загрузчик, что приведет вас к месту, где вы можете повторно загрузить загрузчик. Допускается разработка загрузчика с меньшими шансами на разрушение, но все же есть шанс, если вы испортите этот первый бит раньше, включая нажатие клавиши и серийный загрузчик флеш-памяти. И снова эта штука с серийным загрузчиком присутствует не всегда, это просто удобство для разработчиков загрузчика. Часто запасным вариантом будет jtag, или съемный выпускной вечер, или какой-либо другой системный способ войти и перепрограммировать выпускной вечер, когда вы его кирпичите (также иногда так же, как вы программируете его в первый раз в системе, когда выпускается плата, некоторые проекты кирпичи для экономии средств и использования предварительно запрограммированных вспышек во время производства, чтобы первая загрузка работала).

Загрузчик linux не требует ничего / всего этого, очень-очень минимального, установочного плунжера, подготовки командной строки или atags или чего-то еще и перехода к linux.

Это загруженный вопрос, поскольку ответ во многом зависит от вашей системы, процессора и инженеров-проектировщиков (включая вас). Обычно процессоры загружаются с флэш-памяти, а загрузчик получает память и некоторые другие вещи, чтобы можно было запустить следующий фрагмент кода. Этот следующий фрагмент кода может поступать из разных мест: USB, диск, флэш / ROM, Ethernet / bootp / tftp, pcie, mdio, spi, i2c и т. Д. И может быть столько уровней между сбросом при включении питания и запуском Linux, сколько дизайн желает или требует.

person old_timer    schedule 27.09.2011

Загрузчик первого уровня не обязательно должен быть доступен только для чтения, но размещение загрузчика только для чтения в ПЗУ с некоторым режимом восстановления полезно в случае повреждения частей флэш-памяти для чтения и записи; в противном случае вам потребуется физически подключить программатор к микросхеме флэш-памяти для восстановления.

person bdonlan    schedule 26.09.2011

Если вы используете U-Boot, загрузчик 2-го уровня можно пропустить, чтобы ускорить загрузку. Другими словами, загрузчик первой ступени (SPL) загрузит ядро ​​Linux напрямую, пропуская загрузчик второй ступени (u-boot). В U-Boot это называется Режим сокола.

person Adam Lee    schedule 20.05.2014