Embedded Linux-фазы загрузки

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

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

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

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

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

3 ответов


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

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

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

все системы используют вышеуказанное? Нет, некоторые / многие могут использовать только один загрузчик, возможно, с паузой очень рано, чтобы нажатие клавиши на последовательном порту могло прервать загрузчик, доставив вас в место, где вы можете повторно загрузить загрузчик. Учитывая развитие загрузчика с меньшими шансами на кирпичную кладку, но все же шанс, если вы испортите этот первый бит до и включая нажатие клавиши и последовательный флэш-загрузчик. Здесь опять же, что серийный загрузчик вещь не всегда присутствует, просто удобство для разработчиков загрузчика. Часто в качестве отката будет JTAG или съемный выпускной вечер или какую-то другую систему и перепрограммировать ППЗУ когда вы кирпич это (кроме того, иногда таким же образом вы программируете его в первый раз в системе, когда плата производится, некоторые конструкции brickable сэкономить на стоимости и использования запрограммированных мигает во время производства первой загрузки завод.)

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

Это провокационный вопрос, так как ответ сильно зависит от вашей системы, процессора, инженеры (включая вас). Традиционно процессоры загружаются с flash, и загрузчик получает память и некоторые другие вещи, чтобы следующий бит кода мог работать. Этот следующий бит кода может поступать из многих мест, usb, диск, вспышка / rom, локальные сети / bootp / tftp, pcie, mdio, spi, i2c, etc. И между power on reset и linux может быть столько слоев, сколько пожелает или требует дизайн.


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


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