Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-iMX53
подключение камеры на чипе OV5642 к плате imx53
buletz
Добавлено 16.10.2012 17:06 Редактировалось 16.10.2012 17:06
0
Сообщение: 1
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
Пытаюсь подключить камеру на чипе ov5642
http://www.e-consystems.com/custom_lens_camera_module.asp
(сама камера называется e-CAM50_CU5642_MOD, фирма Econ).

Попытки подключить ее на Atmel (SAM9G45) провалились, но там были подозрения на проблемы с ISI интерфейсом, и поэтому решили попробовать включить ее на Freescale (imx53), к тому же на фрискейле есть встроенная поддержка OV5642, т.к. платформа Freescale Sabre (тот же imx53) изначально идет с этим чипом.

На imx53 картинка хоть какая-то появилась, но маленькая и кривая.
Статус следующий:

1) Единственный софт, который реально видит картинку это ffmpeg. Но картинку он видит какуюто маленькую (похоже какая-то центральная часть видимой области) и она плывет, т.е. чтото с синхронизацией.
title
Запускаем так:
Код
ffmpeg -s 640x480 -r 1 -f video4linux2 -i /dev/video0


2) mplayer вообще зависает. Запускаем так:
Код
mplayer -fps 15 tv:// -tv driver=v4l2:device=/dev/video0 -vo
fbdev2

виснет после строк
Код
comment: first try, more to come ;-)


3) gst-launch пишет пустой экран.
Запускаем так:
Код
gst-launch -e mfw_v4lsrc capture-width=720 capture-height=576 sensor-width=720 sensor-height=288 \
typefind=1 preview=1 \
! mfw_ipucsc \
! mfw_vpuencoder codec-type=std_mpeg4 bitrate=500 \
! avimux \
! filesink location=captureTEST.avi


4) Утилитка из LTIB /unit_test/mxc_v4l2_tvin
выдает ошибки.
Запускаем так:
Код
/unit_tests/mxc_v4l2_tvin.out -ow 800 -oh 480 -ol 10 -ot 20 -f YU12

Получаем:
Код
TV decoder chip is ov5642_cameraERROR: unrecognized std! 8005263000000001 (PAL=ff, NTSC=b000

start time = 322 s, 600100 us
mxc_ipu mxc_ipu: warning: disable ipu dma channel 0 during its busy state

и пустой экран.


Буду признателен любым идеям.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 16.10.2012 19:47 Редактировалось 17.10.2012 10:12 Сообщение: 2
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Правильно будет работать только gstreamer - там специальный плагин v4l source - только конвеер нужно правильно задать. Посмотрите тут

https://community.freescale.com/docs/DOC-1462

попробуйте

gst-launch mfw_v4lsrc -v --gst-debug=2 capture-mode=4 capture-width=1280 capture-height=720 num-buffers=2200 ! mfw_vpuencoder codec-type=std_avc width=1280 height=720 loopback=true ! mfw_vpudecoder parser=false loopback=true ! mfw_v4lsink

это из мануала, если заработает - уберите промежуточное кодирование-декодирование и т.д. (это у них для теста производительности VPU) - там видно будет. К сожалению на imxcommunity.org многое поменялось и через google ссылки по форуму битые получаются - как там сейчас искать непонятно, через встроенный поиск и половину ссылок не дает из того что я там видел - там было много примеров. С ltib есть документация - там тоже есть примеры видеозахвата, возможно она идет вместе с мультимедийными кодеками - я не помню точно.

Вы пробовали мои примеры построения конвеера (gstreamer и unit-test)- они для adv7180, поэтому и не работает.
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 17.10.2012 16:27 Сообщение: 3
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
попробовал указанную строку запуска gst - наблюдаю черный экран.

вот лог:
http://pastebin.com/Q6XyaVCN

лог выхода из gst (по нажатию CTRL+C):
http://pastebin.com/bB1gcX5q

пробовал также с разрешением 800х480 на выходе (хотя gst сам правит разрешение судя по логу), т.е. строка запуска:
Код
gst-launch mfw_v4lsrc -v --gst-debug=2 capture-mode=4 capture-width=1280 capture-height=720 num-buffers=2200 ! mfw_vpuencoder codec-type=std_avc width=800 height=480 loopback=true ! mfw_vpudecoder parser=false loopback=true ! mfw_v4lsink


лог ничем особо не отличается:
http://pastebin.com/BmXKcKtv
и лог выхода из gst (по CTRL+C):
http://pastebin.com/qtfFGDMz

В логах никаких ошибок не вижу.
Разве что непонятная фраза о том, что некий канал уже используется:
Код
mxc_ipu mxc_ipu: Channel already disabled 10
mxc_ipu mxc_ipu: Channel already uninitialized 10
mxc_ipu mxc_ipu: Channel already disabled 10
mxc_ipu mxc_ipu: Channel already uninitialized 10


Может еще какие идеи будут?
Неужто самим писать драйвер? ... :(
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.10.2012 22:41 Редактировалось 17.10.2012 22:49 Сообщение: 4
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Простой конвеер работает ?

# gst-launch mfw_v4lsrc ! mfw_v4lsink

или

gst-launch mfw_v4lsrc capture-mode=0 capture-width=640 capture-height=480 ! mfw_v4lsink
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 18.10.2012 10:48 Редактировалось 18.10.2012 10:49 Сообщение: 5
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
с пустым конвеером (пробовал оба вышеприведенных варианта запуска gst) тож самое, черный экран.
лог:

Код
root@freescale ~$ gst-launch mfw_v4lsrc ! mfw_v4lsink
MFW_GST_V4LSRC_PLUGIN 2.0.3 build on Oct 17 2012 07:43:12.
MFW_GST_V4LSINK_PLUGIN 2.0.3 build on Oct 17 2012 07:43:14.
Setting pipeline to PAUSED ...
NV12

mxc_ipu mxc_ipu: IDMAC20's EBA0 is not 8-byte aligned

mxc_ipu mxc_ipu: IDMAC20's EBA1 is not 8-byte aligned

Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
full screen size:800x480
[V4L Update Display]: left=0, top=0, width=800, height=480
>>V4L_SINK: Actually buffer status:
hardware buffer : 12
software buffer : 0
mxc_ipu mxc_ipu: Channel already disabled 10

mxc_ipu mxc_ipu: Channel already uninitialized 10

mxc_ipu mxc_ipu: Channel already disabled 10
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 18.10.2012 10:59 Редактировалось 18.10.2012 10:59 Сообщение: 6
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
Решил убедиться, что gst вообще умеет выводить на экран - действительно умеет (см. фотку ниже), проверял командой из хелпа на i.mx53 VPU:
Код
gst-launch videotestsrc ! mfw_v4lsink


Однако, картинка почему-то какая-то съехавшая, видимо не очень правильно настроены дрова самого экрана (даже пингвин при старте показан с черный полоской на уровне головы).

В общем, несмотря на что картинка чуть съехавшая, это не объясняет что с камеры идет черный экран. Пусть было бы кривое изображение, но хоть какое-то (как например ffmpeg хоть что-то показывает).
Так что gst пока не помог.

title
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 26.10.2012 12:10 Редактировалось 26.10.2012 12:18 Сообщение: 7
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
Наконец-то удалось запустить камеру и вывести нормальную картинку на дисплей.
Ни одно из готовых приложений не помогло (mplayer, gst, ffmpeg, тесты imx - все работают с этой камерой криво), пришлось писать самому.
Скомпилировал небольшое приложение из двух примеров с небольшой доработкой напильником (один пример по части работы с камерой, второй - по части работы с фреймбуфером).

Последовательность работы прожки такова:


инитим фреймбуфер
< начало цикла>
1) инитим и открываем камеру
2) читаем фрейм
3) закрываем камеру
4) конвертим картинку из I420 (дефолтовый формат который задает драйвер фрискейла) в YUV444, затем в RGB.
5) выводим RGB картинку во фреймбуфер
< конец цикла >


код программки:
http://pastebin.com/1FuQBY2f

код для компиляции (с помощью arm-none-linux-gnueabi компилятора от code sourcery):
http://pastebin.com/Wr5kdYJT

ядро использовал стоковое, 2.6.35 от стартеркита, дрова тоже стоковые для OV5642.

разрешение дисплея 800x480, картинка с камеры 640х480 (дефолтовое).
большее разрешение тоже работает.

картинки:
title

title

Прожка конечно туповатая, и тормозит, но дело сдвинулось с мертвой точки, с камерой уже можно работать.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.10.2012 12:31 Редактировалось 26.10.2012 12:38 Сообщение: 8
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Цитата

Наконец-то удалось запустить камеру и вывести нормальную картинку на дисплей.
Ни одно из готовых приложений не помогло


можно взглянуть на ваш board-файл и лог загрузки ядра ? чую не в ту сторону вы двигаетесь...
Спуститься к концу Подняться к началу
Персональная информация
buletz
Добавлено 26.10.2012 12:51 Сообщение: 9
buletz
3

Пункты: 5920
Регистрация: 16.11.2011
Пол: Мужчина
1) бордовый файл (mx53_loco.c):
http://pastebin.com/uBvFyRKr
он практически стоковый, изменен только fb_videomode video_modes[] для подключения дисплея (фирмы NHD)

2) лог загрузки ядра:
http://pastebin.com/P1jeUHhz
Примечание: к борде еще подключена USB камера, детектится как /dev/video1, но на нее можно не обращать внимание. Я работаю именно с OV5642 через CSI интерфейс, которая детектится как /dev/video0.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.10.2012 13:41 Редактировалось 26.10.2012 13:50 Сообщение: 10
sasamy
4.71

Пункты: 83540
Регистрация: 14.08.2009
Тактирование камеры mclk конфликтует на местной борде с клоком который используется для аудиокодека. У вас даташит есть на эту плату с камерой, а то мне не дали без регистрации :) как там тактируется - набортный генератор или внешний клок требуется ? Потом непонятно с режимом работы - проверьте в каком положении перемычка (я не понял кстати - у вас OEM плата похоже ?) VSYNC на плате - возможно вы синхру с камеры не на тот контакт подали, вернее возможно он до процессора просто не доходит (для ADV7180 Павел по привычке оставлял возможность переключить сигнал VSYNC либо на VSYNC либо на FIELD). В бордовом файле - уберите упоминание о регуляторах, их там нет

static struct mxc_camera_platform_data camera_data = {
// .analog_regulator = "DA9052_LDO7",
// .core_regulator = "DA9052_LDO9",
.mclk = 24000000,
.csi = 0,
};
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX53