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

Обзор Baikal ARM64 SDK

⤓ Скачать документ

Введение

Baikal ARM64 SDK (Software Development Kit) предназначен для создания сборок образов и различных модулей (таких как образ файловой системы, UEFI образ, модули ядра VDec или ядра Linux с определенной конфигурацией), а так же файловых систем с дополнительными пакетами утилит для микропроцессоров BE-M1000 и BE-S1000.

Работа с SDK производится через терминал или командную строку ОС GNU/Linux.

Данный документ содержит описание процесса установки (раздел Установка SDK), краткое описание структуры распакованных файлов и папок (раздел Структура SDK), доступных после установки SDK, описание работы с SDK (раздел Работа с SDK), а также характеристики поддерживаемых плат со стороны Baikal ARM64 SDK.

Компоненты Baikal ARM64 SDK

Установка SDK

Установка производится на компьютер с операционной системой GNU/Linux.

Для установки SDK необходимо выполнить следующие действия:

  1. Загрузить Baikal ARM64 SDK

    Уведомление

    К предоставляемым ресурсам применяются положения, описанные в пользовательском соглашении. Загружая любые материалы с сайта, вы соглашаетесь с данными условиями.

  2. Распаковать архив SDK-ARM64-N.n.zip в рабочую директорию, например /SDK:

     unzip /<путь к архиву>/SDK-ARM64-N.n.zip -d /SDK
  3. Найти файл под названием baikal-arm64-N.n-YYYYMMDD.run в распакованной
    директории SDK-ARM64-N.n

    Примечание:

    В имени файлов:

    • N.n – номер версии SDK
    • YYYYMMDD – дата выпуска SDK
  4. Перейти в рабочую директорию:

    cd /SDK
  5. Для разрешения исполнения установочного файла как программы открыть в терминале GNU/Linux директорию SDK-ARM64-N.n и выполнить следующую команду:

    chmod +x ./baikal-arm64-N.n-YYYYMMDD.run
  6. Для запуска установки в терминале необходимо выполнить следующую команду:

    ./baikal-arm64-N.n-YYYYMMDD.run
    Примечание

    Процесс установки может занять несколько минут. Не закрывайте терминал до окончания процесса установки.

    Распакованный Baikal ARM64 SDK будет находиться в директории под названием
    baikal-arm64-N.n-YYYYMMDD (далее ${SDK_ROOT}) рядом с установщиком.

    Примечание

    Здесь и далее по тексту ${SDK_ROOT} будет использоваться для обозначения полного пути к корневой директории Baikal ARM64 SDK.

Структура SDK

SDK содержит следующее дерево каталогов:

  • build – временная директория для хранения сборок, создается автоматически после первой сборки
  • img – директория для хранения образов, сгенерированных пользователем (создается автоматически после первой сборки)
  • prebuilts – эталонные загрузочные образы платы, собранные при формировании релиза SDK
  • src – исходные файлы для компонентов SDK:
    • acpica – исходные файлы ACPICA1(необходимы для построения IASL2 для UEFI3)
    • arm-tf – дерево исходных файлов доверенной прошивки ARM (TF-A)
    • initrd – дерево исходных файлов rootfs для Baikal Embedded Linux (BEL)
    • kernel – дерево исходных файлов ядра Linux
    • mali – исходные файлы драйвера и бинарные библиотеки Arm® Mali™-T628
    • openocd – исходные файлы программы внутрисхемной отладки OpenOCD
    • uefi – исходное дерево загрузчика UEFI
    • vdec – исходные файлы драйвера видеодекодера и бинарные библиотеки
  • tools – скрипты автоматической сборки SDK
  • utils – дополнительные утилиты (например, fs utils, dtc)
  • xtools – кросс-инструментальная цепочка ARM64 с компилятором, GDB и glibc
Примечание

Каталог prebuilts содержит два важных образа прошивки SCP4, которые невозможно собрать из исходников:
bm1000-scp.bin и bs1000-scp.bin для микропроцессоров BE-M1000 и BE-S1000 соответственно.

Работа с SDK

Для установки библиотек, необходимых для работы SDK, в терминале Linux нужно выполнить следующую команду:

sudo apt-get install acpica-tools autoconf automake bc bison \
build-essential clang flex fonts-freefont-ttf genext2fs \
imagemagick libarchive-zip-perl libfdt-dev libglib2.0-dev \
libncurses-dev libpixman-1-dev libssl-dev m4 mtools python \
uuid-dev xxd zlib1g-dev

Для создания и сборки образов в SDK используются два скрипта:

Основной скрипт сборки

Для получения краткой справки для основного скрипта необходимо запустить терминал и выполнить следующую команду:

${SDK_ROOT}/tools/build-boot-img.sh -h

На экран выводится основная информация скрипта: шаблон команды для сборки, список поддерживаемых плат, а так же список параметров запуска сборки скрипта. Шаблон команды для сборки выглядит следующим образом:

build-boot-img.sh <target> <options>

  • <target> – тип платы, для которой будет происходить сборка
  • <options> – параметры, с которыми мы запускаем процесс сборки

Для параметра <target> может использоваться одно из следующих возможных значений:

  • 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

В качестве <options> можно использовать комбинацию следующих параметров:

-c или --cleanОчистить предыдущие сборки (ядро Linux, UEFI и TF-A)
-d или --defconfigСобрать файл конфигурации ядра (.config) из defconfig-файла
-f или --dtbСобрать большие двоичные объекты дерева устройств (DTB)
-k или --kernelСобрать ядро Linux с текущей конфигурацией (.config)
-m или --modulesСобрать модули ядра с текущей конфигурацией (.config)
-i или --initrdСобрать образ файловой системы initrd
-D или --vdecСобрать модули ядра vdec (релиз)
-u или --uefiСобрать UEFI (релиз)
-ud или --uefi-debugСобрать UEFI (отладка)
-t или --tfaСобрать TF-A (релиз)
-td или --tfa-debugСобрать TF-A (отладка)
-b или --bootromСобрать загрузочный SPI-flash образ (BootROM)
-bl или --bootrom-linuxСобрать загрузочный SPI-flash образ (BootROM) с образом восстановления Linux
-bp или --bootrom-paddingСобрать загрузочный SPI-flash образ (BootROM) под размер SPI flash (32 МБ)
-h или --helpОтобразить справку

Для сборки полного набора образов и других бинарных файлов в качестве <options> можно использовать следующие комбинированные параметры:

  • -a или --all – применить все параметры, эквивалентно следующему списку параметров:

    --clean --defconfig --dtb --kernel --modules --initrd --vdec --uefi --tfa --bootrom

  • -ad или --all-debug – применить все параметры (отладка), эквивалентно следующему списку параметров:

--clean --defconfig --dtb --kernel --modules --initrd --vdec --uefi-debug --tfa-debug --bootrom

Скрипт сохраняет созданные образы в директории ${SDK_ROOT}/img, как описано в разделе Результаты выполнения скриптов.

Так же в SDK присутствует возможность собрать ядро Linux с включенными параметрами отладки. По умолчанию, конфигурация ядра оптимизирована для повышения производительности. Включение параметров отладки может привести к незначительному снижению производительности.

Чтобы собрать ядро Linux с включенными параметрами отладки, необходимо в терминале выполнить следующие команды:

  1. Скопировать содержимое файла baikal_defconfig_debug в файл baikal_defconfig с предварительным сохранением резервного backup файла:

    cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{,_backup}
    cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{_debug,}
  2. Собрать ядро и модули ядра Linux с текущей конфигурацией, например для платы MBM 2.0:

    ${SDK_ROOT}/tools/build-boot-img.sh mbm20 -d -k –m

Чтобы собрать ядро Linux с отключенными параметрами отладки, необходимо в терминале выполнить следующие команды:

  1. Восстановить содержимое файла baikal_defconfig из backup файла:

    cp ${SDK_ROOT}/src/kernel/arch/arm64/configs/baikal_defconfig{_backup,}
  2. Собрать ядро и модули ядра Linux с текущей конфигурацией, например для платы MBM 2.0:

    ${SDK_ROOT}/tools/build-boot-img.sh mbm20 -d -k –m
    Примечание

    Так же в основном скрипте сборки build-boot-img.sh присутствуют команды, относящиеся к эмулятору QEMU. Для работы с QEMU необходим пакет расширения соответствующей версии. Установка, настройка и принцип работы с эмулятором QEMU описаны в документе QEMU эмулятор для микропроцессоров Байкал-M и Байкал-S к SDK.

Скрипт сборки образа файловой системы

Для получения краткой справки по данному скрипту, необходимо запустить терминал в директории SDK и выполнить следующую команду:

${SDK_ROOT}/tools/build-initrd-img.sh -h

Данная команда выводит на экран краткую справку с шаблоном команды и параметрами запуска. Шаблон команды для сборки выглядит следующим образом:

build-initrd-img.sh <platform> <options> <-p | --packages list>

  • <platform> – платформа для сборки (необязательное поле)
  • <-p | --packages list> – параметр запуска для установки дополнительных пакетов

Для параметра <platform> может использоваться одно единственное значение:

  • baikal

В качестве <options> можно использовать комбинацию следующих параметров:

-c или --cleanОчистить временную директорию хранения сборок
-s или --skipbuildПропустить сборку, создать образ из существующего каталога сборок
-m или --modulesСобрать и установить модули ядра
-d или --defaultСобрать и установить пакеты по умолчанию (см. ниже)
-p или --packagesУстановить дополнительные пакеты (перечисляются в виде списка после параметров в командной строке)
-l или --listВывести список доступных пакетов
-h или --helpВывести справку

В параметре <-p | --packages list>, через пробел, необходимо указать список дополнительных пакетов, например:

${SDK_ROOT}/tools/build-initrd-img.sh –p benchmarks i2ctools

Скрипт поддерживает установку следующих пакетов:

benchmarksНабор тестов производительности
busyboxНабор Unix-утилит командной строки, предназначенных для использования во встраиваемых системах
dropbearНебольшой SSH-сервер и клиент
e2fsprogsНабор служебных утилит для проверки целостности файловых систем, поиска и исправления ошибок, изменения настроек, форматирования
ethtoolУтилита для проверки и настройки сетевых интерфейсов
fbtestУтилита для тестирования frame buffer
fioУтилита для тестирования производительности жестких дисков
i2ctoolsНабор утилит для работы с I2C-шиной
iperf, iperf3Утилита измерения пропускной способности сетевых интерфейсов
kexec-toolsУтилита, позволяющая загрузить новое ядро «поверх» запущенного
lmsensorsУтилита для мониторинга состояния аппаратного обеспечения
pciutilsНабор программ для определения доступных в системе PCI-устройств. Позволяют проверить их состояния и выполнить чтение/изменение конфигурационных регистров
spitoolsНабор утилит для работы с SPI-шиной

В случае если <-p | --packages list> не указан, но указан параметр –d, будет установлены следующие пакеты: busybox, i2ctools, lmsensors, ethtool, dropbear, kexec-tools и pciutils.

Результаты выполнения скриптов

После успешного выполнения скрипта, в каталоге ${SDK_ROOT}/img будут расположены следующие файлы:

baikal-arm64.ImageОбраз ядра Linux
baikal-arm64.Image.gzСжатый образ ядра Linux
baikal-arm64.System.mapФайл System.map ядра Linux
${BRD_NAME}.bl1.binБинарный файл, необходимый для записи в boot_flash
${BRD_NAME}.dtbBLOB5 объект дерева устройств для выбранного типа платы
${BRD_NAME}.efi.fdОбраз прошивки EFI6
${BRD_NAME}.fat.imgОбраз FAT с Baikal Embedded Linux. Для создания такого образа необходимо собранное ядро и файловая система, после чего в терминале нужно выполнить следующую команду: ${SDK_ROOT}/tools/build-boot-img.sh <target> -bl
${BRD_NAME}.fip.binFIP7 образ (bls и EFI)
${BRD_NAME}.flash0.binТолько для плат DBM и DBS: образ system_flash (для DBM – прошивка SCP и BL1, для DBS – только SCP)
${BRD_NAME}.flash.imgТолько для плат DBM и DBS: образ boot_flash (DT, bls и EFI)
${BRD_NAME}.flash.imgТолько для плат MBM 1.0 и MBM 2.0: неполный флэш-образ (DT, bls и EFI)
${BRD_NAME}.full.imgТолько для плат MBM 1.0 и MBM 2.0: полный флэш-образ (Прошивка SCP, DT, BLs и EFI)
initrd.gzОбраз файловой системы Baikal Embedded Linux
img_mem.ko, vxd.koМодуль ядра Linux для поддержки VDec

В названии файлов ${BRD_NAME} – это dbm10, dbm20, mbm10, mbm20, dbs или dbs-ov для плат DBM 1.0, DBM 2.0, MBM 1.0, MBM 2.0, DBS и DBS-OV соответственно.

Характеристики поддерживаемых плат

Следующая таблица содержит список поддерживаемых со стороны Baikal ARM64 SDK типов плат и их краткие характеристики.

Таблица 4-1 Характеристики поддерживаемых плат

Тип платыТип памятиОбщий объем памяти, ГБМаксимальный объем памяти на канал, ГБ
DBM 1.0DDR4-16006432
DBM 2.0DDR4-24006432
MBM 1.0DDR4-24006432
MBM 2.0DDR4-24006432
DBSDDR4-3200768128
DBS-OVDDR4-3200768128

История изменений

ВерсияДатаОписание
1.027.10.2022Начальная версия
2.006.02.2023Переход к единому обзорному документу для всех версий Baikal ARM64 SDK
2.124.08.2023В раздел Введение добавлен рисунок Компоненты Baikal ARM64 SDK

  1. Advanced Configuration and Power Interface Component Architecture
  2. Intel ACPI Source Language compiler/decompiler
  3. Unified Extensible Firmware Interface
  4. System Control Processor
  5. Firmware Image Package
  6. Extensible Firmware Interface
  7. Binary Large Object