Обзор Baikal ARM64 SDK
Введение
Baikal ARM64 SDK (Software Development Kit) - пакет программной поддержки разработчика для платформ BE-M1000 и BE-S1000, позволяющий как генерировать полностью готовые к использованию образы загрузчиков, ядра Linux и файловой системы, так и разрабатывать собственные модификации драйверов и иного программного обеспечения для перечисленных платформ.
SDK может использоваться только на компьютере с операционной системой GNU/Linux.
Данный документ содержит описание процесса установки, краткое описание структуры распакованных файлов и папок, доступных после установки SDK, описание работы с SDK, а также характеристики поддерживаемых плат.
| Обозначение | Расшифровка |
<Текст> | Переменные данные. Примеры: <путь к файлу>, <имя платы> |
<X|Y> | Выбор одного из альтернативных вариантов. |
<SDK_ROOT> | Путь до директории с SDK. |
Установка SDK
Установка производится на компьютер с операционной системой GNU/Linux.
Шаг 1: Загрузить Baikal ARM64 SDK
Выберите версию для загрузки:
- Актуальные версии
- Ядро Linux 6.12
- Ядро Linux 6.6
- Ядро Linux 6.1
- Ядро Linux 5.4
- Все версии
Скачать Baikal ARM64 SDK 2509-6.6
Скачать Baikal ARM64 SDK 2509-6.1
Скачать Baikal ARM64 SDK 2509-5.4
Скачать Baikal ARM64 SDK 2506-6.12
Скачать Baikal ARM64 SDK 2503-6.12
Скачать Baikal ARM64 SDK 2506-6.6
Скачать Baikal ARM64 SDK 2503-6.6
Скачать Baikal ARM64 SDK 2412-6.6
Скачать Baikal ARM64 SDK 2409-6.6
Скачать Baikal ARM64 SDK 2406-6.6
Скачать Baikal ARM64 SDK 2403-6.6
Скачать Baikal ARM64 SDK 2506-6.1
Скачать Baikal ARM64 SDK 2503-6.1
Скачать Baikal ARM64 SDK 2412-6.1
Скачать Baikal ARM64 SDK 2409-6.1
Скачать Baikal ARM64 SDK 2406-6.1
Скачать Baikal ARM64 SDK 2403-6.1
Скачать Baikal ARM64 SDK 6.4
Скачать Baikal ARM64 SDK 6.3
Скачать Baikal ARM64 SDK 6.2
Скачать Baikal ARM64 SDK 6.1
Скачать Baikal ARM64 SDK 2506-5.4
Скачать Baikal ARM64 SDK 2503-5.4
Скачать Baikal ARM64 SDK 2412-5.4
Скачать Baikal ARM64 SDK 2409-5.4
Скачать Baikal ARM64 SDK 2406-5.4
Скачать Baikal ARM64 SDK 2403-5.4
Скачать Baikal ARM64 SDK 5.12
Скачать Baikal ARM64 SDK 5.11
Скачать Baikal ARM64 SDK 5.10
Скачать Baikal ARM64 SDK 5.9
Скачать Baikal ARM64 SDK 5.8
Скачать Baikal ARM64 SDK 5.7
Скачать Baikal ARM64 SDK 5.6
Скачать Baikal ARM64 SDK 5.5
Скачать Baikal ARM64 SDK 5.4
Скачать Baikal ARM64 SDK 5.3
Скачать Baikal ARM64 SDK 5.2
Скачать Baikal ARM64 SDK 5.1
Скачать Baikal ARM64 SDK 2509-6.6
Скачать Baikal ARM64 SDK 2509-6.1
Скачать Baikal ARM64 SDK 2509-5.4
Скачать Baikal ARM64 SDK 2506-6.12
Скачать Baikal ARM64 SDK 2506-6.6
Скачать Baikal ARM64 SDK 2506-6.1
Скачать Baikal ARM64 SDK 2506-5.4
Скачать Baikal ARM64 SDK 2503-6.12
Скачать Baikal ARM64 SDK 2503-6.6
Скачать Baikal ARM64 SDK 2503-6.1
Скачать Baikal ARM64 SDK 2503-5.4
Скачать Baikal ARM64 SDK 2412-6.6
Скачать Baikal ARM64 SDK 2412-6.1
Скачать Baikal ARM64 SDK 2412-5.4
Скачать Baikal ARM64 SDK 2409-6.6
Скачать Baikal ARM64 SDK 2409-6.1
Скачать Baikal ARM64 SDK 2409-5.4
Скачать Baikal ARM64 SDK 2406-6.6
Скачать Baikal ARM64 SDK 2406-6.1
Скачать Baikal ARM64 SDK 2406-5.4
Скачать Baikal ARM64 SDK 2403-6.6
Скачать Baikal ARM64 SDK 2403-6.1
Скачать Baikal ARM64 SDK 2403-5.4
Скачать Baikal ARM64 SDK 6.4
Скачать Baikal ARM64 SDK 5.12
Скачать Baikal ARM64 SDK 6.3
Скачать Baikal ARM64 SDK 5.11
Скачать Baikal ARM64 SDK 6.2
Скачать Baikal ARM64 SDK 6.1
Скачать Baikal ARM64 SDK 5.10
Скачать Baikal ARM64 SDK 5.9
Скачать Baikal ARM64 SDK 5.8
Скачать Baikal ARM64 SDK 5.7
Скачать Baikal ARM64 SDK 5.6
Скачать Baikal ARM64 SDK 5.5
Скачать Baikal ARM64 SDK 5.4
Скачать Baikal ARM64 SDK 5.3
Скачать Baikal ARM64 SDK 5.2
Скачать Baikal ARM64 SDK 5.1
К предоставляемым ресурсам применяются положения, описанные в пользовательском соглашении. Загружая любые материалы с сайта, Вы соглашаетесь с данными условиями.
Шаг 2: Распаковать SDK
Открыть терминал и распаковать архив:
unzip /<путь к архиву>/SDK-ARM64-<YYMM>-<N.n>.zip
Шаг 3: Перейти в директорию с распакованным SDK
cd SDK-ARM64-<YYMM>-<N.n>
Шаг 4: Разрешить исполнение установочного файла
chmod +x ./baikal-arm64-<YYMM>-<N.n>.run
Шаг 5: Запустить установку SDK
./baikal-arm64-<YYMM>-<N.n>.run
Не закрывайте терминал до завершения процесса. Распакованный SDK будет находиться в директории <SDK_ROOT>/baikal-arm64-<YYMM>-<N.n>.
Здесь и далее по тексту переменная <SDK_ROOT> используется для обозначения полного пути до директории с распакованным SDK.
Структура SDK
SDK содержит следующее дерево каталогов:
├─ build – Директория для хранения сгенерированных образов
│ └─ kernel – Директория хранения ядра и модулей ядра Linux
├─ prebuilts – Собранные эталонные загрузочные образы
├─ src – Директория с исходными файлами
│ ├─ acpica – Исходные файлы ACPICA (для построения IASL для UEFI)
│ ├─ initrd – Дерево исходных файлов rootfs для Baikal Embedded Linux (BEL)
│ ├─ kernel – Дерево исходных файлов ядра Linux
│ ├─ mali – Исходные файлы драйвера и бинарные библиотеки Arm® Mali™ - T628
│ ├─ opencsd – Исходные файлы библиотеки CoreSight™ Trace Decode library
│ ├─ openocd – Исходные файлы программы внутрисхемной отладки OpenOCD
│ ├─ simde – Исходные файлы библиотеки SIMDe
│ ├─ tf-a – Дерево исходных файлов загрузчиков TF-A
│ ├─ uefi – Исходное дерево загрузчика UEFI
│ ├─ vdec – Исходные файлы драйвера и бинарные библиотеки видеодекодера
│ └─ xen – Исходные файлы гипервизора Xen
├─ tools – Скрипты сборки SDK
├─ utils – Дополнительные утилиты
└─ xtools – ARM64 cross-toolchain с компилятором, GDB и библиотекой glibc
В директории /prebuilts находятся заранее скомпилированные (эталонные) бинарные файлы для поддерживаемых плат. В следующей таблице указаны бинарные образы, которые невозможно собрать из исходных файлов.
| Имя образа | Описание |
bm1000-xcp.bin | Прошивка SCP для BE-M1000. |
bs1000-cfg1soc.bin | Файл конфигурации СнК для BE-S1000 (один сокет). Записывается в EEPROM на материнской плате. |
bs1000-cfg2soc.bin | Файл конфигурации СнК для BE-S1000 (два сокета). Записывается в EEPROM на материнской плате. |
bs1000-cfg2soc-nosmp.bin | Non-SMP-файл конфигурации СнК для BE-S1000 (два сокета). Образ записывается в EEPROM на материнской плате. |
bs1000-ddr-training.bin | Набор параметров для тренинга и инициализации DDR PHY. |
bs1000-xcp.bin | Прошивка SCP для BE-S1000. |
Работа с SDK
Для установки библиотек и утилит, необходимых для работы SDK, необходимо в терминале выполнить следующую команду:
sudo apt-get install acpica-tools autoconf automake bc bison \
build-essential clang cpio fakeroot flex fonts-freefont-ttf \
libarchive-zip-perl libfdt-dev libglib2.0-dev libncurses-dev \
libpixman-1-dev libssl-dev m4 mtools python python-is-python3 \
python3-anytree python3-click python3-prettytable python3-pyelftools \
uuid-dev xxd zlib1g-dev
Для создания и сборки образов в SDK используются два скрипта:
- Основной скрипт сборки –
build-boot-img.sh; - Скрипт сборки образа файловой системы –
build-initrd-img.sh.
Данные скрипты находятся в директории <SDK_ROOT>/tools.
Основной скрипт сборки
Для получения краткой справки необходимо в терминале выполнить следующую команду:
<SDK_ROOT>/tools/build-boot-img.sh –h
Будет выведена основная информация о скрипте:
Шаблон команды сборки -
build-boot-img.sh <target> <options>:Список поддерживаемых плат;
Список параметров сборки.
| Параметр | Описание |
dbm10 | Отладочная плата DBM 1.0 для BE-M1000 |
dbm20 | Отладочная плата DBM 2.0 для BE-M1000 |
mbm10 | Материнская плата MBM 1.0 для BE-M1000 |
mbm20 | Материнская плата MBM 2.0 для BE-M1000 |
dbs | Отладочная плата DBS для BE-S1000 |
dbs-ov | Отладочная плата DBS-OV для BE-S1000 |
rds-1s | Односокетная материнская плата RDS-1S для BE-S1000 |
rds-2s | Двухсокетная материнская плата RDS-2S для BE-S1000 |
| Параметр | Описание |
-a / --all | Сборка полного набора образов и других бинарных файлов в режиме release. Команда эквивалентна следующему списку параметров: --clean --defconfig --dtb --kernel --modules --initrd --vdec --uefi -–tfa --bootrom |
-ad / --all-debug | Сборка полного набора образов и других бинарных файлов в режиме debug. Команда эквивалентна следующему списку параметров: --clean --debugconfig --dtb –-kernel |
-c / --clean | Очистка предыдущих сборок (ядро Linux, UEFI и TF-A) |
-ct / --clean-tfa | Очистка предыдущих сборок TF-A |
-cu / --clean-uefi | Очистка предыдущих сборок UEFI |
-d / --defconfig | Сборка файла конфигурации ядра (.config) из defconfig-файла |
--debugconfig | Сборка файла конфигурации ядра (.config) с включенными параметрами отладки |
--хenconfig | Сборка файла конфигурации ядра (.config) для поддержки гипервизора Xen |
--nconfig | Сборка файла конфигурации ядра (.config) с помощью меню ncurses |
-f / --dtb | Сборка больших двоичных объектов дерева устройств (DTB) |
-k / --kernel | Сборка ядра Linux с текущей конфигурацией (.config) |
-m / --modules | Сборка модулей ядра с текущей конфигурацией (.config) |
-i / –initrd | Сборка образа файловой системы initrd |
-u / --uefi | Сборка UEFI (release) |
-ud / --uefi-debug | Сборка UEFI (debug) |
-t / --tfa | Сборка TF-A (release) |
-td / --tfa-debug | Сборка TF-A (debug) |
--xen | Сборка образа EFI-приложения Xen |
-b / --bootrom | Сборка загрузочного образа SPI-Flash (BootROM) |
-bl / --bootrom-linux | Сборка загрузочного образа Baikal Embedded Linux (BEL) |
-bp / --bootrom-padding | Сборка загрузочного образа SPI-Flash (BootROM) под размер SPI Flash (32 МБ) |
-h / --help | Вывод справки |
В качестве <options> допускается использование нескольких параметров, например --debugconfig --xen
Скрипт поддерживает включение или отключение отдельных периферийных модулей или контроллеров в дереве устройств на этапе компиляции. Параметры-модификаторы необходимо использовать совместно с параметрами --dtb, --all, --all-debug.
В следующей таблице указаны параметры, которые обеспечивают модификацию дерева устройств для поддерживаемых плат.
| Тип платы | Параметр | Описание |
| DBM | --use-emmc | Активация eMMC (несовместимо с --use-sd) |
--use-sd | Активация SD (несовместимо с --use-eMMC) | |
--use-hda | Активация кодека HDA | |
--use-i2s | Активация кодека I2S | |
--use-xgbe-krkx4 | Активация XGb Ethernet 10GBASE-KR/10GBASE-KX4 | |
| DBM, MBM | --use-lvds | Активация LVDS |
| RDS-2S | --nosmp | Сборка с конфигурацией non-SMP (для систем, не использующих CCIX) |
| Все платы | --coresight | Активация поддержки CoreSight |
--uefi-serial-dxe=<0|1> | Отключение (0) или включение (1) поддержки последовательной консоли в UEFI |
Пример команды со сборкой полного набора образов для платы DBM 1.0 с использованием LVDS и HDA-кодека:
<SDK_ROOT>/tools/build-boot-img.sh dbm10 -a --use-lvds --use-hda
Скрипт сохраняет созданные образы в директории <SDK_ROOT>/build, как описано в разделе Результат выполнения скрипта.
Скрипт сборки образа файловой системы
Для получения краткой справки необходимо в терминале выполнить следующую команду:
<SDK_ROOT>/tools/build-initrd-img.sh –h
Будет выведена основная информация о скрипте:
Шаблон команды сборки -
build-initrd-img.sh <platform> <options> <-p>;Список параметров сборки.
<platform> – платформа для сборки. На данный момент может использоваться только одно значение – baikal.
<options> – опции сборки.
<-p|--packages list> – установка дополнительных пакетов.
| Параметр | Описание |
-c / --clean | Очистка директории хранения сборок |
-s / --skipbuild | Пропуск сборки, создание образа из существующего каталога сборок |
-m / --modules | Сборка и установка модулей ядра |
-d / --default | Установка пакетов по умолчанию. Вводится вместо параметра -p / --packages. Устанавливаемые пакеты: busybox, i2ctools, lmsensors, ethtool, dropbear, kexec-tools, pciutils |
-l / --list | Вывод списка доступных пакетов |
-h / --help | Вывод справки |
| Параметр | Описание |
benchmarks | Набор тестов производительности |
busybox | Командная оболочка Busybox со встроенным набором базовых утилит Linux |
dropbear | SSH-сервер и клиент |
e2fsprogs | Набор служебных утилит для проверки целостности файловых систем, поиска и исправления ошибок, изменения настроек, форматирования |
ethtool | Утилита для проверки и настройки сетевых интерфейсов |
fbtest | Утилита для тестирования видеобуфера |
fio | Утилита для тестирования производительности жестких дисков |
i2ctools | Набор утилит для работы с I2C-шиной |
iperf | Утилиты измерения пропускной способности сетевых интерфейсов |
iperf3 | |
kexec-tools | Утилита, позволяющая загрузить новое ядро «поверх» запущенного |
lmsensors | Утилита для мониторинга состояния аппаратного обеспечения |
pciutils | Набор утилит для работы с PCI-устройствами |
rt-linux-test | Набор программ для тестирования и измерения различных компонентов поведения ядра в реальном времени, таких как задержка таймера, задержка сигнала и т.д. |
spitools | Набор утилит для работы с SPI-шиной |
Результат выполнения скрипта
После успешного выполнения скрипта, в зависимости от типа платы, вызываемого скрипта и его опций, в директории <SDK_ROOT>/build могут быть созданы файлы, указанные в следующей таблице.
| Файл | Тип платы | Описание |
<board>.bl1.bin | Все платы | Бинарный файл BL1, необходимый для записи в Boot flash |
<board>.dtb | Все платы | Бинарный файл дерева устройств для выбранного типа платы |
<board>.uefi.fd | Все платы | Образ EFI |
<board>.fip.bin | Все платы | Бинарный файл FIP, содержащий BL2, BL31 и BL33 (EFI) |
<board>.flash0.bin | DBM DBS RDS-1S | Образ прошивки SCP_flash. Содержит только прошивку SCP. |
| RDS-2S | Образ прошивки SCP_flash. Содержит только прошивку SCP для SoC #0 | |
<board>.flash1.bin | DBM DBS RDS-1S | Образ прошивки boot_flash. Содержит BL1, DTB (+TFW), FIP (+FAT) |
| RDS-2S | Образ прошивки SCP_flash. Содержит только прошивку SCP для SoC #1 | |
<board>.flash.bin | RDS-2S | Образ прошивки boot_flash. Содержит BL1, DTB (+TFW), FIP (+FAT) |
| MBM | Полный образ прошивки SPI_flash. Содержит прошивку SCP, BL1, DTB, FIP (+FAT) | |
<board>.ap.bin | MBM | Образ прошивки boot_flash. Содержит BL1, DTB, FIP (+FAT) |
xen.efi | Все платы | Образ EFI-приложения гипервизора Xen |
Переменная <board> обозначает тип платы, для которой произведена сборка.
В директории <SDK_ROOT>/build/kernel будут созданы файлы и директории, указанные в следующей таблице.
| Файл | Описание |
Image-#-baikal-arm64 | Образ ядра Linux |
vmlinuz-#-baikal-arm64.efi | Сжатый образ ядра Linux, запакованный как EFI-приложение (только для SDK на базе ядра Linux 6.1, 6.6, 6.12) |
config-#-baikal-arm64 | Файл конфигурации ядра Linux |
System.map-#-baikal-arm64 | Файл System.map ядра Linux |
initramfs.cpio | Несжатый образ initramfs, который при необходимости может быть включён в ядро |
initrd.img-#-baikal-arm64 | Cжатый образ initramfs для записи на внешний носитель |
./lib/firmware | Бинарные файлы с прошивками (firmware) для различного оборудования |
./lib/modules | Модули ядра Linux |
В названии файлов # используется для обозначения версии ядра Linux.
Характеристики поддерживаемых плат
Следующая таблица содержит список поддерживаемых SDK типов плат и их краткие характеристики.
| Тип платы | Тип памяти | Общий объем памяти, Гб | Максимальный объем памяти на канал, Гб |
| DBM 1.0 | DDR4-1600 | 64 | 32 |
| DBM 2.0 | DDR4-2400 | 64 | 32 |
| MBM 1.0 | DDR4-2400 | 64 | 32 |
| MBM 2.0 | DDR4-2400 | 64 | 32 |
| DBS | DDR4-3200 | 768 | 128 |
| DBS-OV | DDR4-3200 | 768 | 128 |
| RDS-1S | DDR4-3200 | 768 | 128 |
| RDS-2S | DDR4-3200 | 1 536 | 128 |
История изменений
| Версия | Дата | Описание |
|---|---|---|
| 1.0 | 27.10.2022 | Начальная версия |
| 2.0 | 06.02.2023 | Переход к единому обзорному документу для всех версий Baikal ARM64 SDK |
| 2.1 | 24.08.2023 | В раздел Введение добавлен рисунок Компоненты Baikal ARM64 SDK |
| 2.2 | 19.04.2024 | Добавлена информация про поддержку плат MBS-1S и MBS-2S. Обновлены разделы "Структура SDK", "Основной скрипт сборки", "Результаты выполнения скриптов". В разделе Работа с SDK обновлен список устанавливаемых библиотек |
| 2.3.8 | 20.11.2025 | В связи с выходом версии SDK 2509 обновлены разделы "Основной скрипт сборки", "Скрипт сборки образа файловой системы", "Результаты выполнения скриптов" |