Сергей Плахов (detonator666) wrote,
Сергей Плахов
detonator666

Салют-ЭЛ24Д1

Салют-ЭЛ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 и соответствующими интерфейсами.

Полный список характеристик Салюта-ЭЛ24Д1

Процессор 1892ВМ14Я:
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;
Ethernet 10/100.
Видеовход:
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;
I2C; I2S;
SPI; MFBSP;
CAN ISO 11898.
Отладочные интерфейсы:
JTAG OnCD;
Trace Debug Port.
Режимы загрузки: SPI Flash, UART, SD, NAND.
Питание:
DC JACK 2.5mm 10-30 В;
MicroUSB 5 В, 3 А.
Размер: 130×105 мм.

Обработка видео на процессоре Основная область, в которой мы экспериментировали с процессором 1892ВМ14Я — обработка видеосигналов — одна из его главных возможностей.Для начала провели пробные тесты программного кодирования в H264 с помощью GStreamer. С разрешением видео 1280×720px программное кодирование в 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:
start + 0: Y'00 Y'01 Y'02 Y'03 start + 4: Y'10 Y'11 Y'12 Y'13 start + 8: Cb00 Cr00 Cb01 Cr01 start + 16: Y'20 Y'21 Y'22 Y'23 start + 20: Y'30 Y'31 Y'32 Y'33 start + 24: Cb10 Cr10 Cb11 Cr11
Видеопоток с комплектной камеры Драйвер CSI-видеокамеры также выдает видео в формате M420, поэтому можно использовать его с драйвером аппаратного кодека H264 напрямую.Запускаем команду…
cap-enc -s 1920×1072 -r30 -f1 /dev/v4l/by-name/vinc0 /dev/v4l/by-name/avico0 | gst-rtsp-launch 'fdsrc ! h264parse ! rtph264pay name=pay0'… и получаем работающий RTSP-стрим «из коробки» со сжатием видео в H264 с подключенной камеры.

Видеопоток из файла Со сжатием видео из файла не все оказалось так просто. В утилите, предназначенной для этих целей, есть возможность преобразовывать видео в формат M420 «на лету». Но эта операция сильно грузит процессор, в результате программная часть не успевает вовремя выдавать драйверу кадры для сжатия, что приводит к заметному снижению fps. Для решения этой проблемы пришлось написать скрипт, который заранее преобразовывает видеофайл в формат M420. Вторая проблема состоит в том, что ядро видеообработки умеет сжимать только кадры, размер которых кратен 16 пикселям. С разрешением 1280×720 все сходится — обе стороны кадра кратны 16, а вот у Full HD (1920×1080) высота на 16 не делится. Таким образом, для сжатия видео 1920×1080 нужно перед передачей кадра драйверу дорисовывать полоску из 8 пикселей, чтобы получилась высота, кратная 16. Формат M420 в этом плане оказался весьма удобен из-за того, что каналы Y и Cb/Cr в нем идут совместно, а не один за другим — достаточно вставить в конец буфера 1920 * 8 * 1.5 пустых байт.В итоге удалось достичь кодирования H264 с разрешением 1280×720 и с разрешением 1920 x 1080, но с «костылем» в виде полоски дополнительных пикселей. Оба разрешения стабильно выдают частоту кадров в 30 fps.Ядро видеообработки VELcore-01 на аппаратном уровне также поддерживает декодирование H264, но на уровне драйверов поддержка этой функции пока не реализована, поэтому в данном направлении эксперимент провести не удалось.



В целом знакомство получилось позитивным: 1892ВМ14Я показал себя как отличный процессор для промышленности и спец. применений, где требуется HDMI, графика и мультимедиа. Понравилась отзывчивая техподдержка.

https://habrahabr.ru/post/322344/

Tags: hi-tech, it, Сделано у нас
Subscribe
Buy for 10 tokens
Buy promo for minimal price.
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments