Jump to content
    

Видеозахват на Zynq UltraScale+ MPSoC в Linux

Коллеги, приветствую! Не получается завести видеопоток из ПЛИС в Gstreamer. Используется Zynq UltraScale+ MPSoC и PetaLinux. Видеопоток завожу в IP "AXI Video Direct Memory Access" (VDMA) и далее в MPSoC. Без Linux VDMA несложно конфигурируется, видео складывается в буфер RAM, всё работает.

После сборки PetaLinux видео пытался завести через Video4Linux как плату захвата /dev/video0. Для этого Xilinx прадлагает добавлять описание в DeviceTree ноды "xlnx,video". Описание основано на pipeline, в которой есть sink-устройство (VDMA, для него есть "xlnx,vdma", с ним проблем нет) и source-устройство, которое виртуальное и с его описанием проблема.

Возможно сталкивались с V4L, как заставить его конфигурировать VDMA в /dev/video0? Возможно, есть другой способ доставить видео в Gstreamer, без V4L и это изначально путь неверный?

msg001.png

Share this post


Link to post
Share on other sites

Приветствую!

А в чем проблема с описанием source устройства? В приведенной доке есть пример.

Share this post


Link to post
Share on other sites

Source нет физически, DMA получает видеокартинку всегда непрерывно. Если создать виртуальное source устройство, как в обсуждении, V4L создаёт устройство /dev/video0, но оно не работает.

v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1
...
kernel panic

Если я правильно понял, в драйвере source устройства должны быть v4l2_subdev структуры, с функциями получения имформации о видео и его настройке. Хотя, возможно, как-то можно указать в DeviceTree, что поток константный, вот о нём информация, управлять им не нужно.

Показательно в примере. Первая нода - описатель DMA - sink. Вторая - TPG, "Test Pattern Generator", таблица настройки)) - source. Третья - агрегатор, собственно плата захвата. Я открыл "xlnx,v-tpg" - там ~900 строк кода со структурами v4l2_subdev, хотелось бы избежать написания подобного для моей простой задачи.

Share this post


Link to post
Share on other sites

Так может Вам написать свой собственный захватчик видео вместо Gstreamer?

Я так делал в своем проекте - получилось и просто и сложно одновременно.

Просто - прошивка для ПЛИС и софт на компьютере получились очень простые.

Сложно - свой собственный драйвер пока удалось запустить только на x86 и Jetson...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...