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

Встраиваемые Linux - этапы загрузки

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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