Система сборки загрузочных образов для модулей DIASOM
Этот репозиторий содержит скрипты для создания загрузочных образов, используемых с отладочными платами на базе модулей DiaSom от MacroGroup.
Компоненты системы сборки
(Версии компонентов могут отличаться в зависимости от платы)
barebox 2026.06+ (загрузчик)
buildroot 2026.05+ (генератор корневой файловой системы)
linux 6.19+ (ядро Linux)
Сборка образов
Для DS-IMX8M-EVB:
git clone https://github.com/MacroGroup/bsp.git cd bsp ./ds-imx8m-evb.sh
После успешной сборки образ SD-карты создаётся в каталоге output/ds-imx8m-evb/images.
Для DS-RK3568-EVB или DS-RK3588-BTB-EVB:
git clone https://github.com/MacroGroup/bsp.git cd bsp
Первая сборка — укажите тип вашей платы:
# Для платы DS-RK3568-EVB: ./ds-rk35xx-evb.sh -b ds-rk3568-evb # Для платы DS-RK3588-BTB-EVB: ./ds-rk35xx-evb.sh -b ds-rk3588-btb-evb
Последующие сборки (с уже существующей конфигурацией):
./ds-rk35xx-evb.sh -b ds-rk3568-evb # Используйте то же имя платы, что и ранее
После успешной сборки образ SD-карты создаётся в каталоге output/ds-rk35xx-evb/images.
Конфигурация платы
Система сборки использует файл board.cfg для отслеживания конфигураций, специфичных для платы. Он может содержать:
BOARD_NAME — имя вашей платы (обязательно для сохранения постоянной конфигурации)
BRANCH — имя ветки Buildroot (необязательно, по умолчанию "macro")
Правила конфигурации
1. Файл board.cfg отсутствует:
С опцией -b: создаёт board.cfg с указанными именем платы и веткой
# Создаёт конфигурацию: BOARD_NAME=my_board, BRANCH=macro (по умолчанию) ./ds-rk35xx-evb.sh -b my_board # Создаёт конфигурацию: BOARD_NAME=my_board, BRANCH=custom ./ds-rk35xx-evb.sh -b my_board -r custom
Без опции -b: использует настройки по умолчанию (конфигурация не создаётся)
# Использует ветку по умолчанию "macro", конфигурация платы не создаётся ./ds-rk35xx-evb.sh # Использует пользовательскую ветку, конфигурация платы не создаётся ./ds-rk35xx-evb.sh -r custom-branch
2. Файл board.cfg существует:
Все указанные параметры должны совпадать с существующими значениями в конфигурации
Неуказанные параметры берутся из конфигурации
Чтобы изменить любое значение: удалите board.cfg вручную и начните заново
Допускаются частичные конфигурации: могут содержать только BOARD_NAME, только BRANCH или оба параметра
Примеры с существующей конфигурацией (BOARD_NAME=my_board, BRANCH=master):
# Всё совпадает — OK ./ds-rk35xx-evb.sh -b my_board -r master # Плата совпадает, ветка берётся из конфигурации — OK ./ds-rk35xx-evb.sh -b my_board # Ветка совпадает, плата берётся из конфигурации — OK ./ds-rk35xx-evb.sh -r master # Несовпадение — ОШИБКА ./ds-rk35xx-evb.sh -b different_board # Ошибка: несовпадение имени платы ./ds-rk35xx-evb.sh -r different_branch # Ошибка: несовпадение ветки
Доступные опции:
-h, —help — показать справочное сообщение
-b, —board NAME — задать плату\
-r, —branch NAME — задать ветку Buildroot (по умолчанию: "macro")
-o, —offline — запуск в автономном режиме (пропуск сетевых операций)
Типичные сценарии
Начало с нуля (существующей конфигурации нет):
# Создать конфигурацию с именем платы и веткой по умолчанию ./ds-rk35xx-evb.sh -b ds-rk3568-evb # Создать конфигурацию с именем платы и конкретной веткой ./ds-rk35xx-evb.sh -b ds-rk3588-btb-evb -r master # Сборка без сохранения конфигурации (используется ветка по умолчанию) ./ds-rk35xx-evb.sh
Использование существующей конфигурации:
# Проверить содержимое вашей конфигурации cat output/ds-rk35xx-evb/board.cfg # Сборка с существующей конфигурацией (указываются совпадающие параметры) ./ds-rk35xx-evb.sh -b [board_from_config] -r [branch_from_config]
Изменение конфигурации:
# Удалить существующую конфигурацию rm output/ds-rk35xx-evb/board.cfg # Создать новую конфигурацию ./ds-rk35xx-evb.sh -b new-board -r new-branch
Автономный режим сборки
Если у вас нет доступа в интернет или вы хотите избежать повторных загрузок, можно использовать флаг --offline (или -o).
Что происходит в автономном режиме:
Скрипт не клонирует и не обновляет репозиторий
buildroot.Он не выполняет
git fetchилиgit pullдля основного репозитория.Он проверяет, что локальный каталог
buildrootсуществует и является Git-репозиторием.Он проверяет, что запрошенная ветка доступна локально (и переключается на неё при необходимости).
Если
buildrootотсутствует или ветка не существует локально, скрипт немедленно завершается с ошибкой.
Важные предварительные условия для автономного режима:
Ручное клонирование
**buildroot**— репозиторий должен быть уже выгружен в каталоге скрипта (например,./buildroot/).Предварительно заполненный кеш исходников — Buildroot загружает внешние исходники в
output/download/во время сборки. Для полностью автономной сборки все необходимые архивы исходников должны уже присутствовать вoutput/download/. (Вы можете подготовить этот кеш, один раз выполнив обычную сборку в онлайне, либо разместив архивы вручную.)
Пример:
# Подготовка окружения (онлайн, однократно) git clone https://github.com/MacroGroup/buildroot.git -b macro # (Опционально) выполнить полную сборку для заполнения кеша output/download/ # Позже — автономная сборка: ./ds-rk35xx-evb.sh -b ds-rk3568-evb --offline
Если во время автономной сборки скрипт попытается что-либо загрузить, он завершится с ошибкой — убедитесь, что ваш кеш output/download/ полон.
Примечания
Убедитесь, что у вас есть не менее 50 ГБ свободного места на диске для сборки.
Время сборки значительно варьируется (от 30 минут до нескольких часов) в зависимости от характеристик оборудования.
Все выходные образы готовы к прямой записи на SD-карты с помощью таких инструментов, как:
dd(командная строка)BalenaEtcher (графический интерфейс)
Автономные сборки требуют ручной подготовки репозитория
buildrootи кеша исходниковoutput/download/— сам скрипт ничего не загружает при использовании--offline.