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 поддерживает следующие переменные:
| Переменная | Назначение | Значение по умолчанию |
|---|---|---|
CONFIG | defconfig из 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 карту (способы записи образа на другие доступные носители описаны в соответствующем разделе).
- Windows
- Linux
Перед записью нужно определить устройство карты памяти:
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.
Для записи можно использовать программу BalenaEtcher:
- Нажать
Flash from file. - Выбрать
sdcard.img. - Выбрать microSD-карту.
- Нажать
Flash!.
Запуск ELTAY RM66
Вставьте microSD карту памяти в плату Eltay RM66 и подайте питание на плату.
Консоль подключена к 3-контактному разъёму TTL Debug UART, который расположен рядом с портом питания Type-C. Подключите к нему любой USB-UART преобразователь (например, на базе микросхем CP2102 или СР340) и откройте соединение на скорости 1500000 бод/с.
Данные для входа по умолчанию:
user: root
password: eltay