Салют-ЭЛ24Д1: отладочная плата на российском процессоре 1892ВМ14Я для жестких условий эксплуатации
В нашей инженерной лаборатории появилась новая российская плата для экспериментов — отладочный модуль Салют-ЭЛ24Д1 на многоядерной системе на кристалле 1892ВМ14Я для Арктики и космоса. Посмотрим, на что она способна. Модуль Салют-ЭЛ24Д1, как и все отладочные платы, рассчитан на изучение возможностей процессора, разработку и отладку программного обеспечения. Его разработчик — НПЦ «ЭЛВИС» — начал поставки «Салюта» в конце 2015 года.
Одна из главных областей применения процессора 1892ВМ14Я — системы машинного зрения, обработка видео- и аудиопотока с расчетом на жесткие условия, производственные или космические. Так что процессор ориентирован скорее на industrial, чем на гражданское применение — диапазон рабочих температур составляет от –60°C до +85°C.
Чип 1892ВМ14Я разработан по технологии «система на кристалле» (SoC) и включает в себя два ядра ARM Cortex-A9, блок GPU Mali-300, два ядра DSP Elcore-03M, блок аппаратной видеообработки VELcore-01 и различные порты ввода-вывода.
Комплект поставки
В коробке, помимо самой отладочной платы Салют-ЭЛ24Д1, имеются блок питания на 12В, CSI-камера со шлейфом, карта памяти micro-SD на 32 Гб, адаптер USB → UART, батарейка для RTC, антенна WiFi-модуля и радиатор для процессора, без которого неслабо греется.
Отладочная плата поставляется с предустановленным дистрибутивом Arch Linux. Доступны исходники buildroot, из которых можно самостоятельно собрать необходимые пакеты или всю систему.
Самое вкусное в Arch Linux — демонстрационные утилиты для захвата видеопотока с CSI-камеры, утилиты для работы с видеокодеком H264 и Gstreamer с установленными RTSP-плагинами.
Интерфейсы платы
На плате имеются порты USB, Ethernet, Wifi и разъемы для подключения антенн ZigBee/GPS.
Видео/аудиоинтерфейсы включают HDMI-видеовыход, DSI-видеовыход, разъем CSI для подключения камеры, стандартный аудиовход/выход 3,5 мм.
Также доступны интерфейсы RS-232, RS-485, CAN-шина, UART, I2C, I2S, SPI.
На верхней части платы выведены отладочные порты и RaspberryPI-совместимый блок PLS-штырьков с GPIO и соответствующими интерфейсами.
2-ядерный CPU Cortex-A9, до 912 МГц;
2-ядерный DSP ELcore-30M, до 720 МГц;
видеокодек VELcore-01: обеспечение функций H.264 CBP Encode and Decode, Full HD (1920х1080) стерео поток c частотой следования не менее 30 кадров/с;
аппаратный ускоритель для сжатия изображений по стандарту JPEG;
графический процессор Mali-300, 250 млн. пикселей/с.
DDR3-1066, 32 бит, 1 ГБ.
NAND Flash x 8 бит @ 100 МГц, 4 ГБ;
microSD card, 10 МБ/с, 32 ГБ.
WiFi (IEEE 802.11);
Bluetooth (IEEE 802.15.1);
ZigBee (IEEE 802.15.4).
Навигация: ГЛОНАСС/GPS (опционально).
4 порта USB 2.0 Host;
MIPI CSI2 4 lanes, 1.5 Гбит/с, I2C.
MIPI DSI, 2 lanes, 1.5 Гбит/с;
HDMI 1.3a Tx, 1080 p/60 Гц, аудио.
Analog jack, Stereo PCM, 16 бит, 192 кГц.
Analog jack, Stereo PCM, 16 бит, 192 кГц.
UART; RS485; RS232;
Trace Debug Port.
Режимы загрузки: SPI Flash, UART, SD, NAND.
DC JACK 2.5mm 10-30 В;
MicroUSB 5 В, 3 А.
Размер: 130х105 мм.
Обработка видео на процессоре
Основная область, в которой мы экспериментировали с процессором 1892ВМ14Я — обработка видеосигналов — одна из его главных возможностей.
Для начала провели пробные тесты программного кодирования в H264 с помощью GStreamer. С разрешением видео 1280x720px программное кодирование в H264 с плагином libx264 в GStreamer выдает всего 2—3 fps. Декодирование работает немного быстрее — около 8 fps. Скорость довольно низкая, что не удивительно, т.к. процессор не предназначен для выполнения сложных вычислительных задач.
Целевая область применения 1892ВМ14Я — обработка видео/аудио, IP-камеры и др. Поэтому больше всего нас интересовал блок видеообработки VELcore-01 с возможностью аппаратного кодирования/декодирования H264.
Аппаратный кодек H264
Основные характеристики ядра видеообработки VELcore-01:
- Максимальный размер обрабатываемых изображений – 4096 х 4096 пикселей.
- Минимальный размер обрабатываемых изображений – 16 х 16 пикселей.
- Формат изображений – YCbCr (4:2:0).
- Точность представления – 8 бит на пиксель.
- Количество одновременно обрабатываемых потоков видеоданных – до двух потоков компрессии и до двух потоков декомпрессии.
- Максимальная производительность – до двух потоков компрессии и до двух потоков декомпрессии видео в формате Full HD (1920 х 1080 пикселей) с частотой 60 кадров в секунду по любому из указанных стандартов.
Структура формата M420 выглядит так, судя по описанию на linuxtv.org:
Видеопоток с комплектной камеры
Драйвер CSI-видеокамеры также выдает видео в формате M420, поэтому можно использовать его с драйвером аппаратного кодека H264 напрямую.
… и получаем работающий RTSP-стрим «из коробки» со сжатием видео в H264 с подключенной камеры.
Видеопоток из файла
Со сжатием видео из файла не все оказалось так просто. В утилите, предназначенной для этих целей, есть возможность преобразовывать видео в формат M420 «на лету». Но эта операция сильно грузит процессор, в результате программная часть не успевает вовремя выдавать драйверу кадры для сжатия, что приводит к заметному снижению fps. Для решения этой проблемы пришлось написать скрипт, который заранее преобразовывает видеофайл в формат M420.
Вторая проблема состоит в том, что ядро видеообработки умеет сжимать только кадры, размер которых кратен 16 пикселям. С разрешением 1280 x 720 все сходится — обе стороны кадра кратны 16, а вот у Full HD (1920 x 1080) высота на 16 не делится. Таким образом, для сжатия видео 1920 x 1080 нужно перед передачей кадра драйверу дорисовывать полоску из 8 пикселей, чтобы получилась высота, кратная 16. Формат M420 в этом плане оказался весьма удобен из-за того, что каналы Y и Cb/Cr в нем идут совместно, а не один за другим — достаточно вставить в конец буфера 1920 * 8 * 1.5 пустых байт.
В итоге удалось достичь кодирования H264 с разрешением 1280 x 720 и с разрешением 1920 x 1080, но с «костылем» в виде полоски дополнительных пикселей. Оба разрешения стабильно выдают частоту кадров в 30 fps.
Ядро видеообработки VELcore-01 на аппаратном уровне также поддерживает декодирование H264, но на уровне драйверов поддержка этой функции пока не реализована, поэтому в данном направлении эксперимент провести не удалось.
В целом знакомство получилось позитивным: 1892ВМ14Я показал себя как отличный процессор для промышленности и спец. применений, где требуется HDMI, графика и мультимедиа. Понравилась отзывчивая техподдержка.