Главная » 2017»Март»1 » В России создали уникальную плату «Салют-ЭЛ24Д1».
05:41
В России создали уникальную плату «Салют-ЭЛ24Д1».
В нашей инженерной лаборатории появилась новая российская плата для экспериментов — отладочный модуль Салют-ЭЛ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 и соответствующими интерфейсами.
Обработка видео на процессоре
Основная область, в которой мы экспериментировали с процессором 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 кадров в секунду по любому из указанных стандартов.
Одной из особенностей аппаратного блока кодирования H264 является то, что он использует нестандартный формат пикселей M420 для входного видео. M420 — это формат YUV (4:2:0) с плотностью записи 12 бит на пиксель. Y-компонента записывается для каждого пикселя (1 байт на пиксель), а CbCr-компоненты — по одной паре значений на блок из 4-х пикселей (2 байта на 4 пикселя). Этот формат похож на NV12, с тем отличием, что блок данных CbCr идет не в конце, а «смешан» построчно с блоком Y: 2 строки Y — одна строка CbCr и т.д.
Структура формата M420 выглядит так, судя по описанию на linuxtv.org:
… и получаем работающий 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, графика и мультимедиа. Понравилась отзывчивая техподдержка.