Bist Du sicher, dass Du alle benötigten Module geladen hast? atmel-isi.ko zu laden reicht nicht, Du musst auch den Kamera-spezifischen Treiber miteinbeziehen.
MfG Mark
Hallo,
Ich habe NGW100 und CAM-c3188a.
Ich habe neue Kernel 2.6.25.10.atmel.2 auf dem Board kopiert.
Ich habe endlich /dev/video0 und /dev/video1 auf dem Board, nachdem ich die gebrauchten modules geladen habe.
Aber es gibt noch Fehlermeldung:
Failed to open video device: No such device
als ich das Programm capture laufen lasse:
http://www.avr32linux.org/twiki/bin/...AtmelIsiDriver
Patching habe ich auch schon gemacht.
Hier sind lsmod und dmesg von Board:
lsmod:
Module Size Used by Not tainted
i2c_gpio 2336 0
i2c_algo_bit 4676 1 i2c_gpio
i2c_dev 4740 0
ovcamchip 15208 0
v4l2_common 8800 0
i2c_core 16176 5 i2c_gpio,i2c_algo_bit,i2c_dev,ovcamchip,v4l2_com
mon
v4l2_int_device 2080 0
compat_ioctl32 992 0
atmel_isi 13956 0
videodev 25824 1 atmel_isi
v4l1_compat 10212 1 videodev
xt_state 1888 1
iptable_filter 2432 1
ipt_MASQUERADE 2368 1
iptable_nat 4936 1
nf_nat 12758 2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4 11304 4 iptable_nat,nf_nat
nf_conntrack 42320 5 xt_state,ipt_MASQUERADE,iptable_nat,nf_nat,nf_co
nntrack_ipv4
ip_tables 8208 2 iptable_filter,iptable_nat
vfat 8480 0
fat 35868 1 vfat
nls_base 5696 2 vfat,fat
dmesg:
Linux video capture interface: v2.00
atmel_isi: fbd at 11cf5008 video buffer at phys addr 10c00000
atmel_isi: fbd at 11cf5030 video buffer at phys addr 10c40000
atmel_isi: fbd at 11cf5058 video buffer at phys addr 10c80000
atmel_isi: fbd at 11cf5080 video buffer at phys addr 10cc0000
atmel_isi atmel_isi.0: capture buffer: 962560 bytes at b1f00000 (phys 0x11f00000)
atmel_isi atmel_isi.0: Atmel ISI V4L2 device at 0xfff02c00
ovcamchip: v2.27 for Linux 2.6 : OV camera chip I2C driver
I2C /dev entries driver
i2c-gpio i2c-gpio.0: using pins 6 (SDA) and 7 (SCL)
atmel_isi_capture: opened
Vielen Dank.
Gruss
Bist Du sicher, dass Du alle benötigten Module geladen hast? atmel-isi.ko zu laden reicht nicht, Du musst auch den Kamera-spezifischen Treiber miteinbeziehen.
MfG Mark
Hallo,
den Treiber für das Kameramodul habe ich auch geladen (ovcamchip).
Ich habe beim Patchen in /drivers/media/video/Kconfig so gemacht:
if VIDEO_CAPTURE_DRIVERS && VIDEO_V4L2
config VIDEO_AVR32_ISI
tristate "AVR32 video support"
depends on VIDEO_DEV
---help---
This module makes the AVR32 Image Sensor Interface available
as a v4l2 device.
config VIDEO_OVCAMCHIP
tristate "OmniVision Camera Chip support"
depends on VIDEO_AVR32_ISI && I2C
---help---
Support for the OmniVision OV6xxx and OV7xxx series of camera chips.
This driver is intended to be used with the ov511 and w9968cf USB
camera drivers.
To compile this driver as a module, choose M here: the
module will be called ovcamchip.
Ist so richtig? Ist das Kameramodul wahrscheinlich defekt? Ich habe keinen Multitester, und das Kameramodul bisher ist noch nicht getestet.
Gruss
"This driver is intended to be used with the ov511 and w9968cf USB
camera drivers. " Hmm, so wie ich das verstehe sind die Treiber für USB gedacht. Soweit ich weiss werden zuzeit ofiziell nur die MT9M112 und die AT76C451BC auf dem AVR32 unterstützt, wenn Du was anderes haben möchtest, musst Du den Treiber selbst (um)schreiben, was nicht allzu schwer sein sollte, da alles schon vorgefertigt ist.
MfG Mark.
Danke für die Info p_mork.
Es ist schlecht für mich, da ich schwach in dieser Programmiersache, aber will trotzdem versuchen.
Gruss
Lass Dich nicht so schnell runterkriegen. Füg den Patch für AT76C451BC hinzu und schreib dann die Datei drivers/media/video/at76c451bc.c um. Ist eigentlich ganz easy, Es gibt 4 Funktionen (neben den für die Initialisierung) die in ein atmel_isi_camera struct eingetragen und an den ISI-driver übergeben werden müssen:
get_format - wird vom ISI-driver aufgerufen, um die aktuellen Einstellungen der Kamera wie z.B. Auflösung, Farbraum usw zu bekommen
set_format - zum setzen der Kameraeinstellungen
start_capture - wird immer aufgerufen, wenn ein neues Frame angefordert wird.
stop_capture analog zu start_capture.
Im Anhang findest Du einen selbst geschriebenen Treiber für die C3088, dem Vorganger der C3188. Sie hat eine geringere Auflösung, ist sonst aber sehr änlich zur C3188. Ersetzt auch die atmel-isi.c und atmel-isi.h , da die ofiziellen Dateien teilweise fehlerhaft/verinfacht sind. Schau Dir die ov6620.c an und änder da die Kamera-spezifischen Zeilen in den oben gennanten Funktionen. Um den Code als Modul compilieren zu können, muss in drivers/media/video/Kconfig so in Zeile 22 direkt nach dem VIDEO_AVR32_ISI Absatz folgendes hin:
config VIDEO_OV6620
tristate "OV6620 camera"
default n
depends on VIDEO_AVR32_ISI && I2C
---help---
This will add support for the OV6620 camera.
und in drivers/media/video/Makefile in Zeile 86 nach TUNER_3036 und AVR32_ISI :
obj-$(CONFIG_VIDEO_OV6620) += ov6620.o
Jetzt sollte es möglich sein im menuconfig den ov6620 (so heißt der Chip de C308zu wählen.
Probiers einfach mal aus, wenns Probleme gibt kannst Du ja hier schreiben.
MfG Mark
Ich freue mich sehr, vielen Dank p_mork!
Ich werde alles heute so schnell wie möglich zu erledigen. Gerade bin ich noch beschäftigt, den Treiber für OV7670 zu ändern, aber es gibt kein Datenblatt im Internet und ich habe Schwierigkeiten, den Register zu vergleichen.
Vielen Dank nochmal.
MfG.
http://groups.google.com/group/micro...ta%20Sheet.pdf...aber es gibt kein Datenblatt im Internet...
Hallo,
danke Dir für das Datenblatt.
Ich habe den Treiber schon fertig gemacht. Beim kompilieren tritt noch dieser Fehler auf:
V4L2_CID_FRATE ist nicht in videodev2.h deklariert.Code:CC [M] drivers/media/video/atmel-isi.o drivers/media/video/atmel-isi.c: In function 'avr32_isi_g_ctrl': drivers/media/video/atmel-isi.c:999: error: 'V4L2_CID_FRATE' undeclared (first use in this function) drivers/media/video/atmel-isi.c:999: error: (Each undeclared identifier is reported only once drivers/media/video/atmel-isi.c:999: error: for each function it appears in.) drivers/media/video/atmel-isi.c: In function 'avr32_isi_s_ctrl': drivers/media/video/atmel-isi.c:1015: error: 'V4L2_CID_FRATE' undeclared (first use in this function) make[3]: *** [drivers/media/video/atmel-isi.o] Error 1 make[2]: *** [drivers/media/video] Error 2 make[1]: *** [drivers/media] Error 2 make: *** [drivers] Error 2
genauso wie
V4L2_CID_I2C_WRITE und V4L2_CID_CLKRC (in ov7620.c)
Anhang ist der Treiber für ov7620. Ich kann mehrere Sache nicht verstehen, z.B.:
Zeile 122 Über CHIP_ID habe ich schon herausgefunden, aber I2C-Adresse für das Kameramodul ist mir noch nicht klar.
Zeile 484 Was macht die Funktion V4L2_CID_I2C_WRITE eigentlich?
Vielen Dank für Deine Hilfe.
MfG
Hallo,
Ich habe probiert, set_control und get_control auszukomentieren, und die originale atmel-isi Dateien benutzen.
So sieht es aus, nachdem ich das Modul geladen habe
MfGCode:/lib/modules/2.6.25.10.atmel.2/kernel/drivers/media/video # modprobe -v ov7620 Loading module i2c-core Loading module ov7620 Unable to handle kernel paging request at virtual address 78385814 ptbr = 91d7a000 pgd = 00000000 Oops: Kernel access of bad area, sig: 11 [#1] FRAME_POINTER chip: 0x01f:0x1e82 rev 2 Modules linked in: ov7620(+) i2c_core atmel_isi videodev v4l1_compat xt_state ip table_filter ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack ip _tables vfat fat nls_base PC is at i2c_smbus_xfer+0x8/0x438 [i2c_core] LR is at i2c_smbus_write_byte_data+0x22/0x2c [i2c_core] pc : [<c08a9674>] lr : [<c08a9c62>] Not tainted sp : 91fede00 r12: 78385808 r11: 0000e0a0 r10: 00001ad8 r9 : 00000000 r8 : 00000012 r7 : 91fede6c r6 : c0893480 r5 : 901ed8c0 r4 : 7fbd4e6c r3 : 901ed8b8 r2 : 00000016 r1 : 78385808 r0 : c0851dbc Flags: qvNzc Mode bits: hjmde....g CPU Mode: Supervisor Process: insmod [501] (task: 91c17300 thread: 91fec000) Stack: (0x91fede00 to 0x91fee000) de00: 00000003 00000000 fffffff9 900c7e0c 91fede50 00000001 9005e2b6 9003db30 de20: 91fede50 00000001 4e6c de80: 901ed8b8 00000016 c0893300 c0851dbc 00000002 91fede9a 900180ae 91fedeac dea0: 901e9ef4 02faf080 9001436a 91fedebc 901e9ef4 901ed8c0 7fbd4e6c c0892016 dec0: 91feded0 c0893480 901ed8c0 7fbd4e6c c088006a 91fedee4 c0893480 901ed8c0 dee0: 7fbd4e6c 90036638 91fedf94 91e15da0 901ed8c0 7fbd4e6c 91fedef4 0007f008 df00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 df20: 00000000 00000000 00000000 00000000 00000009 c0852d9c 91d54cc0 c08520dc df40: c0851fc4 c0851000 00000000 00000070 00000070 c08924c8 c08a9f88 00000016 df60: c0851d04 c0851dbc c085212c c0852104 00000016 00000014 00000000 0000240b df80: 900514fe 91fedfa4 91c7ef00 c08acda0 00000000 90013132 00000000 00072f70 dfa0: 0000504c 7fbd4e6c 00072a60 7fbd4f17 80000000 91fec000 00000001 2aaf3bac dfc0: 7fbd4d40 7fbd4d34 0007f018 0000230b 0007f008 0000230b 00000073 0007f008 dfe0: 00072f70 0000504c 7fbd4e6c 00072a60 7fbd4f17 00000002 0005a980 0007f018 Call trace: [<c08a9c62>] i2c_smbus_write_byte_data+0x22/0x2c [i2c_core] [<c0892016>] ov7620_write+0xa/0x10 [ov7620] [<c088006a>] ov7620_init+0x6a/0xa8 [ov7620] [<90036638>] sys_init_module+0xf8c/0x105c [<90013132>] syscall_return+0x0/0x12
Lesezeichen