Warning: touch() [function.touch]: Unable to create file /home/starterkit/starterkit.ru/html/error.log because Permission denied in /home/starterkit/starterkit.ru/html/errorhandler.php on line 51
TW6869 - SK - Вспомогательные средства - Форум - starterkit.ru
Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Вспомогательные средства
SK-TW6869
aloginov
Добавлено 14.04.2015 10:32 Редактировалось 14.04.2015 10:32 Сообщение: 11
aloginov
0

Пункты: 106
Регистрация: 09.04.2015
пробовал забирать данные через ioctl, но столкнулся со следующей проблемой: при попытке изменить значение v4l2_pix_format.field на V4L2_FIELD_TOP обнаружилось что оно не меняется.
глянул исходники драйвера, там жестко забито V4L2_FIELD_INTERLACED_BT.
это как-нибудь пофиксить можно?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 14.04.2015 11:54 Редактировалось 14.04.2015 11:57 Сообщение: 12
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Конечно можно - даташит есть

http://go.intersil.com/rs/intersilcorporation/images/tw6869-ds.pdf

исходники есть, я ориентировался на эти

https://groups.google.com/group/avreg-users/attach/a4a5a04f923980c8/tw6869-0.1.2.1.zip?part=0.1

Поменять недолго, но я этим заниматься пока не буду.
Спуститься к концу Подняться к началу
Персональная информация
aloginov
Добавлено 14.04.2015 13:31 Сообщение: 13
aloginov
0

Пункты: 106
Регистрация: 09.04.2015
понял. спасибо.
Спуститься к концу Подняться к началу
Персональная информация
denis
Добавлено 18.09.2015 18:13 Сообщение: 14
denis
0

Пункты: 64
Регистрация: 18.09.2015
Доброго времени суток!
Подскажите в какую сторону копать, взял вашу версию драйвера, скомпилировал как модуль ядра, установил.
Но при использовании, например так
Код
ffmpeg -loglevel debug -f video4linux2 -i /dev/video0 test.mp4

выдает
Код
Opening an input file: /dev/video0.
[video4linux2,v4l2 @ 0x100c1d0] fd:3 capabilities:85000001
[video4linux2,v4l2 @ 0x100c1d0] Current input_channel: 0, input_name: Camera 0, input_std: ffffff
[video4linux2,v4l2 @ 0x100c1d0] Querying the device for the current frame size
[video4linux2,v4l2 @ 0x100c1d0] Setting frame size to 720x576
[video4linux2,v4l2 @ 0x100c1d0] Trying to set codec:rawvideo pix_fmt:yuv420p
Last message repeated 1 times
[video4linux2,v4l2 @ 0x100c1d0] Trying to set codec:rawvideo pix_fmt:yuv422p
[video4linux2,v4l2 @ 0x100c1d0] Trying to set codec:rawvideo pix_fmt:yuyv422
[video4linux2,v4l2 @ 0x100c1d0] ioctl(VIDIOC_REQBUFS): Cannot allocate memory
/dev/video0: Cannot allocate memory

dmesg | grep tw68689
Код
[ 0.809330] pci 0000:01:00.0: Setting PCI class for tw6869 PCIe device
[ 11.313491] tw6869 0000:01:00.0: driver loaded
[ 18.023800] tw6869 0000:01:00.0: DMA id = 8: OFF
[ 18.023824] tw6869 0000:01:00.0: DMA id = 8: OFF
[ 18.067405] tw6869 0000:01:00.0: DMA id = 8: OFF
[ 18.067428] tw6869 0000:01:00.0: DMA id = 8: OFF
[ 18.080721] tw6869 0000:01:00.0: DMA id = 8: ON
[ 23.961028] tw6869 0000:01:00.0: DMA id = 8: OFF
[ 618.343127] tw6869 0000:01:00.0: dma_alloc_coherent of size 831488 failed
[ 731.678621] tw6869 0000:01:00.0: vch0 current standard: NTSC (M)
[ 731.721934] tw6869 0000:01:00.0: dma_alloc_coherent of size 692224 failed

uname -a
Код
Linux tegra-ubuntu 3.10.40-tw6869 #3 SMP PREEMPT Fri Sep 18 12:02:38 UTC 2015 armv7l armv7l armv7l GNU/Linux
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.09.2015 00:39 Сообщение: 15
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Это аллокатор CMA не может требуемое количество памяти выделить - это драйвер одной из первых версий и я там погорячился с размером :) подправьте в файле

drivers/media/pci/tw6869/tw6869.h

замените

#define TW_FRAME_MAX 16

на

#define TW_FRAME_MAX 4

этого должно хватить для старта а если приложению не хватает памяти она потом все равно динамически выдляется "на лету".
Если и этого не хватит - смотрите в логе сколько у вас по умолчанию для CMA выделено памяти, на imx6 ее много резервируется для GPU и VPU

# dmesg | grep cma
cma: CMA: reserved 320 MiB at 3c000000

размер пула можно увеличить или через конфиг ядра

Device Drivers --->
Generic Driver Options --->
*** Default contiguous memory area size: ***
(320) Size in Mega Bytes

или можно через параметры ядра без пересборки передать сколько нужно зарезервировать

cma=320M

http://lxr.free-electrons.com/source/Documentation/kernel-parameters.txt?v=3.10#L525
Спуститься к концу Подняться к началу
Персональная информация
denis
Добавлено 21.09.2015 12:50 Сообщение: 16
denis
0

Пункты: 64
Регистрация: 18.09.2015
спасибо, это решило вопрос
btw, у меня по умолчанию было 16M cma
Спуститься к концу Подняться к началу
Персональная информация
John Smith
Добавлено 01.07.2016 11:35 Сообщение: 17
John Smith
0

Пункты: 2289
Регистрация: 18.02.2011
Вопрос к пользователям видеозахвата на любых платах.
Современные источники питания все поголовно импульсные. Попадаются источники которые гонят помеху по земле что выглядит на изображении как точки или шумовые полосы.
Сталкивались ли вы с помехами по земле при захвате аналогового видео и как боретесь с ними ?
Спуститься к концу Подняться к началу
Персональная информация
mibin
Добавлено 13.09.2016 09:36 Редактировалось 13.09.2016 09:38 Сообщение: 18
mibin
5

Пункты: 7688
Регистрация: 22.05.2012
Пол: Мужчина
Добрый день.
В datasheet по этому чипу написано что есть детектор движения и если он замечает движение (я так понял там простая реакция на изменение цвета) то где-то делает об этом пометку. Как можно понять было ли замечено движение детектором или нет?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 13.09.2016 11:14 Редактировалось 13.09.2016 11:20 Сообщение: 19
sasamy
4.70

Пункты: 76182
Регистрация: 14.08.2009
Посмотрите даташит на страницах 55-57 там описаны регистры детекторов движения, другой информации нет. В ядре 4.1.15 появился API

https://linuxtv.org/downloads/v4l-dvb-apis/vidioc-subscribe-event.html

https://linuxtv.org/downloads/v4l-dvb-apis/vidioc-dqevent.html

в драйвер добавлена поддержка

https://github.com/sasamy/tw6869/blob/linux-4.x/tw6869-video.c#L102

на практике - есть небольшая "мертвая" зона в которой движение не обнаруживается (примерно пятая часть кадра внизу), возможно я что-то недонастроил или недопонял а может аппаратный баг - примеров кода от Intersil для детекторов движения tw6869 нет.
Спуститься к концу Подняться к началу
Персональная информация
Sol
Добавлено 17.01.2018 10:24 Сообщение: 20
Sol
0

Пункты: 578
Регистрация: 01.07.2010
sasamy, добрый день!
Успешно использую ваш драйвер для захвата одиночных каналов на SK-iMX6-DUAL-SODIMM, спасибо за отличный драйвер.

Теперь встал вопрос - а реально ли посредством данного драйвера (или его модификации) получить не 4 отдельных потока 7200, а один 1440х960 состоящий из склеенных потоков с 4х каналов?
Сразу пишу что скрипт vcv4.sh работает, но это не то что мне нужно, почему - объяснение ниже:

При склейке средствами Gstreamer (скрипт vcv4.sh или мой пайплайн на основе imx-compositor) я имею нужное мне изображение _на выходе_ системы без возможности его какой-либо последующей обработки. Нужно же получить что-то а-ля новое виртуальное устройство /dev/video* из которого можно получить счетверенную картинку, или указатель на кусок памяти в userspace где лежат нужные мне уже склеенные данные.
Под дальнейшей обработкой понимается коррекция искажений в линзах камер (камеры стят широкоугольные и картинка с них требует коррекции). Еще нужен deinterlacing, с ним отдельная головная боль и пока про него забываем.

1. Захват с 4-х камер через /dev/video0-3 с последующей склейкой вручную в самом приложении тупым циклом на CPU более-менее работает с 2-мя каналами. Уже на 3х каналах захлебывается.

2. Про v4l2loopback знаю. Этот подход (с пайплайном вида imxv4l2videosrc -> imxipucompositor -> v4l2loopback) дает нужное мне новое устройство /dev/video, но опять загружает CPU так что что на дальнейшую обработку ресурсов уже не остается. Даже при просто попытке захватить видео с данного виртуального устройства ведет к DMA reset в драйвере. Как я понимаю такой пайплайн уже не zero-copy решение именно в части v4l2loopback.

В результате пришел к потребности получить данную счетверенную картинку напрямую с драйвера TW6869 чтоб склейка производиласть аппаратно через DMA. Как я понимаю нужно чтоб драйвер делал DMA-транзакции с четырех каналов в область памяти размером в 4 кадра в соответствующие четверти, и на выход давал уже именно эту область памяти а не 4 отдельных куска. Если предполагаются проблемы с тем что память под DMA линейна - склейка может быть и вида 4 кадра друг над другом "в столбик" (что хуже, но думаю приемлемо).

Возможно ли такое, и если да то куда копать?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Вспомогательные средства