Перейти к основному содержимому

Buildroot для ELTAY SC

Для плат ELTAY SC на базе платформы MCom03R / K1892ВМ21Я по ссылке доступна сборка Buildroot в виде SDK для плат Eltay SC rev.1.0.0 и Eltay SC rev.1.0.1 .

Версии основных компонентов

При работе используются Buildroot, Linux и U-Boot от Elvees.

КомпонентВерсия
Buildroot2025.09
Linux kernel6.6.30
U-Boot2024.07

Структура внешних слоёв

В сборке используются внешние слои Buildroot:

external-common общая инфраструктура и пакеты Elvees
external-elcore50 поддержка ELcore/DSP
external-mcom03 базовый слой платформы MCom03/MCom03R
external-eltaySC слой платы Eltay SC

Пользовательские изменения для платы рекомендуется вносить в слой external-eltaySC.

Подготовка Ubuntu-хоста к сборке

  1. Установить базовые пакеты:

    sudo apt update
    sudo apt install -y ca-certificates curl git docker.io pipx python3-venv
  2. Запустить Docker и разрешить текущему пользователю доступ к Docker и UART:

    sudo systemctl enable --now docker
    sudo usermod -aG docker "$USER"
    sudo usermod -aG dialout "$USER"

    После этого необходимо выйти из сессии и зайти повторно. Для текущего терминала можно временно применить группу Docker:

    newgrp docker
  3. Установить утилиту для прошивки SPI Flash через pipx и проверить установку:

    pipx ensurepath
    export PATH="$HOME/.local/bin:$PATH"
    pipx install git+https://github.com/elvees/mcom03-flash-tools.git

    docker --version
    git --version
    mcom03-flash --help

Полная сборка

Сборка производится на Linux машине в Docker из корневой папки SDK:

cd eltay-sc-sdk
export DOCKERFILE=Dockerfile.centos8stream
export ENABLE_NETWORK=1
export BUILD_ID=eltay-sc-$(date +%Y%m%d-%H%M)

./docker-build.sh make eltay_sc_rev100_defconfig
./docker-build.sh make -j$(nproc)

Для сборки в отдельную папку можно использовать следующие команды:

cd eltay-sc-sdk
export DOCKERFILE=Dockerfile.centos8stream
export ENABLE_NETWORK=1
export BUILD_ID=eltay-sc-$(date +%Y%m%d-%H%M)
export BR_OUTPUT="$PWD/buildroot_rev100_build"

./docker-build.sh make O="$BR_OUTPUT" eltay_sc_rev100_defconfig
./docker-build.sh make O="$BR_OUTPUT" -j$(nproc)

Здесь:

  • eltay-sc-sdk - название папки, содержащей SDK,
  • eltay_sc_rev100_defconfig - конфигурационный файл Buildroot, соответствующий необходимой ревизии платы,
  • BR_OUTPUT - целевая папка для сборки,
  • -j$(nproc) - опция, позволяющая использовать для сборки все доступные на ПК ядра.

Для сборки под ревизию платы Eltay SC rev.1.0.0 необходимо использовать конфигурационный файл eltay_sc_rev100_defconfig.
Для сборки под ревизию платы Eltay SC rev.1.0.1 необходимо использовать конфигурационный файл eltay_sc_rev101_defconfig.

Основные артефакты после сборки:

images/rootfs.tar.gz
images/tar2dev
images/sbl/sbl-xip-mcom03r-eltay-sc-r1.0.x.bin
images/elvees/mcom03r-eltay-sc-r1.0.x.dtb
images/uboot-dtb/mcom03r-eltay-sc-r1.0.x.dtb

При встроенной сборке папка с артефактами располагается по пути buildroot/output/images. При вынесенной сборке с O="$BR_OUTPUT" используется путь $BR_OUTPUT/images.

Загрузчик и деревья устройств отличаются для разных ревизий платы.

Прошивка SBL в QSPI flash

Загрузчик необходимо загрузить в микросхему QSPI flash. Для этого:

  1. Перевести DIP-переключатели на плате в положение:

    ON ON OFF
  2. Подключить USB-UART преобразователь и подать питание на плату.

  3. Запустить утилиту mcom03-flash-tools для записи загрузчика. Для встроенного каталога сборки:

    mcom03-flash --port /dev/ttyUSB0 flash qspi0 buildroot/output/images/sbl/sbl-xip-mcom03r-eltay-sc-r1.0.0.bin

    Для вынесенного каталога сборки:

    mcom03-flash --port /dev/ttyUSB0 flash qspi0 "$BR_OUTPUT/images/sbl/sbl-xip-mcom03r-eltay-sc-r1.0.0.bin"

    Здесь:

    • /dev/ttyUSB0 - устройство, соответствующее подключенному USB-UART преобразователю,
    • buildroot/output/images/sbl/sbl-xip-mcom03r-eltay-sc-r1.0.0.bin - путь до загружаемого файла.
  4. Для загрузки системы на плате вернуть DIP-переключатели в штатный режим загрузки:

    OFF OFF OFF

Запись rootfs на SD-карту

  1. Определить устройство, соответствующее карте памяти:

    lsblk

    Записывать нужно на весь диск, например /dev/sdb, а не на раздел /dev/sdb1.

  2. Убедиться, что выбрано правильное устройство. Следующая команда перезапишет таблицу разделов и данные на выбранном диске.

  3. Записать файловую систему на карту с помощью утилиты tar2dev.

    Для встроенного каталога сборки:

    sudo buildroot/output/images/tar2dev -n eltay-sc buildroot/output/images/rootfs.tar.gz /dev/sdX
    sync

    Для вынесенного каталога сборки:

    sudo "$BR_OUTPUT/images/tar2dev" -n eltay-sc "$BR_OUTPUT/images/rootfs.tar.gz" /dev/sdX
    sync

    Здесь /dev/sdX — устройство, соответствующее всей SD-карте.

Настройка Buildroot

Для изменения набора пакетов и опций Buildroot используется специальное меню - menuconfig.

Встроенный каталог сборки

Далее даны команды для конфигурации Eltay SC rev.1.0.0. Для платы Eltay SC rev.1.0.1 во всех командах необходимо заменить eltay_sc_rev100_defconfig на eltay_sc_rev101_defconfig.

Задать конфигурационный файл и открыть меню редактирования конфигурации:

./docker-build.sh make eltay_sc_rev100_defconfig
./docker-build.sh make menuconfig

После выхода из меню сохранить минимальный defconfig:

./docker-build.sh make savedefconfig

Файл будет сохранён как buildroot/defconfig. Чтобы обновить базовую конфигурацию платы:

cp buildroot/defconfig external-eltaySC/configs/eltay_sc_rev100_defconfig

Вынесенный каталог сборки

Необходимо использовать тот же каталог, который был передан через O при сборке:

export BR_OUTPUT="$PWD/buildroot_rev100_build"

./docker-build.sh make O="$BR_OUTPUT" eltay_sc_rev100_defconfig
./docker-build.sh make O="$BR_OUTPUT" menuconfig

После выхода из меню сохранить минимальный defconfig:

./docker-build.sh make O="$BR_OUTPUT" savedefconfig

Файл будет сохранён как $BR_OUTPUT/defconfig. Чтобы обновить базовую конфигурацию платы:

cp "$BR_OUTPUT/defconfig" external-eltaySC/configs/eltay_sc_rev100_defconfig

Включение и использование доступной периферии

Для включения различной периферии необходимо активировать особые слои (overlays) для дерева устройства. Это делается путем добавления файлов слоев в конфигурационный файл /boot/extlinux/extlinux.conf. Для добавления слоя overlay необходимо в секцию загрузки файла добавить строку:

fdtoverlays /boot/overlays/overlay-name.dtbo

В случае, если необходимо добавить несколько слоев, их нужно перечислять через пробел, например:

fdtoverlays /boot/overlays/overlay-name1.dtbo /boot/overlays/overlay-name2.dtbo

Примерное содержимое файла после редактирования:

LABEL default
MENU LABEL Default (/boot/Image)
LINUX /boot/Image
FDT /boot/elvees/mcom03r-eltay-sc-r1.0.0.dtb
fdtoverlays /boot/overlays/overlay-name.dtbo
APPEND console=ttyS0,115200n8 earlycon root=PARTUUID=65e6e56a-51cb-c74e-b6bc-5be5dbdc7b0c rootfstype=ext4 rw rootwait

После сохранения изменений необходимо перезагрузить устройство:

sync
reboot

Инструкции по использованию периферии: