Сборка загрузчика
Загрузчик операционной системы, предназначенный для встраиваемых систем на MIPS, ARM, PowerPC и т.д.
- Версия: 2024.04
- Домашняя страница: https://source.denx.de/u-boot/u-boot
- Время сборки: 10 ОВС
Этот раздел содержит общие инструкции по сборке загрузчика. Поскольку сборка U-Boot специфична как для каждого SoC, так и, возможно, для разных плат/компьютеров, использующих эти SoC, в LFA очень тяжело описать сценарии сборки для каждой модели популярных ARM-компьютеров. Для получения подробных сведений о загрузчике U-Boot, пожалуйста, обратитесь к его документации.
В Дополнительных материалах приведены некоторые переведённые из официальной документации сведения, которые могут пригодиться во время сборки загрузчика и написания скриптов для загрузки ядра операционной системы. Перед началом сборки U-Boot рекомендуем ознакомиться с ними.
Кроме того, работа над этим разделом ещё идёт. Вы можете оказать нам неоценимую помощь, если дополните его новыми инструкциями. В частности, нужны сведения о файлах boot.scr, boot.cmd и uInitrd, а также информация о сборке img-образа с системой. Если вы готовы помочь нам, то можете либо создать issue с предложениями изменений, либо pull request с изменениями.
Примерный порядок сборки
Для большинства SoC перед сборкой U-Boot необходимо иметь скомпилированные дополнительные компоненты. Например, ARM Trusted Firmware. Для того, чтобы узнать, что и как нужно собирать, обратитесь к документации (раздел «Board-specific docs») загрузчика U-Boot. Далее предоставлены общие инструкции для сборки загрузчика для плат, оснащённых Allwinner, Broadcom и Rockchip SoC.
В итоге примерный порядок сборки будет следующим:
- Сборка ряда компонентов загрузчика, таких как, например, TF-A,
crustилиrkbin; - Сборка загрузчика;
- Создание файлов
boot.scr,boot.cmd,uInitrd; - Сохранение файла загрузчика для его записи на флешку или в
img-образ с собранной системой LFA;
Настройка
Директория configs/ содержит шаблоны конфигурационных файлов для поддерживаемых [проектом U-Boot, а не LFA] плат в соответствии со следующей схемой наименования:
<имя платы>_defconfig
Эти файлы лишены настроек по умолчанию. Поэтому вы не можете использовать их напрямую. Вместо этого их имя служит в качестве цели make для генерации фактического конфигурационного файла .config. Например, шаблон конфигурации для платы Odroid C2 называется odroid-c2_defconfig. Соответствующий файл .config генерируется командой:
make odroid-c2_defconfig
Для плат на базе SoC Allwinner:
На вики linux-sunxi также можно найти имя
defconfigфайла на соответствующей странице платы.
Вы можете сконфигурировать пакет командой:
make menuconfig
Сборка
Для сборки вам по прежгнему нужен наш кросс-компилятор. Кроме того, в системе должны быть установлены пакеты
swigиpython-setuptools.
CROSS_COMPILE=$LFA_TGT- make
Компилятор Devicetree
Платам, использующим CONFIG_OF_CONTROL (т.е. почти всем), нужен компилятор Devicetree (dtc). Платам с CONFIG_PYLIBFDT требуется pylibfdt (библиотека Python для доступа к данным Devicetree). Подходящие версии этих библиотек включены в дерево U-Boot в директории scripts/dtc и собираются автоматически по мере необходимости.
Если вы хотите использовать их системные версии, используйте переменную DTC, в которой будет указан путь до dtc:
CROSS_COMPILE=$LFA_TGT- DTC=/usr/bin/dtc make
В этом случае dtc и pylibfdt не будут собраны. Система сборки проверит, что версия dtc достаточно новая. Она также убедится, что pylibfdt присутствует, если это необходимо.
Обратите внимание, что инструменты Host Tools всегда собираются с включенной версией libfdt, поэтому в настоящее время невозможно собрать U-Boot с системной libfdt.
LTO
U-Boot поддерживает link-time optimisation, которая может уменьшить размер скомпилированных двоичных файлов, особенно при использовании SPL.
В настоящее время эта функция может быть включена на платах ARM путём добавления CONFIG_LTO=y в файл defconfig.
Однако в таком случае загрузчик будет собираться несколько медленнее, чем без LTO.
Установка
Процесс установки U-Boot специфичен для каждого компьютера. На данный момент в руководстве поддерживаются компьютеры на базе SoC Allwinner, Broadcom и Rockchip, а также установка U-Boot для эмуляции в QEMU.