Ник:
Пароль:

Контакты

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

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:8
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX
подключение SK-VideoADC-Plug
Slavian
Добавлено 24.07.2010 21:28
0
Сообщение: 1
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Здравствуйте такой вопрос, не получается получить картинку SK-VideoADC-Plug с платой SK-AT91SAM9260.
Собственно мои действия
SK-VideoADC-Plug подключил к разъему X11
Скачал последнее ядро 2.6.34.1
По аналогии с at91sam9263 сделал следующие:
В файле at91sam9260_devices.c добавил
Цитата

struct resource isi_resources[] = {
[0] = {
.start = AT91SAM9260_BASE_ISI,
.end = AT91SAM9260_BASE_ISI + SZ_16K - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = AT91SAM9260_ID_ISI,
.end = AT91SAM9260_ID_ISI,
.flags = IORESOURCE_IRQ,
},
};

static struct platform_device at91sam9260_isi_device = {
.name = "at91_isi",
.id = -1,
.resource = isi_resources,
.num_resources = ARRAY_SIZE(isi_resources),
};

void __init at91_add_device_isi(void)
{
at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */
at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */
at91_set_A_periph(AT91_PIN_PE2, 0); /* ISI_D2 */
at91_set_A_periph(AT91_PIN_PE3, 0); /* ISI_D3 */
at91_set_A_periph(AT91_PIN_PE4, 0); /* ISI_D4 */
at91_set_A_periph(AT91_PIN_PE5, 0); /* ISI_D5 */
at91_set_A_periph(AT91_PIN_PE6, 0); /* ISI_D6 */
at91_set_A_periph(AT91_PIN_PE7, 0); /* ISI_D7 */
at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */
at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */
at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */
at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */
at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */
at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */
at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */
at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */
}

В board-sam9260ek.c
Цитата

static void __init ek_board_init(void)
{
………………………………………….
at91_add_device_isi();

В конфиге для сборки ядра добавил
#
# Multimedia core support
#
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L2_COMMON=y
CONFIG_VIDEO_ALLOW_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_DVB_CORE=y
CONFIG_VIDEO_MEDIA=y

#
# Multimedia drivers
#
CONFIG_IR_CORE=y
CONFIG_VIDEO_IR=y
# CONFIG_MEDIA_ATTACH is not set
CONFIG_MEDIA_TUNER=y
# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
CONFIG_MEDIA_TUNER_SIMPLE=y
CONFIG_MEDIA_TUNER_TDA8290=y
CONFIG_MEDIA_TUNER_TDA9887=y
CONFIG_MEDIA_TUNER_TEA5761=y
CONFIG_MEDIA_TUNER_TEA5767=y
CONFIG_MEDIA_TUNER_MT20XX=y
CONFIG_MEDIA_TUNER_XC2028=y
CONFIG_MEDIA_TUNER_XC5000=y
CONFIG_MEDIA_TUNER_MC44S803=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEOBUF_GEN=y
CONFIG_VIDEOBUF_VMALLOC=y
CONFIG_VIDEO_CAPTURE_DRIVERS=y
CONFIG_VIDEO_ADV_DEBUG=y
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
CONFIG_VIDEO_IR_I2C=y

Так же подключил драйвер 7180
Цитата

#
# Video decoders
#
CONFIG_VIDEO_ADV7180=y


Собрал ядро, залил на плату, в логе загрузки пишется
Цитата

Linux video capture interface: v2.00
cpia2: V4L-Driver for Vision CPiA2 based cameras v2.0.0
usbcore: registered new interface driver cpia2
vivi-000: V4L2 device registered as video0
Video Technology Magazine Virtual Video Capture Board ver 0.6.0 successfully loa
ded.

Но файл /dev/video0 отсутствует.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 26.07.2010 09:54 Сообщение: 2
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Я не нашел в этом ядре поддержку Atmel ISI ;) - начните отсюда http://www.starterkit.ru/html/index.php?name=forum&op=view&id=3699
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 02.08.2010 08:56 Сообщение: 3
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Взял патч 2.6.27-at91-exp.2.patch, в самом драйвере ISI пришлось поменять только две функции kfifo_get, kfifo_put на
kfifo_out_locked , kfifo_in_locked, все остальное скомпилировалось.

Дальше делал по аналогии с 963 файлом вот изменения в
at91sam9260_devices.c
Цитата

static u64 isi_dmamask = DMA_BIT_MASK(32);
static struct isi_platform_data isi_data;
struct resource isi_resources[] = {
[0] = {
.start = AT91SAM9260_BASE_ISI,
.end = AT91SAM9260_BASE_ISI + SZ_16K - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = AT91SAM9260_ID_ISI,
.end = AT91SAM9260_ID_ISI,
.flags = IORESOURCE_IRQ,
},
};

static struct platform_device at91sam9260_isi_device = {
.name = "atmel_isi",
.id = -1,
.dev = {
.dma_mask = &isi_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(32),
.platform_data = &isi_data,
},
.resource = isi_resources,
.num_resources = ARRAY_SIZE(isi_resources),
};
void __init at91_add_device_isi(struct isi_platform_data * data)
{
struct platform_device *pdev;
if (!data)
return;

at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */
at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */
at91_set_A_periph(AT91_PIN_PE2, 0); /* ISI_D2 */
at91_set_A_periph(AT91_PIN_PE5, 0); /* ISI_D5 */
at91_set_A_periph(AT91_PIN_PE6, 0); /* ISI_D6 */
at91_set_A_periph(AT91_PIN_PE7, 0); /* ISI_D7 */
at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */
at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */
at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */
at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */
at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */
at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */
at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */
//at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */

pdev = &at91sam9260_isi_device;

isi_data = *data;
platform_device_register(pdev);
}


в board-sam9260ek.c
Цитата

static struct isi_platform_data __initdata isi_data = {
.image_hsize = 320,
.image_vsize = 240,
.prev_hsize = 320,
.prev_vsize = 240,
.frate = 7,
.pixfmt = ATMEL_ISI_PIXFMT_YCbYCr,
.capture_v4l2_fmt = V4L2_PIX_FMT_YUYV,
.streaming_v4l2_fmt = V4L2_PIX_FMT_YUYV,
/* to use codec and preview path simultaneously */
.cr1_flags = ISI_FULL,
};

static void __init isi_set_clk(void)
{
struct clk *pck3 = 0;
struct clk *pllb = 0;

pck3 = clk_get(NULL, "pck3");
pllb = clk_get(NULL, "pllb");

/* Sensor MCK Clock */
at91_set_A_periph(AT91_PIN_PE11, 0); /* ISI_MCK */
clk_set_parent(pck3, pllb);
clk_set_rate(pck3, 12000000);
clk_enable(pck3);
}

static void __init ek_board_init(void)
{

.......................................
isi_set_clk();
at91_add_device_isi(&isi_data);

}



Происходит падение ядра
Цитата

Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Unable to handle kernel NULL pointer dereference at virtual address 0000002a
pgd = c0004000
[0000002a] *pgd=00000000
Internal error: Oops: 5 [#1]
last sysfs file:
Modules linked in:
CPU: 0 Not tainted (2.6.34.1 #20)
PC is at clk_set_parent+0xc/0x90
LR is at ek_board_init+0x128/0x1b8
pc : [<c018a734>] lr : [<c000f144>] psr: 60000013
sp : c3c19f74 ip : c3c19f88 fp : c3c19f84
r10: 00000000 r9 : 00000000 r8 : 00000000
r7 : c000ba64 r6 : 00000000 r5 : c0418420 r4 : fffffffe
r3 : c0419efc r2 : 60000013 r1 : c0418420 r0 : fffffffe
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 0005317f Table: 20004000 DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc3c18260)



Падение происходит в функции clk_set_parent(pck3, pllb), хотя pck3 и pllb не нулевые.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 02.08.2010 09:54 Редактировалось 02.08.2010 09:55 Сообщение: 4
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Код
at91_set_A_periph(AT91_PIN_PE11, 0); /* ISI_MCK */

я думаю, вот тут ошибка - если у вас плата 9260, то там другой пин PIN_175 PB28..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 02.08.2010 11:21 Сообщение: 5
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
[quote]
Код
at91_set_A_periph(AT91_PIN_PE11, 0); /* ISI_MCK */

я думаю, вот тут ошибка - если у вас плата 9260, то там другой пин PIN_175 PB28..[/quote]

Действительно сейчас посмотрел документацию, получается что
Цитата

at91_set_A_periph(AT91_PIN_PE0, 0); /* ISI_D0 */
at91_set_A_periph(AT91_PIN_PE1, 0); /* ISI_D1 */
at91_set_A_periph(AT91_PIN_PE2, 0); /* ISI_D2 */
at91_set_A_periph(AT91_PIN_PE5, 0); /* ISI_D5 */
at91_set_A_periph(AT91_PIN_PE6, 0); /* ISI_D6 */
at91_set_A_periph(AT91_PIN_PE7, 0); /* ISI_D7 */
at91_set_B_periph(AT91_PIN_PE12, 0); /* ISI_PD8 */
at91_set_B_periph(AT91_PIN_PE13, 0); /* ISI_PD9 */
at91_set_B_periph(AT91_PIN_PE14, 0); /* ISI_PD10 */
at91_set_B_periph(AT91_PIN_PE15, 0); /* ISI_PD11 */
at91_set_A_periph(AT91_PIN_PE8, 0); /* ISI_PCK */
at91_set_A_periph(AT91_PIN_PE9, 0); /* ISI_HSYNC */
at91_set_A_periph(AT91_PIN_PE10, 0); /* ISI_VSYNC */
//at91_set_B_periph(AT91_PIN_PE11, 0); /* ISI_MCK (PCK3) */


не правильна, все прины ISI сидят на Peripheral B, и начинаются PB20
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 03.08.2010 20:08 Редактировалось 03.08.2010 20:09 Сообщение: 6
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Драйвер запустился, функция atmel_isi_probe, выполнилась без ошибок в консоль выводит

Цитата

atmel_isi atmel_isi: Reading configuration
atmel_isi atmel_isi: video buffer: 155648 bytes at ffcec000 (phys 22140000)
atmel_isi atmel_isi: video buffer: 155648 bytes at ffd12000 (phys 22180000)
atmel_isi atmel_isi: video buffer: 155648 bytes at ffd38000 (phys 221c0000)
atmel_isi atmel_isi: video buffer: 155648 bytes at ffd5e000 (phys 22300000)
atmel_isi atmel_isi: capture buffer: 962560 bytes at ffc01000 (phys 0x22200000)
atmel_isi atmel_isi: Atmel ISI V4L2 device at 0xfffc0000


после этого делаю mknod /dev/video0 c 81 0, и запускаю программу capture, при открытии устройства :

Цитата

......................................................
char *input_name = "/dev/video0";
infd = open(input_name, O_RDONLY);
if (infd < 0) {
...................................................


получаю ошибку Failed to open video device: Connection timed out
в самом драйвере это в функции atmel_isi_init

Цитата

static int atmel_isi_init(struct atmel_isi *isi){
unsigned long timeout;

/*
* Reset the controller and wait for completion.
* The reset will only succeed if we have a
* pixel clock from the camera.
*/
init_completion(&isi->reset_complete);
if(atmelisi_is_isi_v2()) {
isi_writel(isi, V2_INTEN, ISI_BIT(V2_SRST));
isi_writel(isi, V2_CTRL, ISI_BIT(V2_SRST));
} else {
isi_writel(isi, IER, ISI_BIT(SOFTRST));
isi_writel(isi, CR1, ISI_BIT(RST));
}

timeout = wait_for_completion_timeout(&isi->reset_complete,
msecs_to_jiffies(100));
if (timeout == 0) {
return -ETIMEDOUT;
}


timeout равен нулю. Сама плата АЦП подключена, и к ней шнур S-Video сигнал по нему идет. Еще такой вопрос, в консоли я не увидел ни где информации об инициализации драйвера adv7180, он вроде определен как MODULE_DEVICE_TABLE(i2c, adv7180_id),
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 04.08.2010 17:17 Сообщение: 7
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
Ковыряюсь сейчас с AT91SAM9G45, в "родной" BSP так же нет ISI драйвера, решил добавить (пока в ядро 2.6.34.1).
Цитата
Взял патч 2.6.27-at91-exp.2.patch, в самом драйвере ISI пришлось поменять только две функции kfifo_get, kfifo_put на
kfifo_out_locked , kfifo_in_locked, все остальное скомпилировалось.

А почему решили заменить kfifo_get на kfifo_out_locked, а не на kfifo_out?
Я заменил на kfifo_in(out), но драйвер все равно не собирается:
Код
drivers/media/video/atmel-isi.c:1443: error: incompatible type for argument 1 of 'spin_lock_irq'
drivers/media/video/atmel-isi.c:1518: error: incompatible type for argument 1 of 'spin_unlock_irq'
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 04.08.2010 18:01 Редактировалось 04.08.2010 18:03 Сообщение: 8
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Цитата
Ковыряюсь сейчас с AT91SAM9G45, в "родной" BSP так же нет ISI драйвера, решил добавить (пока в ядро 2.6.34.1).


На самом деле там побольше изменений, просто я сначала не обращал внимание на варнинги ,
Насчет kfifo_get я так понимаю можно и kfifo_out ,
Спуститься к концу Подняться к началу
Персональная информация
Slavian
Добавлено 04.08.2010 18:12 Сообщение: 9
Slavian
0

Пункты: 1888
Регистрация: 21.05.2010
Не могу загрузить файл вот залил суда http://upload.com.ua/get/901834317/
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 04.08.2010 19:40 Сообщение: 10
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
По поводу добавления в at91sam9260_devices.c, еще хидер меняли?
У меня в таком виде ядро не собирается.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-AT91SAM9260-SIMXXX