1. Дистрибутив Buildroot
1.1. Получение дистрибутива
Дистрибутив распространяется на странице https://dist.elvees.com/mcom03/buildroot/. Пример иерархии директорий 20220420:
└── rockpi
├── graphs/
├── images/
├── git-info.json
├── manifest.json
└── rockpi-defconfig-src.tar.gz
В поддиректориях выкладываются архивы исходных кодов и образы для поддерживаемых модулей MCom-03 BuB, ROCK Pi N10, и т.п.
В файле git-info.json
перечислены SHA-версии пакетов Buildroot.
В директории images
хранятся предсобранные образы и архивы:
sbl.bin
— для прошивки QSPI0,rootfs.tar.gz
— для прошивки SD-карты или eMMC,aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz
— комлпект тулчейнов ARM, MIPS, DSP, комплект создан командойmake sdk
, подробнее см «Build an external toolchain with Buildroot» в Buildroot manual.
Файл images/tar2dev
использутся для прошивки SD-карты, см. howto-flash-sd.
Для сборки необходимо скачать содержимое директории (например rockpi
), распаковать
архив с исходными кодами *-defconfig-src.tar.gz
, перейти в распакованную
директорию:
tar -xf ..-defconfig-src.tag.gz
cd ..-defconfig-src
Примечание
Архив *-defconfig.src
подготовлен командами:
make mcom03_defconfig FRAGMENTS=<someboard>
make source
tar -czf ...defconfig-src.tag.gz ...
1.2. Сборка в «родной» ОС (native)
Перед сборкой необходимо установить системные пакеты, пакеты брать из соответствующих
файлов Dockerfile.*
(например centos7, ubuntufocal, и т.д.).
Примечание
Распространяемый архив был собран в Docker-контейнере DOCKERFILE=Dockerfile.centos7
.
Примененный файл конфигурации buildroot/.config
содержит список пакетов строго для данной среды. В случае смены ОС требуется повторное применение конфигурации
docker-build.sh make ..._defconfig ...
. При запуске make
из сети могут быть
скачиваться дополнительные пакеты.
Для сборки Buildroot для ROCK Pi N10 необходимо выполнить:
make mcom03_defconfig FRAGMENTS=rockpi
make
Собранные образы доступны в директории buildroot/output/images
, описание файлов см.
getting-source.
При сборке Buildroot могут быть использованы любые стандартные команды: make source
,
make <package>-reconfigure
, make menuconfig
. Подробнее см. официальный Buildroot manual.
1.3. Сборка в среде Docker
Установите и настройте Docker: добавить пользователя в группу docker, настроить прокси для клиента и сервера.
Собрать в среде Docker:
export DOCKERFILE=Dockerfile.centos7
export ENABLE_NETWORK=1 # container is allowed to access network
# 'make defconfig' is not required as Buildroot already configured
# and sources are downloaded
# ./docker-build.sh make mcom03_defconfig FRAGMENTS=rockpi
./docker-build.sh make
1.4. Сборка произвольных версий пакетов
Сборка с произвольной версией пакета выполняется согласно стандартному
механизму override file local.mk
, см. «Using Buildroot during development» в главе
https://buildroot.org/downloads/manual/manual.html#_advanced_usage.
Для сборки произвольных версий пакетов mcom03-sbl, ddrinit, U-Boot, Linux необходимо:
Склонировать в произвольную директорию перечисленные выше компоненты (U-Boot, Linux, mcom03-sbl), выгрузить необходимую версию:
git clone https://github.com/elvees/... git checkout ...
Создать файл
buildroot/local.mk
. В файле добавить строки с путями до склонированных репозиториев:ARM_TRUSTED_FIRMWARE_OVERRIDE_SRCDIR = <abspath to local TF-A> DDRINIT_OVERRIDE_SRCDIR = <abspath to local ddrinit> LINUX_OVERRIDE_SRCDIR = <abspath to local Linux> MCOM03_SBL_OVERRIDE_SRCDIR = <abspath to local mcom03-sbl> UBOOT_OVERRIDE_SRCDIR = <abspath to local U-Boot>
Запустить сборку:
make # or to build in docker ENABLE_NETWORK=1 ./docker-build.sh make
1.5. Прошивка SD-карты
Прошивка SD-карты выполняется на ПК или на устройстве (при условии загрузки c eMMC):
Определить имя устройства SD-карты на ПК (извлечь SD-карту из считывателя карт ПЭВМ, считать список устройств командой
ls -la /dev/sd*
, установить SD-карту в ПК, повторно считать список устройств, обнаружить новое устройство/dev/sdX
).Записать архив корневой файловой системы на SD-карту с помощью утилиты
tar2dev
(утилита входит в состав сборки, см. getting-source):sudo ./tar2dev mcom03-altlinux-rootfs-....tar.gz /dev/sdX
Для загрузки с SD-карты в
/boot/extlinux.conf
SD-карты требуется изменить путь до корневой файловой системы и FDT.
Утилита tar2dev
поддерживает опции и переменные для установки раздела root, fdt
в extlinux.conf
, установки имени хоста устройства, подробнее см. tar2dev -h
.
Примеры:
Записать SD-карту для модуля ROCK Pi N10 (загрузка будет выполняться с SD-карты):
ROOT=/dev/mmcblk1p1 tar2dev -n newhostname rootfs.tar.gz /dev/sdX
Записать SD-карту для модуля ТрастФон_ПМ (загрузка будет выполняться с SD-карты):
ROOT=/dev/sda1 tar2dev -n newhostname rootfs.tar.gz /dev/sdX
1.6. Прошивка QSPI-памяти
Прошивка QSPI-памяти выполняется с ПК. Python-пакет утилит для прошивки QSPI-памятей mcom03-flash-tools и инструкция по прошивке расположены по адресу https://github.com/elvees/mcom03-flash-tools.
Образ прошивки QSPI-памяти указан в getting-source.