Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019) — различия между версиями

Материал из 0x1.tv

;{{SpeakerInfo}}: {{Speaker|Роман Ставцев}}
<blockquote>
The software development kit creating process for our own processors.
</blockquote>

{{VideoSection}}
{{vimeoembed|366005076|800|450}}
<!-- {{youtubelink|}} -->

{{SlidesSection}}
[[File:Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

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

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

[[File:lvee2019-Stavtsev1.png|640px|center]] 

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

* 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 относится к типу Система-на-кристале.


[[File:lvee2019-Stavtsev2.png|640px|center]] 

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

* 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)





{{----}}
[[File:{{#setmainimage:Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019)!.jpg}}|center|640px]]
{{LinksSection}}
* [ Talks page]
<!-- <blockquote>[©]</blockquote> -->


<references/>

[[Категория:LVEE-2019]]
[[Категория:Draft]]

Версия 13:39, 28 октября 2019

Докладчик
Роман Ставцев.jpg
Роман Ставцев

The software development kit creating process for our own processors.

Видео

Презентация

Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019).pdf

Thesis

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

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

Lvee2019-Stavtsev1.png

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

  • 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 относится к типу Система-на-кристале.


Lvee2019-Stavtsev2.png

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

  • 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:

для 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)



Создание пакетов программной поддержки для процессоров собственной разработки (Роман Ставцев, LVEE-2019)!.jpg

Примечания и ссылки

  • [ Talks page]