stringtranslate.com

Дас U-Boot

Das U-Boot (с подзаголовком «Универсальный загрузчик» и часто сокращается до U-Boot ; дополнительную информацию об имени см. в «Истории ») — это загрузчик с открытым исходным кодом , используемый во встроенных устройствах для выполнения различных низкоуровневых задач инициализации оборудования и загрузки. ядро операционной системы устройства. Он доступен для ряда компьютерных архитектур , включая 68k , ARM , Blackfin , MicroBlaze , MIPS , Nios , SuperH , PPC , RISC-V и x86 .

Функциональность

U-Boot — это загрузчик как первого, так и второго этапа. Он загружается ПЗУ системы (например, встроенным ПЗУ процессора ARM) с поддерживаемого загрузочного устройства, такого как SD-карта, диск SATA, флэш-память NOR (например, с использованием SPI или I²C ) или флэш-память NAND. Если есть ограничения по размеру, U-Boot можно разделить на два этапа: платформа загружает небольшой SPL (вторичный загрузчик программ), который представляет собой урезанную версию U-Boot, а SPL выполняет некоторую начальную конфигурацию оборудования. (например, инициализация DRAM с использованием кэша ЦП в качестве ОЗУ) и загрузите более крупную полнофункциональную версию U-Boot. [3] [4] [5] Независимо от того, используется ли SPL, U-Boot выполняет как первый этап (например, настройку контроллеров памяти и SDRAM), так и второй этап загрузки (выполнение нескольких шагов для загрузки современной операционной системы из различные устройства, которые необходимо настроить, предоставляющие пользователям меню для взаимодействия и управления процессом загрузки и т. д.).

U-Boot реализует подмножество спецификации UEFI , как определено в спецификации встроенных базовых требований к загрузке (EBBR). [6] Двоичные файлы UEFI, такие как GRUB или ядро ​​Linux , можно загружать через диспетчер загрузки или из интерфейса командной строки.

U-Boot запускает интерфейс командной строки на консоли или последовательном порту. Используя CLI, пользователи могут загружать и загружать ядро, возможно, изменяя параметры по умолчанию. Также имеются команды для чтения информации об устройстве, чтения и записи флэш-памяти, загрузки файлов (ядер, загрузочных образов и т. д.) из последовательного порта или сети, управления деревьями устройств и работы с переменными среды (которые можно записать в постоянное хранилище). и используются для управления поведением U-Boot, таким как команда загрузки по умолчанию и время ожидания перед автоматической загрузкой, а также данные оборудования, такие как MAC-адрес Ethernet).

В отличие от загрузчиков ПК, которые скрывают или автоматически выбирают области памяти ядра и других загрузочных данных, U-Boot требует, чтобы в командах загрузки явно указывались адреса физической памяти в качестве мест назначения для копирования данных (ядро, виртуальный диск, дерево устройств и т. д.) и для перехода к ядру и в качестве аргументов ядра. Поскольку команды U-Boot довольно низкоуровневые, для загрузки ядра требуется несколько шагов, но это также делает U-Boot более гибким, чем другие загрузчики, поскольку одни и те же команды можно использовать для более общих задач. Можно даже обновить U-Boot с помощью U-Boot, просто прочитав новый загрузчик откуда-то (локальное хранилище, последовательный порт или сеть) в память и записав эти данные в постоянное хранилище, к которому принадлежит загрузчик.

U-Boot поддерживает USB, поэтому он может использовать USB-клавиатуру для управления консолью (в дополнение к вводу через последовательный порт), а также получать доступ и загружаться с USB-устройств массовой памяти, таких как устройства чтения SD-карт.

Хранение данных и источники загрузки

U-Boot загружает операционную систему, считывая ядро ​​и любые другие необходимые данные (например, дерево устройств или образ виртуального диска) в память, а затем запуская ядро ​​с соответствующими аргументами.

Команды U-Boot на самом деле являются обобщенными командами, которые можно использовать для чтения или записи любых произвольных данных. С помощью этих команд данные можно считывать или записывать в любую систему хранения, поддерживаемую U-Boot, включая:

(Примечание. Это источники загрузки, из которых U-Boot может загружать данные (например, ядро ​​или образ виртуального диска) в память. Сам U-Boot должен загружаться платформой, и это должно быть сделано с устройства, которое поддерживает платформа. ROM способен загружаться, что естественно зависит от платформы.)

В некоторых реализациях встроенных устройств ЦП (SoC) находит и загружает загрузчик (например, Das U-Boot) напрямую из загрузочного раздела (например, файловых систем ext4 или FAT ).

Совместимые файловые системы

U-Boot не обязательно должен иметь возможность читать файловую систему, чтобы ядро ​​могло использовать ее в качестве корневой файловой системы или начального виртуального диска; U-Boot просто предоставляет ядру соответствующий параметр и/или копирует данные в память, не понимая их содержимого.

Однако U-Boot также может читать (а в некоторых случаях и записывать) файловые системы. Таким образом, вместо того, чтобы требовать, чтобы данные, которые U-Boot загружал, хранились в фиксированном месте на устройстве хранения, U-Boot может читать файловую систему для поиска и загрузки ядра, дерева устройств и т. д. по имени пути.

U-Boot включает поддержку следующих файловых систем:

Дерево устройств

Дерево устройств — это структура данных для описания компоновки оборудования. Используя дерево устройств, поставщик может использовать менее модифицированную основную версию U-Boot на оборудовании специального назначения. Дерево устройств, также принятое в ядре Linux, предназначено для улучшения ситуации в индустрии встраиваемых систем , где существует огромное количество ответвлений для конкретных продуктов (U-Boot и Linux). Возможность запуска основного программного обеспечения практически гарантирует клиентам отсутствие обновлений от поставщиков.

История

U-Boot на Openmoko Freerunner
U-Boot на XPedite5501

Источником проекта является загрузчик 8xx PowerPC под названием 8xxROM , написанный Магнусом Даммом. [7] В октябре 1999 года Вольфганг Денк переместил проект на SourceForge.net и переименовал его в PPCBoot , поскольку SF.net не допускал, чтобы имена проектов начинались с цифр. [7] Версия 0.4.1 PPCBoot была впервые публично выпущена 19 июля 2000 года.

В 2002 году предыдущая версия исходного кода была ненадолго преобразована в продукт под названием ARMBoot , но вскоре после этого снова была объединена с проектом PPCBoot. 31 октября 2002 г. был выпущен PPCBoot-2.0.0 . Это был последний выпуск под названием PPCBoot, поскольку он был переименован, чтобы отразить его способность работать на других архитектурах, помимо PPC ISA. [8] [9]

PPCBoot-2.0.0 стал U-Boot-0.1.0 в ноябре 2002 года и расширен для работы с процессорной архитектурой x86 . Дополнительные возможности архитектуры были добавлены в следующие месяцы: MIPS32 в марте 2003 г., MIPS64 в апреле, Nios II в октябре, ColdFire в декабре и MicroBlaze в апреле 2004 г. Выпуск U-Boot-1.1.2 в мае 2004 г. работал над этими продуктами. 216 производителей плат различных архитектур. [9]

В нынешнее название Das U-Boot добавлен определенный артикль на немецком языке, чтобы создать двуязычный каламбур классического немецкого фильма о подводных лодках 1981 года Das Boot , действие которого происходит на немецкой подводной лодке времен Второй мировой войны . Это бесплатное программное обеспечение , выпущенное на условиях Стандартной общественной лицензии GNU . Его можно собрать на ПК x86 для любой из предполагаемых архитектур с использованием цепочки инструментов GNU для перекрестной разработки , например Crosstool, Embedded Linux Development Kit (ELDK) или OSELAS.Toolchain.

Важность U-Boot во встроенных системах Linux довольно кратко изложена в книге Карима Ягмура «Building Embedded Linux Systems» , чей текст о U-Boot начинается словами: «Хотя существует немало других загрузчиков, «Das U-Boot» , универсальный загрузчик, возможно, самый богатый, самый гибкий и наиболее активно разрабатываемый из доступных загрузчиков с открытым исходным кодом». [10]

Использование

Смотрите также

Примечания

  1. ^ Это настоящая загрузка NFS (сам U-Boot использует NFS для загрузки ядра), в отличие от загрузки ядра из сети с использованием TFTP и указания, что ядро ​​должно использовать монтирование NFS в качестве корневой файловой системы.

Рекомендации

  1. Рини, Том (3 октября 2022 г.). «Выпущен U-Boot v2022.10». u-boot (список рассылки) . Проверено 9 ноября 2022 г.
  2. ^ "Лицензия Das U-Boot" . git.denx.de. _ 2013 . Проверено 13 октября 2018 г.
  3. ^ «Подготовка образа Uboot для FPGA Altera Cyclone V SoC» .
  4. ^ «U-Boot на i.MX6» . 18 июня 2013 г.
  5. ^ «Загрузчики: u-boot: функции [Аналоговые устройства с открытым исходным кодом | Микросхемы смешанной и цифровой обработки сигналов]» . Архивировано из оригинала 5 сентября 2017 г. Проверено 15 июня 2016 г.
  6. ^ https://github.com/arm-software/ebbr, Спецификация требований к встроенной базовой загрузке (EBBR), получено 25 марта 2021 г.
  7. ^ ab Домашняя страница PPCBoot: Авторы
  8. ^ «[PPCBoot-пользователи] Хэллоуинский выпуск PPCBoot: 2.0.0 - финальный выпуск», Вольфганг Денк, 31 октября 2002 г.
  9. ^ ab "История U-Bootdoc" . Проверено 4 сентября 2011 г.
  10. ^ Создание встраиваемых систем Linux, Карим Ягмур, Глава 9.
  11. ^ Учебное пособие по coreboot oscon 2013, стр. 6
  12. ^ Мы — команда разработчиков программного обеспечения SpaceX, спрашивайте нас о чем угодно!, ответьте 4.
  13. ^ "U Boot · AsahiLinux/docs Wiki" . Гитхаб . Проверено 29 апреля 2022 г.

Внешние ссылки