Добрый день.
Кто-нибудь работал с Image Sensor Interface (ISI) под Linux для SK-AT91SAM9260. Матрица MT9D131 (Micron). Модуль ядра написал, генерит прерывания по началу кадра и по концу передачи в DMA, а когда вывожу выделенную для DMA область памяти, то там ничего не поменялось.
глянул драйвер, спасибо, помогло. Сейчас модуль ISI работает нормально, какие-то данные получаю. Работаю с матрицей MT9D131 (aptina). как бы ни конфигурировал матрицу и ISI все равно получаю непонятные картинки с какими то очень яркими цветами. при смене сцены картинки меняются, но ничего на них неразличимо. подозреваю, что все дело в том, чтобы правильно интерпретировать формат, раньше никогда не работал с изображениями и их форматами. YUV и RGB смотрю через XnView.
кто нибудь работал с этой матрицей MT9D131 под at91sam9260? помогите законфигурировать правильно ISI и матрицу.
картинка генерится только с зеленым и фиолетовым цветами (в режиме YCbCr матрицы).
Еще вопрос. Это не может быть изза корпуса? он сделан так, что небольшое количество света может попадать на матрицу не через объектив.
к тому же матрица уже генерит YCbCr или RGB. ISI в теже режимы надо ставить?
Были такие же проблемы - с зелеными и фиолетовыми цветами - при захвате картинки и видео с ADV7180. Такой эффект получается когда модуль ISI и камера не состыкуются в порядке компонент формата YCbCr. А именно, когда байты цветности попадают на байты яркости. Есть 4 варианта последовательности этих компонент. Лечится подбором правильной.
Если вы используете драйвер atmel-isi из вышеупомянутого патча, то там есть параметр:
static int input_format = ATMEL_ISI_PIXFMT_CbYCrY;
Остальные форматы описаны в заголовочном файле.
Если не используете родной драйвер, то меняете напрямую биты YCC_SWAP в регистре ISI_CR2.
я наваял сам маломальский драйвер isi интерфейса. Пробовал менять в регистре ISI_CR2 параметр YCC_SWAP - не помогает. Пробовал в своем редакторе всевозможные комбинации порядка следования Y, Cb и Cr, но все равно цвета не удается получить нормальные. Силуэты хорошо различимы.
Какие данные должны поступать на вход isi с матрицы? у меня с матрицы уже шурует YCbCr.
Нет, такое преобразование возможно только для пути preview. Как я понимаю, вам нужен захват одной картинки, а не последовательности кадров, т.е. вы используете путь codec.
В пути codec возможно только обратное преобразование, т.е. из RGB в YUV. И это оправдано, т.к. для последующего кодирования в какой-нибудь JPEG например все равно бы это пришлось сделать. Если в качестве входного формата выбран YUV, то модуль преобразования просто пропускается.
У пути preview совсем иная цель - отображение на LCD в реальном времени с минимальными затратами. Поэтому там и используется преобразование из YUV в RGB, масштабирование, пропуск кадров - вобщем все прелести ISI. Кстати, на мой взгляд, в Atmel погорячились с выходным форматом пути preview, ведь его возможности не исчерпываются предпросмотром на LCD (которого у 9260 и нет вовсе!). Ведь видеопоток можно не только прогонять через память, но и захватывать и соответсвенно кодировать. Поэтому могли бы и в priview оставить YUV без изменений.
Насчет, фиолетово-зелености кадров, я думаю, вам все-таки нужно копать в сторону последовательности YCbCr. Еще на этот порядок могут повлиять поля SFD и SLD в регистре ISI_CR1, которые отвечают за смещение кадра относительно сигналов синхронизации. Эти смещения задаются в тактах, а не в пикселях, поэтому может возникнуть смещение между ISI и камерой в порядке компонент. У меня такое было при подключении ADV7180, так как он телевизиионный сигнал способен оцифровывать, а там помимо кадров может быть телетекст, а может и еще что-нибудь (я не в курсе :)).
Хотя в вашем случае вряд-ли такое наблюдается, у вас ведь чисто камера.