Встроенный Linux - этапы загрузки - PullRequest
11 голосов
/ 27 сентября 2011

Я хотел бы систематизировать свои знания 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-й ступени доступен только для чтения?

Ответы [ 3 ]

11 голосов
/ 27 сентября 2011

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

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

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

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

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

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

6 голосов
/ 27 сентября 2011

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

4 голосов
/ 20 мая 2014

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

...