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

Buildroot для ELTAY RM66

Для платы ELTAY RM66 доступна сборка Buildroot в виде SDK в репозитории на gitflic. SDK содержит внешний слой для плат ELTAY (buildroot-external-eltay), а основной репозиторий Buildroot подключен как подмодуль (используется версия 2025.02.6).

В основной ветке репозитория main присутствует конфигурационный файл eltay_rm66_defconfig (buildroot-eltay/buildroot-external-eltay/configs), который использует mainline-ядро версии 6.12.4 и обеспечивает минимально необходимые настройки для запуска платы и входа в ОС. Собранный по файлу дистрибутив позволяет:

  • получать доступ к системной консоли по UART;
  • получать доступ к устройству по протоколу SSH;
  • выполнять обслуживание и использование накопителей, разделов и файловых систем с использованием стандартного набора консольных утилит, в том числе устройств хранения типа NVMe.

В mainline-ядре Linux отсутствует полная поддержка подсистемы media (ISP, CIF), поэтому работа с камерами на ELTAY RM66 в основной ветке невозможна.
Для работы с камерами необходимо использовать ветку с vendor-ядром от Rockchip и медиа-драйверами - rk356x-media. Конфигурационный файл для сборки называется так же - eltay_rm66_defconfig. Описание по работе с камерами можно найти здесь.

Для включения периферийных устройств или дополнительных пакетов необходимо самостоятельно изменить конфигурации Buildroot или ядра Linux.

Сборка​

Подготовка​

Для сборки необходимы:

  • Linux host;
  • Git;
  • Docker.

Пакеты, необходимые самому Buildroot, вручную на хост устанавливать не требуется - они устанавливаются внутри Docker-образа.

Клонировать SDK необходимо вместе с подмодулями:

git clone --recurse-submodules https://gitflic.ru/project/elron-tech/buildroot-eltay.git
cd buildroot-eltay

Если репозиторий был склонирован без --recurse-submodules, Buildroot можно загрузить отдельно:

git submodule update --init --depth 1

При необходимости работы с CSI камерами переключиться на ветку rk356x-media:

git checkout rk356x-media

Дальнейшая работа и процесс сборки для веток main и rk356x-media одинаковы.

Переменные сборки​

Makefile поддерживает следующие переменные:

ПеременнаяНазначениеЗначение по умолчанию
CONFIGdefconfig из buildroot-external-eltay/configs/не задано
OUTотдельный каталог сборки Buildrootне задано, используется buildroot/output
PACKAGEпакет Buildroot для docker-package-dircleanне задано
DL_DIRобщий каталог скачанных исходниковdl
JOBSколичество параллельных задач сборки$(nproc)
IMAGEимя Docker-образа сборочного окруженияbuildroot-eltay:ubuntu24.04

OUT должен быть относительным путём внутри репозитория.

Основные команды​

Все команды выполняются из корня репозитория buildroot-eltay.

  • Показать справку:
    make
  • Показать доступные конфигурации плат:
    make list-configs
  • Собрать Docker-образ окружения:
    make docker-image
  • Применить defconfig (например, eltay_rm66_defconfig):
    make docker-defconfig CONFIG=eltay_rm66_defconfig
  • Запустить сборку после применения defconfig:
    make docker-build
  • Открыть menuconfig для текущей сборки:
    make docker-menuconfig
  • Сохранить текущую конфигурацию Buildroot обратно в defconfig платы (например, в eltay_rm66_defconfig):
    make docker-save-config CONFIG=eltay_rm66_defconfig
  • Очистить конкретный пакет (например, пакет linux):
    make docker-package-dirclean PACKAGE=linux
  • Открыть shell внутри сборочного Docker-контейнера:
    make docker-shell

Последовательность сборки​

Перед первой сборкой необходимо создать Docker-образ:

make docker-image

При сборке можно использовать штатный каталог или отдельный каталог сборки.

Сборка в штатный каталог buildroot/output:

make docker-defconfig CONFIG=eltay_rm66_defconfig
make docker-build

Результаты сборки находятся в buildroot/output/images/. Основной образ для записи на microSD - buildroot/output/images/sdcard.img.

Использование отдельного OUT удобно, если необходимо хранить несколько сборок одновременно или экспериментировать с конфигурацией, не затрагивая другую сборку.

Сборка в отдельный каталог:

OUT=buildroot_build/eltay_rm66

make docker-defconfig CONFIG=eltay_rm66_defconfig OUT="$OUT"
make docker-build OUT="$OUT"

Артефакты располагаются в $OUT/images/. Основной образ - $OUT/images/sdcard.img. Для всех последующих команд необходимо использовать тот же OUT.

подсказка

В процессе сборки отдельно формируется файл загрузчика uboot для памяти SPI Flash. Файл называется u-boot-rockchip-spi.bin, его можно найти в используемом каталоге сборки в папке build/uboot-2024.10. Способы записи загрузчика в SPI Flash описаны в соответствующем разделе.

Настройка Buildroot​

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

Штатный каталог buildroot/output​

Сначала применить конфигурацию платы:

make docker-defconfig CONFIG=eltay_rm66_defconfig

Открыть меню:

make docker-menuconfig

После внесения изменений сохранить минимальный defconfig непосредственно в buildroot-external-eltay/configs/:

make docker-save-config CONFIG=eltay_rm66_defconfig

Отдельный каталог сборки​

Необходимо указывать тот же OUT, который использовался при применении defconfig и сборке:

OUT=buildroot_build/eltay_rm66

make docker-defconfig CONFIG=eltay_rm66_defconfig OUT="$OUT"
make docker-menuconfig OUT="$OUT"

После выхода из menuconfig сохранить изменения:

make docker-save-config CONFIG=eltay_rm66_defconfig OUT="$OUT"

Файл eltay_rm66_defconfig в buildroot-external-eltay/configs/ будет обновлён автоматически.

Особенность конфигурации RAM на ELTAY RM66​

Для увеличения частоты работы RAM до 1560 МГц при сборке можно использовать файл:

rk3568_ddr_1560MHz_v1.18.bin

Для этого в eltay_rm66_defconfig заменить:

BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk35/rk3566_ddr_1056MHz_v1.18.bin"

на:

BR2_PACKAGE_ROCKCHIP_RKBIN_TPL_FILENAME="bin/rk35/rk3568_ddr_1560MHz_v1.18.bin"

Стабильность работы устройства в разных режимах с увеличенной частотой RAM не тестировалась.

Запись образа на microSD​

Запишите полученный образ на microSD карту (способы записи образа на другие доступные носители описаны в соответствующем разделе).

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

lsblk

Для записи необходимо использовать весь диск, например /dev/sdb, а не отдельный раздел /dev/sdb1.
Скопируйте загрузочный файл sdcard.img на microSD карту с помощью команды dd:

sudo dd if=path/to/image.img of=/dev/sdX bs=4M conv=fsync status=progress

Здесь в аргументе if необходимо указать путь до собранного образа, а в аргументе of - реальное устройство microSD.

Запуск ELTAY RM66​

Вставьте microSD карту памяти в плату Eltay RM66 и подайте питание на плату.
Консоль подключена к 3-контактному разъёму TTL Debug UART, который расположен рядом с портом питания Type-C. Подключите к нему любой USB-UART преобразователь (например, на базе микросхем CP2102 или СР340) и откройте соединение на скорости 1500000 бод/с.

Данные для входа по умолчанию:

user: root
password: eltay