Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX
подключение SK-VideoADC-Plug
Pavel Ivanchenko
Добавлено 06.08.2010 14:18 Редактировалось 06.08.2010 14:21 Сообщение: 41
Pavel Ivanchenko
Admin
4.39

Пункты: 91534
Регистрация: 24.03.2009
Пол: Мужчина
Теперь по таймауту больше не вываливается, но может намертво повиснуть:
# capt -d /dev/video0 -o data.dat
Pb no camera found!!!
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 06.08.2010 14:53 Сообщение: 42
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Цитата
Теперь по таймауту больше не вываливается, но может намертво повиснуть:
# capt -d /dev/video0 -o data.dat
Pb no camera found!!!


А картинку удается получить ?
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 06.08.2010 15:00 Редактировалось 09.08.2010 10:15 Сообщение: 43
Pavel Ivanchenko
Admin
4.39

Пункты: 91534
Регистрация: 24.03.2009
Пол: Мужчина
Откуда картинка, висит ведь :)
Я наконец то понял, чтобез драйвера (и I2C) ADV7180 эта штука работать не будет :), только не понял, Вы его сами добавляли?

PS в ходе дальнейших разбирательств выяснилось - драйвер ADV7180 совсем не обязателен
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 06.08.2010 15:03 Сообщение: 44
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Цитата
Откуда картинка, висит ведь :)
Я наконец то понял, чтобез драйвера (и I2C) ADV7180 эта штука работать не будет :), только не понял, Вы его сами добавляли?

Я его подключил в конфиге ядра, но он у меня не вызывался возможно из-за той же ошибки с ISI_MCK, я сейчас не могу проверить, только вечером.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 06.08.2010 17:48 Редактировалось 06.08.2010 17:49 Сообщение: 45
Pavel Ivanchenko
Admin
4.39

Пункты: 91534
Регистрация: 24.03.2009
Пол: Мужчина
На вашей плате нет этой ошибки (тактовый с плага идет на ISI_PCK) и такого рода неувязки с работой I2C не связаны.
Вобщем, включил драйвер ADV7180, собрал I2C-tools, проверил определение пинов в драйвере I2C.
Код
# i2cdetect 0
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? [Y/n]
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- 21 -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Как оказалось, этого совсем недостаточно, чтобы все заработало как положено, нужно либо драйвер ISI "кастрировать" (чтобы он драйвером ADV7180 не пользовался), либо драйвер ADV7180 к контексту плага адаптировать ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.08.2010 00:12 Сообщение: 46
sasamy
4.70

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

либо драйвер ADV7180 к контексту плага адаптировать


Думаю этого будет достаточно в board_.... фале добавить:
Код

static void __init add_device_adv7180(void)
{
at91_set_gpio_input(AT91_PIN_PB6, 1); /* adv7180 interrupt pin */
}

struct i2c_board_info ek_i2c_devices[] = {
{
I2C_BOARD_INFO("adv7180", 0x42 >> 1),
.irq = AT91_PIN_PB6,
},
};
....

static void __init ek_board_init(void)
....
/* I2C */
add_device_adv7180();
at91_add_device_i2c(0, ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 08.08.2010 13:44 Редактировалось 08.08.2010 13:48 Сообщение: 47
Pavel Ivanchenko
Admin
4.39

Пункты: 91534
Регистрация: 24.03.2009
Пол: Мужчина
Хотя драйвер и ругается, что не может найти камеру (добавления прерывания ничего не меняет), тем не менее, вполне успешно граббит картинки!
Но, нужно сменить порядок "упаковки" на ATMEL_ISI_PIXFMT_CbYCrY (по умолчанию, такой порядок на выходе ADV7180).
С разрешением, так же не совсем понятно, тто что в кадре остаются поля гашения (это нужно либо настройками ADV крутить, либо апликуха должна работать с их учетом), но самое не понятное - граббит только полукадр, т.е. получаются картинки 720х312 ...

На данный момент получаю вот такое:
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.08.2010 13:57 Сообщение: 48
sasamy
4.70

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

Хотя драйвер и ругается, что не может найти камеру (добавления прерывания ничего не меняет)


Да в общем тот драйвер что в ядре для adv7180 нужен isi как русалке лыжи :) Для него нужно писать специальный драйвер иначе он никакую камеру не увидит. Так что я поспешил тут отписаться :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 08.08.2010 14:00 Сообщение: 49
sasamy
4.70

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

The ISI module API is defined in drivers/media/video/atmel_isi.h and provides
following two functions for a camera driver.
int atmel_isi_register_camera(struct atmel_isi_camera *cam);
void atmel_isi_unregister_camera(struct atmel_isi_camera *cam);
The function atmel_isi_register_camera function can be called from a camera driver
to register itself. The atmel_isi_unregister_camera function removes the driver from
the ISI internal camera list. The parameter of both functions is a structure that needs
to be filled out from the camera driver. This structure looks as follows:
struct atmel_isi_camera {
const char *name;
struct module *owner;
struct list_head list;
unsigned int hsync_act_low:1;
unsigned int vsync_act_low:1;
unsigned int pclk_act_falling:1;
unsigned int has_emb_sync:1;
/* ISI supports up to 17 formats */
unsigned int pixelformats[17];
int (*get_format)(struct atmel_isi_camera *cam, struct atmel_isi_format *fmt);
int (*set_format)(struct atmel_isi_camera *cam, struct atmel_isi_format *fmt);
int (*start_capture)(struct atmel_isi_camera *cam);
int (*stop_capture)(struct atmel_isi_camera *cam);
struct atmel_isi *isi;
};
Fields that need to be filled out by the camera driver are.
• name: Name of the camera driver.
• hsync_act_low: Set to 1 if horizontal synchronization signal is active low. If active
high set it to 0.
• vsync_act_low: Set to 1 if vertical synchronization is active low. If not, set it to 0.
• pclk_act_falling: If the pixel data is valid at the falling edge of the pixel clock set it
to 1. Otherwise to 0.
• has_emb_sync: If the embedded synchronization mechanism is used, set it this
value to 1. If horizontal and vertical synchronization signals are used instead set
this value to 0.
In addition four functions must be implemented in the camera driver and the function
pointers in the above structure must be initialized to point to these functions. These
are functions that start/stop capturing (start_capture/stop_capture) and set/get the
camera video format (get_format/set_format). More functions may be implemented
later if more functionality of the V4L2 specification needs to be passed to the camera
driver.


Я видел патчи для двух сенсоров - можно их поправить, хотя я не уверен что это все нужно :)
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 08.08.2010 14:57 Сообщение: 50
Pavel Ivanchenko
Admin
4.39

Пункты: 91534
Регистрация: 24.03.2009
Пол: Мужчина
Пытаюсь понять, почему получаю полукадр, вот лог относительно работы ISI при граббаинге:
Код
atmel_isi_capture: opened
isi: interrupt:
status 0x00000004
pending 0x00000004
mask=0x00000004
set default format: width=820 height=620
Pb no camera found!!!
set_format:
cfg1=0x00001000
cfg2=0x3333026b
psize=0x00000000
atmel_isi_capture: VIDIOC_QUERYCAP driver=atmel-isi, card=Atmel Image Sensor Interface, bus=, version=0x00000100, capabilities=0x01000001
atmel_isi_capture: VIDIOC_S_FMT type=vid-cap
atmel_isi_capture: width=820, height=620, format=VYUY, field=any, bytesperline=0 sizeimage=0, colorspace=0
isi: read 1016800 bytes read_off=0 state=0 sizeimage=1016800
isi: waiting for SOF
isi: interrupt:
status 0x00000401
pending 0x00000400
mask=0x00000400
isi: starting capture
isi: interrupt:
status 0x00000401
pending 0x00000400
mask=0x00030400
isi: interrupt:
status 0x00020001
pending 0x00020000
mask=0x00030400

Судя по логике, сначала ждет начала кадра ("waiting for SOF"), а потом хватает два поля ...
Еще смущает сообщение "field=any" (это уже V4L2 IOCTL), попытался указать черезстррочную - без результата.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX