Das U-Boot - Das U-Boot

Das U-Boot
U-Boot Logo.svg
Разработчики)Разработка программного обеспечения DENX
изначальный выпуск15 октября 1999 г.; 21 год назад (1999-10-15)
Стабильный выпуск
v2020.10 / 5 октября 2020 г.; 52 дней назад (2020-10-05)[1]
Предварительный выпуск
v2021.01-rc2 / 9 ноября 2020 г.; 17 дней назад (2020-11-09)[2]
Репозиторий Отредактируйте это в Викиданных
Написано вC, Сборка
Доступно ванглийский
ТипЗагрузчик
ЛицензияGPLv2 +[3]
Интернет сайтwww.denx.de/ wiki/ U-Boot/ Отредактируйте это в Викиданных

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

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

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

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

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

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

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

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

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

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

  • Встроенное или прикрепленное хранилище
    • SD Card
    • SATA
    • SCSI
    • I²C (например, EEPROM или NOR flash)
    • SPI (например, вспышка NOR или NAND)
    • ONFI (необработанная вспышка NAND)
    • eMMC (управляемая вспышка NOR или NAND)
    • NVMe
    • Запоминающее устройство USB
  • Последовательный порт (передача файлов)
  • Сетевая загрузка (опционально с использованием DHCP, BOOTP или RARP)

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

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

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

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

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

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

История

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-загрузка-0.1.0 в ноябре 2002 г. расширился до работы над x86 архитектура процессора. Дополнительные возможности архитектуры были добавлены в следующие месяцы: MIPS32 в марте 2003 г., MIPS64 в апреле, Ниос II в октябре, Холодный огонь в декабре и MicroBlaze в апреле 2004 г. Выпуск U-Boot-1.1.2 в мае 2004 г. работал с продуктами 216 производителей плат различных архитектур.[9]

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

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

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

  • ARM на базе Chromebook поставляется с U-Boot. Chromebook на базе Celeron и i5 используют его в качестве полезной нагрузки для coreboot.[11]
  • В PowerPC на основе серии AmigaOne компьютеры работают AmigaOS использовать U-Boot, в частности Sam440ep и Sam460ex от ACube Systems Srl, и AmigaOne X5000 от A-Eon, преемника AmigaOne X1000.
  • Ubiquiti Networks устройства используют U-Boot
  • Устройства Amazon Kindle используют U-Boot в качестве загрузчика.
  • TP-Link и несколько других совместимых с OpenWRT / LEDE беспроводных маршрутизаторов на базе MIPS используют U-Boot для загрузки.
  • Сотовые маршрутизаторы Teltonika используют загрузчик на основе U-Boot.
  • Falcon и Dragon от SpaceX используют U-Boot[12]

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

Заметки

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

использованная литература

  1. ^ «Цикл выпуска U-Boot». u-boot (Список рассылки).
  2. ^ Рини, Том (9 ноября 2020 г.). "Выпущен U-Boot v2021.01-rc2". u-boot (Список рассылки). Получено 10 ноября 2020.
  3. ^ «Лицензия Das U-Boot». git.denx.de. 2013. Получено 2018-10-13.
  4. ^ http://xillybus.com/tutorials/u-boot-image-altera-soc
  5. ^ https://boundarydevices.com/u-boot-on-i-mx6/
  6. ^ «Архивная копия». Архивировано из оригинал на 2017-09-05. Получено 2016-06-15.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  7. ^ а б Домашняя страница PPCBoot: Авторы
  8. ^ «[PPCBoot-users] Хэллоуинский релиз PPCBoot: 2.0.0 - финальный релиз»., Вольфганг Денк, 31 октября 2002 г.
  9. ^ а б "История U-Bootdoc". Получено 4 сентября, 2011.
  10. ^ Построение встраиваемых систем Linux Карим Ягмур, Глава 9
  11. ^ coreboot учебник oscon 2013, п. 6
  12. ^ Мы команда разработчиков программного обеспечения SpaceX, спрашивайте нас о чем угодно!, ответ 4

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