Міжнародная канферэнцыя распрацоўнікаў і карыстальнікаў свабодных праграм

Создание пакетов программной поддержки для процессоров собственной разработки

Роман Ставцев, Москва, Russian Federation

LVEE 2019

The software development kit creating process for our own processors.

АО «Байкал Электроникс» фаблесс-компания специализируется на проектировании систем на кристалле (СнК) и интегральных микросхем. Основной продукцией является СнК BE-T1000 и BE-M1000. Процессоры Baikal производятся на фабрике компании TSMC. Вспомогательной продукцией является программные пакеты (Software Development Kit, SDK) и оценочные платы.

Микропроцессор BE-T1000, другое название Байкал-Т1 относится к типу Система-на-кристале. Микропроцессор содержит два ядра MIPS32r5 P5600 Warrior.

Перечислим некоторые технические характеристики:

  • 2 ядра P5600 MIPS 32 r5, максимальная частота до 1,2 ГГц
  • Кэш L2 1 Мбайт
  • Контроллер памяти DDR3-1600
  • Энергопотребление не более 5 Вт
    *Технологический процесс 28 нм

Интегрированные интерфейсы:

  • 1 порт 10 Gb Ethernet
  • 2 порта 1 Gb Ethernet
  • контроллер PCIe Gen.3
  • 2 порта SATA 3.0
  • USB 2.0

Микропроцессор BE—M1000, другое название Байкал-M1 относится к типу Система-на-кристале.

Перечислим некоторые технические характеристики:

  • 4 кластера по 2 ядра ARM™ Cortex™-A57, максимальная частота до 1,5ГГц
  • Кэш L2 объемом 1 Мбайт на кластер
  • Когерентный кэш L3 объемом 8 Мбайт
  • 2 контроллера памяти DDR4-2400
  • Графический процессор ARM Mail™-T628 с поддержкой кэш L2 128 Кбайт на кластер
  • 2 видеоконтроллера с поддержкой LVDS и HDMI2.0 интерфейсов
  • Аппаратный 4K видео-декодер
  • Аудио-подсистема HDAudio
  • Подсистема управления загрузкой
  • Технологический процесс 28 нм
  • Корпус FCBGA 1521

Интегрированные интерфейсы:

  • 3 контроллера PCIe Gen3 (x8/x4/x4)
  • 2 контроллера SATA 6G
  • 2 контроллера XGb Ethernet
  • 2 контроллера 1Gb Ethernet
  • 2 контроллера USB 3.0/2.0 6 портов

Низкоскоростная периферия:

  • eMMC/SD/SDIO
  • SPI/eSPI
  • SMBus
  • GPIO32
  • UART

Программные пакеты SDK (Software Development Kit) для процессоров семейства Baikal, концентрируется на простоте установки и использования, предоставляя при этом необходимы инструментарий. В большей части SDK опирается на свободное программное обеспечение. Для каждого типа СнК выпускается свой SDK. SDK для BE-T1000 был основан на наборе собственных сборочных скриптов. Такой подход позволил создать автономную систему с минимумом зависимостей. Однако имеются и существенные ограничения в нашем решении, основное сложность создания изменяемых сборок с пользовательскими приложениями. При разработке SDK для BE-M1000 мы сохранили прежний принцип построения, понимая и принимая все плюсы и минусы такого решения.

Рассмотрим схожие компоненты SDK. В состав SDK входят средства разработки программ для целевого процессора, средства отладки, полный набор исходных кодов, комплект поддержки для отладочных/оценочных плат (BFK), образ встраиваемой операционной системы на основе ядра Linux и набора busybox, средства автоматизации сборки различных образов и прошивок для устройств на процессорах семейства Baikal.

Состав SDK выглядит следующим образом:

  • Загрузчик
  • Ядро Linux
  • Образ initrd встраиваемой ОС на основе пакета busybox
  • Образ initramfs для запуска «больших» дистрибутивов ОС Linux
  • Прошивка для загрузочной флеш-памяти
  • Образ файловой системы для эмулятора QEMU
  • Скрипты автоматизации сборки
  • Тулчейн
  • Вспомогательные утилиты
  • Программный эмулятор
  • Скрипты поддержки/автоматизации для эмулятора
  • Исходные коды

Основные компоненты немного подробнее.

Загрузчик

Мы используем модифицированную версию загрузчика U-BOOT для BE-T1000.
Начинали с U-BOOT v2014.10
Мы используем для BE-M1000 UEFI tianocore основанный на “UEFI Development Kit” UDK2017.

Ядро Linux

для BE-T1000 были внесены дополнения в следующие ветки ядра Linux
3.19.xx – не поддерживается
4.4.xx – активно поддерживается (https://github.com/baikalelectronics/Linux-kernel.4.4.xx)
5.2 – в разработке
для BE-M1000 были внесены дополнения в следующие ветки ядра Linux
4.9.180 – в разработке

Тулчейн

Пакет средств кросс-компиляции на основе GNU gcc, binutils и т.д.
gcc–8.3.0, binutils–2.32 (для BE-T1000, SDK-4.18)
gcc 6.3.0, binutils 2.28 (для BE-M1000)
Средства отладки (gdb)
gdb–8.2.1 (для BE-T1000, SDK-4.18)
gdb 7.12.1 (для BE-M1000)
Предсобранные исполнимые файлы и библиотеки (sysroot) на основе glibc
glibc–2.29 (для BE-T1000, SDK-4.18)
glibc 2.25 (для BE-M1000)

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад