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 необходимо:

  1. Склонировать в произвольную директорию перечисленные выше компоненты (U-Boot, Linux, mcom03-sbl), выгрузить необходимую версию:

    git clone https://github.com/elvees/...
    git checkout ...
    
  2. Создать файл 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>
    
  3. Запустить сборку:

    make
    
    # or to build in docker
    ENABLE_NETWORK=1 ./docker-build.sh make
    

1.5. Прошивка SD-карты

Прошивка SD-карты выполняется на ПК или на устройстве (при условии загрузки c eMMC):

  1. Определить имя устройства SD-карты на ПК (извлечь SD-карту из считывателя карт ПЭВМ, считать список устройств командой ls -la /dev/sd*, установить SD-карту в ПК, повторно считать список устройств, обнаружить новое устройство /dev/sdX).

  2. Записать архив корневой файловой системы на SD-карту с помощью утилиты tar2dev (утилита входит в состав сборки, см. getting-source):

    sudo ./tar2dev mcom03-altlinux-rootfs-....tar.gz /dev/sdX
    
  3. Для загрузки с 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.