Система сборки загрузочных образов для модулей 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 отсутствует или ветка не существует локально, скрипт немедленно завершается с ошибкой.

Важные предварительные условия для автономного режима:

  1. Ручное клонирование **buildroot** — репозиторий должен быть уже выгружен в каталоге скрипта (например, ./buildroot/).

  2. Предварительно заполненный кеш исходников — 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.