Попытки подключить ее на Atmel (SAM9G45) провалились, но там были подозрения на проблемы с ISI интерфейсом, и поэтому решили попробовать включить ее на Freescale (imx53), к тому же на фрискейле есть встроенная поддержка OV5642, т.к. платформа Freescale Sabre (тот же imx53) изначально идет с этим чипом.
На imx53 картинка хоть какая-то появилась, но маленькая и кривая.
Статус следующий:
1) Единственный софт, который реально видит картинку это ffmpeg. Но картинку он видит какуюто маленькую (похоже какая-то центральная часть видимой области) и она плывет, т.е. чтото с синхронизацией.
Запускаем так:
2) mplayer вообще зависает. Запускаем так:
виснет после строк
3) gst-launch пишет пустой экран.
Запускаем так:
4) Утилитка из LTIB /unit_test/mxc_v4l2_tvin
выдает ошибки.
Запускаем так:
это из мануала, если заработает - уберите промежуточное кодирование-декодирование и т.д. (это у них для теста производительности VPU) - там видно будет. К сожалению на imxcommunity.org многое поменялось и через google ссылки по форуму битые получаются - как там сейчас искать непонятно, через встроенный поиск и половину ссылок не дает из того что я там видел - там было много примеров. С ltib есть документация - там тоже есть примеры видеозахвата, возможно она идет вместе с мультимедийными кодеками - я не помню точно.
Вы пробовали мои примеры построения конвеера (gstreamer и unit-test)- они для adv7180, поэтому и не работает.
Решил убедиться, что gst вообще умеет выводить на экран - действительно умеет (см. фотку ниже), проверял командой из хелпа на i.mx53 VPU:
Однако, картинка почему-то какая-то съехавшая, видимо не очень правильно настроены дрова самого экрана (даже пингвин при старте показан с черный полоской на уровне головы).
В общем, несмотря на что картинка чуть съехавшая, это не объясняет что с камеры идет черный экран. Пусть было бы кривое изображение, но хоть какое-то (как например ffmpeg хоть что-то показывает).
Так что gst пока не помог.
Наконец-то удалось запустить камеру и вывести нормальную картинку на дисплей.
Ни одно из готовых приложений не помогло (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 (дефолтовое).
большее разрешение тоже работает.
картинки:
Прожка конечно туповатая, и тормозит, но дело сдвинулось с мертвой точки, с камерой уже можно работать.
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.
Тактирование камеры mclk конфликтует на местной борде с клоком который используется для аудиокодека. У вас даташит есть на эту плату с камерой, а то мне не дали без регистрации :) как там тактируется - набортный генератор или внешний клок требуется ? Потом непонятно с режимом работы - проверьте в каком положении перемычка (я не понял кстати - у вас OEM плата похоже ?) VSYNC на плате - возможно вы синхру с камеры не на тот контакт подали, вернее возможно он до процессора просто не доходит (для ADV7180 Павел по привычке оставлял возможность переключить сигнал VSYNC либо на VSYNC либо на FIELD). В бордовом файле - уберите упоминание о регуляторах, их там нет