itifg-tech Mailing List for itifg
Brought to you by:
mastein1
You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
(15) |
Apr
(12) |
May
(5) |
Jun
(18) |
Jul
(38) |
Aug
(5) |
Sep
(8) |
Oct
(22) |
Nov
(4) |
Dec
(10) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(8) |
Feb
(27) |
Mar
(31) |
Apr
(53) |
May
(49) |
Jun
(49) |
Jul
(51) |
Aug
(12) |
Sep
(23) |
Oct
(14) |
Nov
(22) |
Dec
(15) |
| 2005 |
Jan
(7) |
Feb
(12) |
Mar
(15) |
Apr
(22) |
May
(2) |
Jun
(3) |
Jul
(9) |
Aug
(8) |
Sep
(11) |
Oct
(4) |
Nov
|
Dec
(2) |
| 2006 |
Jan
(15) |
Feb
(1) |
Mar
(8) |
Apr
|
May
(10) |
Jun
|
Jul
(4) |
Aug
(1) |
Sep
(4) |
Oct
(10) |
Nov
(10) |
Dec
(1) |
| 2007 |
Jan
|
Feb
(1) |
Mar
(3) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
| 2008 |
Jan
(2) |
Feb
(6) |
Mar
(13) |
Apr
(12) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Krys L. <kry...@gm...> - 2011-01-10 19:25:02
|
Hello everybody, ... or nobody. The last email has been posted two years ago and more. I hope to get an answer. For my thesis I have to use a Dalsa camera (CA-D8) and I want to control it via my C++ code. Actually I need just only to take capture with the camera. Thus, I found your driver and now I try to install it on my linux pc. I downloaded the last version (8.4.0) but I can not compile it. I first get many error message about missing headers files. I solved this problem by setting the environnement CPATH. A this step no missing file but many variables (PTE_MASK, SA_SHIRQ, SA_INTERRUPT, ...) are not declared. I guess that the driver version is not compatible with my kernel version (2.6.29.6). Will a new version of your driver be coming soon or has the project been stopped definitely ? Thank you. Christophe Libbrecht -- ********************************************************* * «Le guerrier qui cultive son esprit polit ses armes.» * * -- Charles Baudelaire -- * * * * «La plus grande révélation est le silence.» * * -- Lao Tseu -- * ********************************************************* |
|
From: <M....@go...> - 2008-05-09 13:48:57
|
Hello,
little bit late answer, but better late than never :-)
There is definitely no image (or not the whole image) read in.
Perhaps extending the first sleep a bit (0.04 is less)?
Can You send me the whole output in /var/log/messages.
Sorry, no further idea at the moment :-(
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
"Shashidhara.Mara
the"
<sh...@gi....k To
r> M....@go...
cc
03.05.2008 12:10
Subject
Re: Re: need help configure shutter
Please respond to
"Shashidhara.Mara
the"
<sh...@gi....k
r>
Dear MStein,
I did the following debugging process,
[root@203 itifg-7.2.1]# /sbin/rmmod itifg
[root@203 itifg-7.2.1]# /sbin/insmod ./itifg_g.o
then i ran my code for the shutter,
while(input(-1)==""){
image_par(1,"send","0x82 0x88"); # setting CCD to external trigger mode
image_par(0,"run");
p "test";
image_par(1,"send","0x82 0x89"); # sending trigger signal using serial port
#image_par(0,"run");
sleep(0.04);
p "test1";
image_get(0,image);
sleep(1);
}
This is the output at terminal
1320.FOURC> qdo test1.mac
Reading file "/home/admin/macros/temp/test1.mac".
test
test1
image_get(): Not enough columns in array image.
PC-DIG 0: Can't do read() to start acquisiton: No data available.
test
test1
image_get(): Not enough columns in array image.
The /var/log/messages file is as follows:
May 3 04:03:01 203 su(pam_unix)[8393]: session opened for user news by
(uid=0)
May 3 04:03:01 203 su(pam_unix)[8393]: session closed for user news
May 3 19:29:19 203 su(pam_unix)[9715]: session opened for user root by
admin(uid=500)
May 3 19:40:04 203 kernel: itifg[I]: 1 device(s) found.
May 3 19:40:04 203 kernel: itifg[I]: configure device 0.
May 3 19:40:04 203 kernel: itifg[I]: PC-DIG frame grabber board found.
May 3 19:40:04 203 kernel: itifg[I]: interface control regs not aligned.
May 3 19:40:04 203 kernel: 9
May 3 19:40:04 203 kernel: 1|0|1|1|0|0|0|0|1|0|1|1|1|0|1|1|0|0|1|1|0|0|
May 3 19:40:04 203 kernel: itifg[I]: version 7.2.1-0.
May 3 19:40:04 203 kernel: itifg[I]: Dec 18 2007 (Linux 2.4.2414dec07).
May 3 19:40:04 203 kernel: itifg[I]: Debug output enabled, debug level is
127 (7f hex)
May 3 19:42:05 203 kernel: 9
May 3 19:42:05 203 kernel: 1|0|1|1|0|0|0|0|1|0|1|1|1|0|1|1|0|0|1|1|0|0|
May 3 19:58:23 203 kernel: 26de00 26de00 256 0
May 3 19:58:24 203 kernel: itifg[N]: timeout while reading frame!
Thank you,
regards,
shashi
--- Original Message ---
>From : M....@go...
To : "Shashidhara.Marathe"<sh...@gi...>
Date : 2008/05/01 Thursday AM 12:00:15
Subject : Re: need help configure shutter
Hello Shashi,
"Shashidhara.Marathe" <sh...@gi...> wrote on 30.04.2008 12:37:05:
> Dear M.Stein,
>
> "Fourc" is the Software( actually it is called SPEC, X-Ray
> Diffraction and Data Acquisition software and FOURC is four-circle
> diffractometer configuration ) used to execute the macros which
> control the CCD. I asked about the 'busy timers' problem with the
> SPEC support team and they have sent me following answer,
>
>
>
> " All I can tell you about the above error message is that when
> operating in "read" mode (vs. "memory-mapped" mode), the image_par(0,
> "run") leads to the following calls to the driver:
>
> 1) an ioctl() with GIOC_CR_SET_STOP
this is in itifgIoctl.c
> 2) a read()
this is in itifgMain.c. I think line 1003 is a hot canidate.
> You can see that those are the calls being made to the driver with
> DEBUG = 128.
Yes, this is what I ask You before. If You remove the normal driver
with 'rmmod itifg' and insert the debugging one with 'insmod ./itifg_g.o'
You can see more debugging output in /var/log/messages.
> The error message you report is due to the read() system call to the
> driver returning an error. You have to look at the driver to find out
> why there is an EBUSY error.
The comment above line 1003 says, that the last operation hasn't finished
yet, perhaps You (or the shutter) are to fast/slow/unsynchronized?
> (Note, you can do a "man errno" or look in /usr/include/asm/errno.h or
> other errno.h files to find what symbolic error is associated with a
> particular message, then you can look for that symbolic error in the
> driver source files.)
>
> Would it make any sense to use memory-mapped mode? (See the pcdig
> help file for details.) "
I think this don't fix the error, it makes it only more difficult to
find.
> Accoding to his answer i should look for driver source file?which
> driver source files i should look for?
See above and let us again try to load the debugging module!
I'm back at Monday, we have a spare day here.
matthias
> Please let me know.
>
>
> Thank you,
> shashi
>
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
Mr.Shashidhara Marathe
Ph.D student
#311,Dept. of Materials Science and Engg.
Gwangju Institute of Science and Tech.
1-oryong-Dong, Buk-Gu, Gwnagju- 500712
South Korea
Cell: 010-4619-0231
PH : +82-62-970-2352
FAX: +82-62-970-2304
|
|
From: <M....@go...> - 2008-04-30 15:00:36
|
Hello Shashi,
"Shashidhara.Marathe" <sh...@gi...> wrote on 30.04.2008 12:37:05:
> Dear M.Stein,
>
> "Fourc" is the Software( actually it is called SPEC, X-Ray
> Diffraction and Data Acquisition software and FOURC is four-circle
> diffractometer configuration ) used to execute the macros which
> control the CCD. I asked about the 'busy timers' problem with the
> SPEC support team and they have sent me following answer,
>
>
>
> " All I can tell you about the above error message is that when
> operating in "read" mode (vs. "memory-mapped" mode), the image_par(0,
> "run") leads to the following calls to the driver:
>
> 1) an ioctl() with GIOC_CR_SET_STOP
this is in itifgIoctl.c
> 2) a read()
this is in itifgMain.c. I think line 1003 is a hot canidate.
> You can see that those are the calls being made to the driver with
> DEBUG = 128.
Yes, this is what I ask You before. If You remove the normal driver
with 'rmmod itifg' and insert the debugging one with 'insmod ./itifg_g.o'
You can see more debugging output in /var/log/messages.
> The error message you report is due to the read() system call to the
> driver returning an error. You have to look at the driver to find out
> why there is an EBUSY error.
The comment above line 1003 says, that the last operation hasn't finished
yet, perhaps You (or the shutter) are to fast/slow/unsynchronized?
> (Note, you can do a "man errno" or look in /usr/include/asm/errno.h or
> other errno.h files to find what symbolic error is associated with a
> particular message, then you can look for that symbolic error in the
> driver source files.)
>
> Would it make any sense to use memory-mapped mode? (See the pcdig
> help file for details.) "
I think this don't fix the error, it makes it only more difficult to
find.
> Accoding to his answer i should look for driver source file?which
> driver source files i should look for?
See above and let us again try to load the debugging module!
I'm back at Monday, we have a spare day here.
matthias
> Please let me know.
>
>
> Thank you,
> shashi
>
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: <M....@go...> - 2008-04-25 14:03:52
|
Hello,
I think, now You should see an valid image (live video), because the
repetiting
output of test_itifg is "-0." instead of "0." before!?
The questions dealing with FOURC and 'busy timers' I can't answer, because
I don't know, what FOURC is. It is NOT my software.
matthias
"Shashidhara.Marathe" <sh...@gi...> wrote on 25.04.2008 12:41:47:
> Dear sir,
>
> Here is the output,
>
> [root@203 itifg-7.2.1]# ./config_pcdig p2b1tn00.exo
> pcdig: Downloaded to board 0.
>
> [root@203 itifg-7.2.1]# ./test_itifg -f ./cameras/dalsa-1m30_pcd.cam
>
> Driver version: 7.2.1-0.
> Compilation Date: Dec 18 2007.
> Boards detected: 1.
> Module type board 0: PCDig.
>
> 0 - conffile: ./cameras/dalsa-1m30_pcd.cam
> 0 - savefile: test_itifg
> 0 - save: FALSE
> 0 - display: TRUE
> 0 - wait: FALSE
> 0 - useshm: TRUE
> 0 - match: FALSE
> 0 - lock: FALSE
> 0 - board: 0
> 0 - module: 32
> 0 - camera: 0
> 0 - depth: 0
> 0 - scales: 64
> 0 - buffer: 1
> 0 - frames: 2147483647
> 0 - zoom: 1
> 0 - rate: 1.00
> 0 - opmode: read
> 0 - syncmd: block
> 0 - sacqmd: no special
> Camera_Name: "Dalstar 1M30 fps:30 (12bit)"
> Exo_Filename: "p2b1tn00.exo"
> CAM_MODE_CTL: Camera Mode Control= 0
> EXT_SYNC_PERIOD_TIME: Camera Exposure Time= 40000.000000
> PRI_MIDPOINT_DELAY: Camera Readout Time= 120000.000000
> EXSYNC_MIDPOINT_DELAY: Camera Readout Time= 120000.000000
> HORZ_OFF: Horizontal Offset= 10
> WIDTH_PIXELS: Image Width= 1024
> VERT_OFF: Vertical Offset= 0
> HEIGHT_PIXELS: Image Height= 1024
> CCLK_FREQ_SEL: Camera Clock Frequency Select= 40.000000
> PIXEL_SIZE: Pixel Size= 12
> TRIG_DIVIDE_FACTOR: Trigger Divider Factor= 0
> CameraName : Dalstar 1M30 fps:30 (12bit).
> ExoFilename: p2b1tn00.exo.
>
> Image size: 2097152.
> Image width: 1024.
> Image height: 1024.
> Image depth: 12.
> Source bits_per_pixel: 12.
> Source bytes_per_line: 2048.
> Source pointer: 0x40280000.
> Source offset: 0.
> Destination bits_per_pixel: 32.
> Destination bytes_per_line: 4096.
> Destination pointer: 0x40481000.
> Destination offset: 0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.
> -0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.-0.Broken pipe
>
> When i quit the fourc terminal, i get the following error message.
>
> 1272.FOURC> quit
>
> Admin's state is stored for /dev/ttyp#.
> Stopping busy timers ...
> [admin@203 temp]$
>
> What is this "busy timers" refers to?
>
> This started apearing now, after i started configuring, to include
> shutter......(from 2 weeks).
>
> Thanks and regards,
> Shashi
>
> > ....
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: <M....@go...> - 2008-04-24 11:50:14
|
Hello,
if You want to have 12bit out of the camera, You have to download
the right fpga-file by hand. The automatically downloaded is 8bit
only.
please try
./config_pcdig p2b1tn00.exo
OR IF THIS DON'T WORK
./config_pcdig -b0 -d 16
and run the test_itifg program again.
Alternatively, You can also advise test_itifg to use only 8bit (-d 8).
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
"Shashidhara.Marathe" <sh...@gi...> wrote on 24.04.2008 12:33:25:
> Dear sir,
>
> I have done as you said, and here is the output,
>
> In /usr/local/itifg-7.2.1 terminal as root,
>
>
> [root@203 itifg-7.2.1]# make config
> Building for Linux 2.4.2414dec07 i686 (OS_DEP=osLinux2X)
>
> [root@203 itifg-7.2.1]# make depend
> gcc -M -pipe -Wall -O2 -fomit-frame-pointer -mcpu=i686 -g
-DDEBUG_ITIFG=127 -
> I/usr/src/linux/include -D__KERNEL__ -DMODULE -DMODVERSIONS -include
> /usr/src/li
> nux/include/linux/modversions.h \
> osLinux2X.c itifgMain.c itifgIoctl.c itifgIOP.c itifgAux.c itifgBuf.
> c itifgAM.c
> itifgReg.c icpciReg.c pcdigReg.c amvsReg.c amdigReg.c ampcvReg.c
> amcmpReg.c > .d
> epend
> gcc -M -pipe -Wall -O2 -fomit-frame-pointer -mcpu=i686 -g
-DDEBUG_ITIFG=127 -
> D__CONFIG__ \
> lex.yy.c convert.c procfs.c amvsTok.c amdigTok.c ampcvTok.c
> pcdigTok.c amcmpTok.
> c y.tab.c >> .depend
> gcc -M -pipe -Wall -O2 -fomit-frame-pointer -mcpu=i686 -g
-DDEBUG_ITIFG=127 \
> swtrig_itifg.c config_pcdig.c \
> ioport_itifg.c extime_itifg.c >> .depend
> gcc -M -pipe -Wall -O2 -fomit-frame-pointer -mcpu=i686 -g
-DDEBUG_ITIFG=127 -
> I/usr/X11R6/include \
> test_itifg.c >> .depend
> sed -e '/\.o:/s//_g.o:/' .depend >> .tmpdep; \
> cat .tmpdep >> .depend; rm -f .tmpdep
>
>
> [root@203 itifg-7.2.1]# make
> make: Nothing to be done for `all'.
>
> [root@203 itifg-7.2.1]# MAKEDEV.itifg
> bash: MAKEDEV.itifg: command not found
>
> [root@203 itifg-7.2.1]# insmod ./itifg_g.o
> bash: insmod: command not found
>
> [root@203 itifg-7.2.1]# uname -a
> Linux 203.237.47.31 2.4.2414dec07 #2 Tue Dec 18 11:15:52 KST 2007
> i686 i686 i386 GNU/Linux
>
> I have to add one thing here.
>
> when i compiled driver first time, Gcc was complaining that the
> varaible yydebug was used without declaration. so we commented
> out lines 1055-1057 of "iticonfig.y". Then it compiled fine.
> This wast he procedure we followed from Peter Falus of ESRF,about
> 3-4 years back. will this be a problem?
>
>
>
> when i run test itifg, following is the response,
>
>
> [root@203 itifg-7.2.1]# ./test_itifg -f ./cameras/dalsa-1m30_pcd.cam
>
> Driver version: 7.2.1-0.
> Compilation Date: Dec 18 2007.
> Boards detected: 1.
> Module type board 0: PCDig.
>
> 0 - conffile: ./cameras/dalsa-1m30_pcd.cam
> 0 - savefile: test_itifg
> 0 - save: FALSE
> 0 - display: TRUE
> 0 - wait: FALSE
> 0 - useshm: TRUE
> 0 - match: FALSE
> 0 - lock: FALSE
> 0 - board: 0
> 0 - module: 32
> 0 - camera: 0
> 0 - depth: 0
> 0 - scales: 64
> 0 - buffer: 1
> 0 - frames: 2147483647
> 0 - zoom: 1
> 0 - rate: 1.00
> 0 - opmode: read
> 0 - syncmd: block
> 0 - sacqmd: no special
> Camera_Name: "Dalstar 1M30 fps:30 (12bit)"
> Exo_Filename: "p2b1tn00.exo"
> CAM_MODE_CTL: Camera Mode Control= 0
> EXT_SYNC_PERIOD_TIME: Camera Exposure Time= 40000.000000
> PRI_MIDPOINT_DELAY: Camera Readout Time= 120000.000000
> EXSYNC_MIDPOINT_DELAY: Camera Readout Time= 120000.000000
> HORZ_OFF: Horizontal Offset= 10
> WIDTH_PIXELS: Image Width= 1024
> VERT_OFF: Vertical Offset= 0
> HEIGHT_PIXELS: Image Height= 1024
> CCLK_FREQ_SEL: Camera Clock Frequency Select= 40.000000
> PIXEL_SIZE: Pixel Size= 12
> TRIG_DIVIDE_FACTOR: Trigger Divider Factor= 0
> CameraName : Dalstar 1M30 fps:30 (12bit).
> ExoFilename: p2b1tn00.exo.
>
> Image size: 2097152.
> Image width: 1024.
> Image height: 1024.
> Image depth: 12.
> Source bits_per_pixel: 12.
> Source bytes_per_line: 2048.
> Source pointer: 0x40280000.
> Source offset: 0.
> Destination bits_per_pixel: 32.
> Destination bytes_per_line: 4096.
> Destination pointer: 0x40481000.
> Destination offset: 0.
> 0.0.0.0.0.
> 0.
> 0.
> Broken pipe
> [root@203 itifg-7.2.1]#
>
> Thank you & regards,
> Shashi
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
|
|
From: <M....@go...> - 2008-04-23 12:04:16
|
Hello,
why insmod ./itifg8_g.o don't work!?
Please go the complete steps in README:
make config
make depend
make
MAKEDEV.itifg
insmod itifg_g.o
and send me the terminal output.
The 'try to transfer invalid..' means, that date from the
camera are read in, but the format seems to be misaligned.
By the way, what is Your 'uname -a' output?
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
"Shashidhara.Marathe" <sh...@gi...> wrote on 23.04.2008 12:27:30:
> Dear sir,
>
> As you mentioned,I try to load the debugging mode,
> but i could not do that.
>
> As you said i run following command at the terminal and here is
> the response.
>
> root@203 temp]# rmmod itifg
> bash: rmmod: command not found
> [root@203 temp]# modprobe itifg_g
> bash: modprobe: command not found
> [root@203 temp]#
>
> Do i have to run in some particular directory?....i don't know
> where to run. Please help me. I saw README file of itifg-7.2.1,
> It says something about debugging......I have quoted the following line
> from README file.
>
> "login as root
> insmod ./itifg.o (./itifg_g.o for debug-version)
> MAKEDEV.itifg (!!IMPORTANT!! - to update the devices files)
> ./config_pcdig (PCDig user only!)
> "
> I tried to run that as well but i could not sucssed.
>
> Looking at the /var/log/messages i find following lines mentioned
>
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V0
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V1
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V2
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V3
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V4
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V5
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V6
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V7
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V8
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V9
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V10
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V11
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V12
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V13
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V14
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V15
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V16
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V17
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V18
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V19
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V20
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V21
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V22
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V23
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V24
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V25
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V26
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V27
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V28
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V29
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V30
> Apr 23 14:39:48 203 kernel: itifg[W]: b) try to transfer invalid
> block at: C3/B15/V31
> Apr 23 14:39:48 203 kernel: itifg[N]: frame 0 not correctly transfered!
> Apr 23 14:43:08 203 su(pam_unix)[31829]: session opened for user
> root by admin(uid=500)
>
>
> This is repeated many times and i have quoted only last lines.I
> don't know without debugg mode whether it makes any sense.
>
> Please let me know how to do debug. Sorry for my limited knowledge.
>
> Thanks and regards,
> Shashi
>
> > ...
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
|
|
From: <M....@go...> - 2008-04-23 08:58:23
|
Hello Tim,
Tim van Werkhoven <T.I...@ph...> wrote on 19.04.2008
20:23:46:
> Hi Matthias,
>
> On Apr 18, 2008, at 16:48 , M....@go... wrote:
>
> > ...
>
> Ah that worked for me, thanks. I noticed you used those flags in
> test_itifg, but it never occurred to me that those flags were that
> important.
>
> Now that O_APPEND seems to influence the drivers behaviour quite a
> bit, are there other flags that are important? I see you also use
> O_SYNC which supposedly explicitly synchronizes the read/write calls
> in memory, blocking until the call is complete. Is this also necessary?
There are:
O_RDONLY; O_WRONLY; O_RDWR: self describing
O_EXCL: only ONE can open the device at a time
O_NONBLOCK: don't block the read call till next frame
O_APPEND: don't use only one buffer; 'append to the current'
O_SYNC: keep the device synchronized to frames (blocks). For the
dma device it means: start the dma right when the frame
arises in on-board memory (this is what you usually expect,
but if YOu want, You can start the dma when You want).
For the exs device it means: if You write a new shutter time,
update the shutter AFTER the whole frame is done (if You don't
do this, Your frame can be broken)
O_DIRECT: no used
> I also noticed by running test_itifg through strace and varying the
> size of the buffer (-n) and the number of frames captured (-t) that
> you do *not* use lseek(fd, +LONG_MAX, SEEK_END), but instead do
> something like lseek(fd, bufsize, SEEK_END). It appears that this
> gives new frames until 'bufsize' bytes are transferred, after which
> you restart the cycle by calling lseek(fd, bufsize, SEEK_END) again.
> How does this approach differ from lseek(fd, +LONG_MAX, SEEK_END), is
> there a lot of overhead in restarting such a cycle and in what
> situations would you recommend one of the two approaches?
The is a fundamental difference:
1. lseek +LONG_MAX: grab mode
You are interested always in the MOST RECENT frame. If You have a longer
processing and there are other frames arrived in the meantime, they are
dropped. The Acquisition is forever.
test_itifg -c (contig) mode
2. lseek n*paged_size: snap mode
You are interested in ALL frames. If You have a longer processing and
there are other frames arrived in the mean time, You get always the
next frame, not cared how 'old' the frame is. You have to count the
number of acquisitions.
NOTICE: If You are on-time with Your processing (display, save,
calculations)
there is no difference, but if not...
We usually use the grab mode for user live image display (including some
easy on-time calculations) and the snap mode for measuring series.
> Also, when I'm using +LONG_MAX to start capture, I notice that the
> values returned by SEEK_END and SEEK_CUR keep increasing with
> pagedsize every frame. Since the camera I'm using runs at about 1000
> fps, and pagedsize is 68 kb, this means that in about 31k frames,
> LONG_MAX bytes get transferred.
>
> I notice this happens at frame 30839 for me, and the return value
> shifts back:
> frame: 30835, seek_end returns: 2147172352, seek_cur returns: 2147172352
> i: 30836, end: 2147241984, cur: 2147241984
> i: 30837, end: 2147311616, cur: 2147311616
> i: 30838, end: 2147381248, cur: 2147381248
> i: 30839, end: 2147450880, cur: 2147450880
> i: 30840, end: 1073778688, cur: 1073778688
> i: 30841, end: 1073848320, cur: 1073848320
> i: 30842, end: 1073917952, cur: 1073917952
>
> while 2147450880/pagedsize == 32 768, 1073778688/pagedsize == 15
> 420.7647, which is not an integer number. How does this influence the
> general operation of itifg and how should I take care of these events?
Oh dear, You are right!!!
The overflow calcualtion here is (itifgBuf.c:buf_int_overflow()):
if (buf->present + buf->isize == LOFF_MAX ||
buf->present + (iti_loff_t)buf->isize < buf->present)
{
iti_loff_t offset = (iti_loff_t)1 << (sizeof(iti_loff_t) * 8 -2);
buf->present -= offset, buf->current -= offset;
overflow = TRUE;
}
which isn't aligned to buf->isize (item_size: frame size here). :-(
Please try a offset %= paged_size; for now (this is, what we do).
I have to fix it!
Since we only use 64bit, the overflow isn't as much.
> Also, is it correct that:
> - the return value of lseek(fd, 0, SEEK_END) is the address where the
> next byte read from the grabber will be written, meaning that the
> newest byte in memory is located at the return value - 1?
> - the return value of lseek(fd, 0, SEEK_CUR) is the address where the
> user needs to read next, i.e. the address up to which the user has
> processed data?
> - the difference between the return values is the amount of new data
> waiting in the buffer for processing? In the test program this value
> is always equal to pagedsize, but will this increase to n*pagedsize if
> the program cannot keep up with the camera and the buffer starts
> filling up?
1./2.)
Yes, the idea behind it is a producer/consumer with a read and write
pointer.
3.)
This differs in grab/snap mode (see above)!.
>
> > ...
>
> Ok, so the 80ms is an empirical value, you know the readout time of
> the vossk-ccd1300b camera yourself. I've also found the dalsa camera
> manual now which makes things a bit clearer. I haven't tried
> triggering exposures myself yet, but it's something I'll try when I
> have time.
>
OK.
> Again, thanks :)
You are welcome!
> Tim
Regards
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: <M....@go...> - 2008-04-22 14:19:26
|
Hallo,
so lets try to fix it...
At first I need mode debugging output. Please load the debugging
module (as root):
rmmod itifg
modprobe itifg_g
Then please run TWO acquisition cycle of Your program and send
me the output in /var/log/messages.
The interesting lines are those which contains 'itifg'. Please cut it,
because
the file is usually a bigger one.
Hope, the statements are right, because 7.2.1 is rather old...
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
"Shashidhara.Marathe" <sh...@gi...> wrote on 17.04.2008 12:32:31:
> Dear sir,
>
> I am trying to use the external shutter with the DALSA 1M30P CCD. I
> have a uniblitz shutter
> ( Model-LS6T2,VCM-D1 controller)PC-DIG frame graber and itifg-7.2.1
> driver. And I am sucessfull y running CCD in Free run mode without
> any trouble and of course it is on-chip
> shutter mode.
>
> What i want to do is use CCD's SMA Trigger out to trigger shutter,
> which will provide a standard TTL signal output which is high
> whenever the camera is integrating. SMA trigger out is connected to
> the pulse input of the shutter controller.so i used following code
> in fourc terminal to drive the shutter and simultaneosly take image.
> Before running this i changed the CCD to 'External
> Integration/serial trigger' mode.
>
> I used following code in Fourc terminal to check the motion and taking
image.
>
> #### test1.mac#####
> while(input(-1)==""){
> image_par(1,"send","0x82 0x88"); # control register setting to external
mode
> image_par(0,"run"); # Starts Acquisition
> p "test";
> image_par(1,"send","0x82 0x89"); #triggering '0'bit of control
> register(serial trigger)
> sleep(0.04);
> p "test1";
> image_get(0,image); # copies the image
> sleep(1);
> }
>
> here is fourc response
>
> 1156.FOURC> qdo test1.mac
> Reading file "/home/admin/macros/temp/test1.mac".
> test
> test1
> PC-DIG 0: Can't do read() to start acquisiton: Device or resource busy.
> test
> test1
> PC-DIG 0: Can't do read() to start acquisiton: Device or resource busy.
> test
> test1
>
> Here shutter moves properly but no image.
>
> by chnging code,
>
> #### test1.mac#####
> while(input(-1)==""){
> image_par(1,"send","0x82 0x88");
> p "test";
> image_par(1,"send","0x82 0x89");
> sleep(0.04);
> p "test1";
> image_get(0,image);
> sleep(1);
> }
>
> Fourc Response
>
> 1157.FOURC> qdo test1.mac
> Reading file "/home/admin/macros/temp/test1.mac".
> test
> test1
>
> Code runs properly without image, But no error.shutter also moves.
>
> so, i think there is some problem in image_par(0,"run"), or the
> coding but i can't make
> out.How to check, where is the problem?
>
> I did 'debug 128' and run following code & response.
>
> #### test1.mac#####
> while(input(-1)==""){
> image_par(1,"send","0x82 0x88");
> image_par(0,"run");
> p "test";
> image_par(1,"send","0x82 0x89");
> sleep(0.04);
> p "test1";
> image_get(0,image);
> sleep(1);
> }
>
> Response of Fourc,
>
> 1161.FOURC> qdo test1.mac
> Reading file "/home/admin/macros/temp/test1.mac".
> PC-DIG 0: ioctl(GIOC_GE_GET_STATS)
> PC-DIG 0: ioctl(GIOC_CR_SET_STOP)
> PC-DIG 0: Run read() = -1, size = 8404992
> PC-DIG 0: Can't do read() to start acquisiton: Device or resource busy.
> test
> test1
> PC-DIG 0: ioctl(GIOC_GE_GET_STATS)
> PC-DIG 0: ioctl(GIOC_CR_SET_STOP)
> PC-DIG 0: Run read() = -1, size = 8404992
> PC-DIG 0: Can't do read() to start acquisiton: Device or resource busy.
> test
> test1
>
> I don't know what i can say from this......
>
> Please help me out, i am strugling with this for long time.
>
> Thanks and regards,
> Shashi
>
>
>
>
> Mr.Shashidhara Marathe
> Ph.D student
> #311,Dept. of Materials Science and Engg.
> Gwangju Institute of Science and Tech.
> 1-oryong-Dong, Buk-Gu, Gwnagju- 500712
> South Korea
> Cell: 010-4619-0231
> PH : +82-62-970-2352
> FAX: +82-62-970-2304
|
|
From: Tim v. W. <T.I...@ph...> - 2008-04-19 19:23:53
|
Hi Matthias, On Apr 18, 2008, at 16:48 , M....@go... wrote: > Perhaps You don't have specified the O_APPEND flag to open(2)!? You > can > also set it later by fcntl(2). If this flag isn't set, only one and > the > same buffer is filled all the time. Sorry, I have forget to mention > it. Ah that worked for me, thanks. I noticed you used those flags in test_itifg, but it never occurred to me that those flags were that important. Now that O_APPEND seems to influence the drivers behaviour quite a bit, are there other flags that are important? I see you also use O_SYNC which supposedly explicitly synchronizes the read/write calls in memory, blocking until the call is complete. Is this also necessary? I also noticed by running test_itifg through strace and varying the size of the buffer (-n) and the number of frames captured (-t) that you do *not* use lseek(fd, +LONG_MAX, SEEK_END), but instead do something like lseek(fd, bufsize, SEEK_END). It appears that this gives new frames until 'bufsize' bytes are transferred, after which you restart the cycle by calling lseek(fd, bufsize, SEEK_END) again. How does this approach differ from lseek(fd, +LONG_MAX, SEEK_END), is there a lot of overhead in restarting such a cycle and in what situations would you recommend one of the two approaches? Also, when I'm using +LONG_MAX to start capture, I notice that the values returned by SEEK_END and SEEK_CUR keep increasing with pagedsize every frame. Since the camera I'm using runs at about 1000 fps, and pagedsize is 68 kb, this means that in about 31k frames, LONG_MAX bytes get transferred. I notice this happens at frame 30839 for me, and the return value shifts back: frame: 30835, seek_end returns: 2147172352, seek_cur returns: 2147172352 i: 30836, end: 2147241984, cur: 2147241984 i: 30837, end: 2147311616, cur: 2147311616 i: 30838, end: 2147381248, cur: 2147381248 i: 30839, end: 2147450880, cur: 2147450880 i: 30840, end: 1073778688, cur: 1073778688 i: 30841, end: 1073848320, cur: 1073848320 i: 30842, end: 1073917952, cur: 1073917952 while 2147450880/pagedsize == 32 768, 1073778688/pagedsize == 15 420.7647, which is not an integer number. How does this influence the general operation of itifg and how should I take care of these events? Also, is it correct that: - the return value of lseek(fd, 0, SEEK_END) is the address where the next byte read from the grabber will be written, meaning that the newest byte in memory is located at the return value - 1? - the return value of lseek(fd, 0, SEEK_CUR) is the address where the user needs to read next, i.e. the address up to which the user has processed data? - the difference between the return values is the amount of new data waiting in the buffer for processing? In the test program this value is always equal to pagedsize, but will this increase to n*pagedsize if the program cannot keep up with the camera and the buffer starts filling up? > > No no, EXSYNC and PRI are two independed outputs at the PCDig's > connector. > Most times the camera only needs one input: EXSYNC. As far as I > know, only > Dalsa's line scan cameras needs additional PRI Signal. > > You don't see the 80ms readout not directy, You only see it > indirectly: > 120ms - 40ms = 80ms. > Means If You want 40ms Exposure and You know, that Your camera have a > readout of 80ms, You can't go with Your cycle time below 40ms + 80ms = > 120ms. > Take care of a litte safety time of 1ms => 121ms. Ok, so the 80ms is an empirical value, you know the readout time of the vossk-ccd1300b camera yourself. I've also found the dalsa camera manual now which makes things a bit clearer. I haven't tried triggering exposures myself yet, but it's something I'll try when I have time. Again, thanks :) Tim |
|
From: <M....@go...> - 2008-04-18 14:51:50
|
Hello Tim.
Tim van Werkhoven <T.I...@ph...> wrote on 17.04.2008
16:22:03:
> Hi Matthias,
>
>>...
>
> The driver appears to do what I want now, although I again have some
> questions.
>
> Again, I init my mmap with size 4*pagedsize. I configure the camera,
> start grabbing by calling lseek(fd, +LONG_MAX, SEEK_END), do some
> stuff and stop by calling lseek(fd, -LONG_MAX, SEEK_END). So far so
> good.
>
> When I try a lseek(fd, 0, SEEK_END), process image, lseek(fd,
> pagedsize, SEEK_CUR) cycle, everything works as expected. Select
> blocks until a new frame arrives, and the mmap'ed memory holds a new
> frame every time. I do this without using the return value of the
> lseek calls at all.
>
> What I find a little odd though, is that my new image is always at the
> beginning of my mmap'ed memory, and the rest of the buffer seems
> empty. Even if I do not call SEEK_CUR afterwards and thus not tell the
> driver that I'm ready, I do not see the buffer fill up.
>
> SEEK_END *does* return values that keep increasing, like 69632 the
> first time (pagedsize), 5849088 (84*pagedsize), etc. The image located
> at the beginning of the buffer is overwritten every time, but I do not
> see images in the rest of the buffer.
>
> Could you explain why every new image is at the beginning of the
> mmap'ed memory and why the rest remains empty? And do I need to use
> the output of the lseek() calls at all, or are these merely necessary
> to signal the driver I want to do something? It seems to me I can
> always use the data in the beginning of the buffer, and do not need to
> move my pointer at all.
Perhaps You don't have specified the O_APPEND flag to open(2)!? You can
also set it later by fcntl(2). If this flag isn't set, only one and the
same buffer is filled all the time. Sorry, I have forget to mention it.
> >
> > Please read the man/extime_itifg.txt manpage, it seems to be up-to-
> > date
> > an describes it a little bit. Further You should have a look at
> > conffiles/vossk-ccd1300b-12bpp-pcd.cam. The values into this file are
> > setup for a free running mode with fps = 1/121ms and an exposure time
> > of 40ms (readout is 80ms, safety is 1ms)
>
> Oh sorry, I overlooked that. It's a bit clearer, thanks. As for the
> vossk-ccd1300b-12bpp-pcd.cam
> file, I see that
> EXT_SYNC_PERIOD_TIME = 121000.000
> sets the complete cycle time, and that either
> EXSYNC_MIDPOINT_DELAY = 40000.000
> or
> PRI_MIDPOINT_DELAY = 40000.000
> set the exposure time (or both?), but I do not see the readout time of
> 80 ms anywhere. 2x40ms = 80ms, but I assume that the values that
> control the exposure time do not set the readout time. Could you
> explain this?
No no, EXSYNC and PRI are two independed outputs at the PCDig's connector.
Most times the camera only needs one input: EXSYNC. As far as I know, only
Dalsa's line scan cameras needs additional PRI Signal.
You don't see the 80ms readout not directy, You only see it indirectly:
120ms - 40ms = 80ms.
Means If You want 40ms Exposure and You know, that Your camera have a
readout of 80ms, You can't go with Your cycle time below 40ms + 80ms =
120ms.
Take care of a litte safety time of 1ms => 121ms.
REMARK: Recent cameras can expose a new image WHILE sending out the former
image. With this cameras You can shrinken the cycle time more and
more, till You reach the readout time.
matthias
> Thanks again for your time,
>
> Tim
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: Tim v. W. <T.I...@ph...> - 2008-04-17 15:22:17
|
Hi Matthias, On Apr 15, 2008, at 17:50 , M....@go... wrote: > > When You are doing a normal blocking read with page_size, it is easy > for You and the driver. The call blocks until a new frame has arrived > an then the frame is copied out. If You call read the next time, You > block and read the next frame. > > With select/mmap the things get more difficult: > > 1. How to wait for a new frame? -> with select, You have done this. > > 2. How to get the information, at with offset into Your mmap space > the most recent frame resides, at 0 * page_size, 1* page_size, > 2 * page_size, 3 * page_size (assuming mmap size is 4 frames). > > This is done by lseek 0 SEEK_END > > 3. You have to tell the driver, that You have read/accepted the frame. > This is important for Your problem, thar select always signals > incoming data. > > This is done by lseek paged_size SEEK_CUR > > The lseek interface is as follows > > SEEK_END refers to the producer (the device driver that generated > frames) > SEEK_CUR refers to the consumer (You) > > offset == 0 means: don't change anything, query the current value > offset != 0 means: adjust somthing (paged_size based) The driver appears to do what I want now, although I again have some questions. Again, I init my mmap with size 4*pagedsize. I configure the camera, start grabbing by calling lseek(fd, +LONG_MAX, SEEK_END), do some stuff and stop by calling lseek(fd, -LONG_MAX, SEEK_END). So far so good. When I try a lseek(fd, 0, SEEK_END), process image, lseek(fd, pagedsize, SEEK_CUR) cycle, everything works as expected. Select blocks until a new frame arrives, and the mmap'ed memory holds a new frame every time. I do this without using the return value of the lseek calls at all. What I find a little odd though, is that my new image is always at the beginning of my mmap'ed memory, and the rest of the buffer seems empty. Even if I do not call SEEK_CUR afterwards and thus not tell the driver that I'm ready, I do not see the buffer fill up. SEEK_END *does* return values that keep increasing, like 69632 the first time (pagedsize), 5849088 (84*pagedsize), etc. The image located at the beginning of the buffer is overwritten every time, but I do not see images in the rest of the buffer. Could you explain why every new image is at the beginning of the mmap'ed memory and why the rest remains empty? And do I need to use the output of the lseek() calls at all, or are these merely necessary to signal the driver I want to do something? It seems to me I can always use the data in the beginning of the buffer, and do not need to move my pointer at all. > > Please read the man/extime_itifg.txt manpage, it seems to be up-to- > date > an describes it a little bit. Further You should have a look at > conffiles/vossk-ccd1300b-12bpp-pcd.cam. The values into this file are > setup for a free running mode with fps = 1/121ms and an exposure time > of 40ms (readout is 80ms, safety is 1ms) Oh sorry, I overlooked that. It's a bit clearer, thanks. As for the vossk-ccd1300b-12bpp-pcd.cam file, I see that EXT_SYNC_PERIOD_TIME = 121000.000 sets the complete cycle time, and that either EXSYNC_MIDPOINT_DELAY = 40000.000 or PRI_MIDPOINT_DELAY = 40000.000 set the exposure time (or both?), but I do not see the readout time of 80 ms anywhere. 2x40ms = 80ms, but I assume that the values that control the exposure time do not set the readout time. Could you explain this? Thanks again for your time, Tim |
|
From: <M....@go...> - 2008-04-16 08:00:33
|
Hello Tim,
this functionality is completely missing. I have forgotten to port it :-(
Also dma->transfered isn't filled.
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: <M....@go...> - 2008-04-15 15:50:38
|
Hello Tim,
Tim van Werkhoven <T.I...@ph...> wrote on 12.04.2008
20:21:08:
> Hi again Matthias,
>
>> ...
>
> I've been trying this but there are a few things that don't work, or
> at least not as I expected it to work.
>
> Opening the board(/dev/ic0dma) and configuring it works without a
> problem as far as I can tell. Starting the camera with lseek +LONG_MAX
> works, but then I run into some problems.
>
> My test program opens the device, reads configuration from the FG,
> reads the .cam file, sets the configuration, and then gets several
> camera variables (width, height, decimation etc). Finally I set the FD
> to nonblocking. After configuring the FG board I setup my mmap buffer.
> I reserve 4 * PAGEDSIZE bytes, giving me space for 4 frames. If I'm
> correct this procedure more or less mimics test_itifg.
>
> First of all, select() does not seem to block until an image is ready,
> it returns immediately with return code 1, i.e. one FD would be ready
> for reading. When I run `lseek(cam->fd, 0, SEEK_CUR);` after that
> however, it returns 0, implying that nothing happend. Also the image I
> read out is the same every time lseek returns 0.
>
> Second, I do not exactly know what to do with the lseek return value.
> In my test program I ran select() followed by lseek() several times,
> the first times lseek returned 0 and the images were identical. After
> a while, there appeared to be a new image as lseek returned exactly
> PAGEDSIZE, and the image I read out was different. However, I did not
> change my mmap'ed pointer at all, it was still pointing to the
> beginning of the mmap buffer. Another thing that I noticed is that
> lseek does not wrap, the values it returns can be anything, sometimes
> several times the mmap size.
>
> The questions I have are:
>
> - Do you know why select() does not block?
>
> - What does lseek SEEK_CUR return, and what should I do with that? Do
> I need to adjust a pointer to the mmap'ed area myself, or is the mmap
> window modified by the driver?
>
> - I noticed in test_itifg that you lseek with `int whence` set to
> SEEK_END with offset 0 several times as well. What does this do
> exactly, and do I need that?
When You are doing a normal blocking read with page_size, it is easy
for You and the driver. The call blocks until a new frame has arrived
an then the frame is copied out. If You call read the next time, You
block and read the next frame.
With select/mmap the things get more difficult:
1. How to wait for a new frame? -> with select, You have done this.
2. How to get the information, at with offset into Your mmap space
the most recent frame resides, at 0 * page_size, 1* page_size,
2 * page_size, 3 * page_size (assuming mmap size is 4 frames).
This is done by lseek 0 SEEK_END
3. You have to tell the driver, that You have read/accepted the frame.
This is important for Your problem, thar select always signals
incoming data.
This is done by lseek paged_size SEEK_CUR
The lseek interface is as follows
SEEK_END refers to the producer (the device driver that generated frames)
SEEK_CUR refers to the consumer (You)
offset == 0 means: don't change anything, query the current value
offset != 0 means: adjust somthing (paged_size based)
> - If I'm correct the data beyond the frame itself (after RAWSIZE)
> holds a iti_info_t struct. However, although I can read out the
> timestamp, I cannot read out the frames captures or lost, do you know
> how to do this correctly? The methods I use is (after SEEK_CUR):
>
> buf->info = (iti_info_t *)((char *)buf->data + cam->rawsize);
> struct timeval timestamp; // copying unnecessary, I know
> memcpy (×tamp, &(buf->info->acq.timestamp), sizeof(struct
> timeval));
>
> after this, I would assume that buf->info->acq.captured and buf->info-
> >acq.lost would hold the captured and lost images, however their
> values are 0. (int) timestamp.tv_sec does appear to work however, so I
> assume I'm reading the right part of memory. How can I get the frames
> captured and/or lost?
>
I'm don't have used this for a longer time. I have to check it. Is the
dma.transfered count updated!?
>
>> ...
>
> I would like to set the camera runmethod (if I'm correct this is set
> with 'EXSYNC_MODE = EXSYNC_FREE_RUNNING'), what modes are available?
>
> Also I would like to set the framerate and exposure time
> independently. There are multiple timings however, and I do not know
> which times the various parameters control. I noticed that
> EXT_SYNC_TIME appears to be rejected by test_itifg, when I uncomment
> the line '#EXT_SYNC_TIME = 572.000 # us (140ns ... 572us)',
> test_itifg tells me 'parse error line 24: EXT_SYNC_TIME = (null)',
> when setting it to 'EXT_SYNC_TIME = 0.572000' I get a segfault.
>
> Furthermore, I noticed that EXT_SYNC_PERIOD_TIME must be longer than
> PRI_MIDPOINT_DELAY, is it correct that the first controls the
> framerate (period) and the other the exposure time or something?
>
> In short: what do the timings mean? I'm using the PCDIG board in
> combination with a dalsa CA-D6 camera.
Please read the man/extime_itifg.txt manpage, it seems to be up-to-date
an describes it a little bit. Further You should have a look at
conffiles/vossk-ccd1300b-12bpp-pcd.cam. The values into this file are
setup for a free running mode with fps = 1/121ms and an exposure time
of 40ms (readout is 80ms, safety is 1ms)
>
>> ...
>
> With respect to the above questions, how/when is the exs device
> relevant?
If You have setup the camera in a manner, that it needs a trigger
input (edge) to make images and/or a shutter input (level) to control
the exposure time You have to use the exs device.
> Also, I noticed a typo/error in pcdigIface.c. It statically fills a
> struct for setting a board to default config, which goes like:
>
> 96 /* next both values are adjusted by the fpga
> download!!! */
> 97 8, /* most used pixel size */
> 98 PCD_1CHAN_L2R, /* standard geometry */
> 99 PCD_DISABLE /* non-interlaced is standard */
>
> However, the struct is declared in itifgExt.h as:
>
> 714 int geometry; /* this we need to load the source scatter
> gather right */
> 715 int pixelsize; /* this value we need to load the lookup tables
> right */
> 716 int interlaced; /* we have to collect even and odd frame for
> one image */
> 717 };
>
> suggestiong that line 97 and 98 are swapped in pcdigIface.c
Thanks, I have fixed it.
> Another thing that I found was that test_itifg does not accept mmap'ed
> mode, after calling
>
> 1596 if (ioctl (devdesc, GIOC_SET_CAMCNF, &camcnf) < 0)
>
> it says
>
> 1602 if (args->other[args->other_i])
> 1603 Clean_Up (EXIT_SUCCESS);
>
> which quites mmap mode immediately without capturing frames. Is that
> correct?
I don't know, what I have programed there. In EVERY case, it is wrong.
Thank's.
> Again thanks for your time and help,
>
> Tim
If some statement are too short, please ask again! You know, the time...
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: Tim v. W. <T.I...@ph...> - 2008-04-14 06:30:27
|
Hi again Matthias, > There are two basic operation modes: > > 1. The 'grab' mode > You only want to have one image at a time and You want to have the > most recent image. You don't care, if there are images lost, when > You process one. > Often used for live video and quick processing. > > call sequence: > open > mmap ringbuffer size (min 2 images) > ioctl GET_CAMCNF > modify via iti_read_config > ioctl SET_CAMCNF > ioctl GET_RAW|PAGED_SIZE > lseek +LONG_MAX SEEK_END > > loop: > wait for image (poll/select/signal) > lseek 0 SEEK_CUR to get the offset of the current image into Your > memory > Image Processing > > lseek -LONG_MAX SEEK_END > munmap > close I've been trying this but there are a few things that don't work, or at least not as I expected it to work. Opening the board(/dev/ic0dma) and configuring it works without a problem as far as I can tell. Starting the camera with lseek +LONG_MAX works, but then I run into some problems. My test program opens the device, reads configuration from the FG, reads the .cam file, sets the configuration, and then gets several camera variables (width, height, decimation etc). Finally I set the FD to nonblocking. After configuring the FG board I setup my mmap buffer. I reserve 4 * PAGEDSIZE bytes, giving me space for 4 frames. If I'm correct this procedure more or less mimics test_itifg. First of all, select() does not seem to block until an image is ready, it returns immediately with return code 1, i.e. one FD would be ready for reading. When I run `lseek(cam->fd, 0, SEEK_CUR);` after that however, it returns 0, implying that nothing happend. Also the image I read out is the same every time lseek returns 0. Second, I do not exactly know what to do with the lseek return value. In my test program I ran select() followed by lseek() several times, the first times lseek returned 0 and the images were identical. After a while, there appeared to be a new image as lseek returned exactly PAGEDSIZE, and the image I read out was different. However, I did not change my mmap'ed pointer at all, it was still pointing to the beginning of the mmap buffer. Another thing that I noticed is that lseek does not wrap, the values it returns can be anything, sometimes several times the mmap size. The questions I have are: - Do you know why select() does not block? - What does lseek SEEK_CUR return, and what should I do with that? Do I need to adjust a pointer to the mmap'ed area myself, or is the mmap window modified by the driver? - I noticed in test_itifg that you lseek with `int whence` set to SEEK_END with offset 0 several times as well. What does this do exactly, and do I need that? - If I'm correct the data beyond the frame itself (after RAWSIZE) holds a iti_info_t struct. However, although I can read out the timestamp, I cannot read out the frames captures or lost, do you know how to do this correctly? The methods I use is (after SEEK_CUR): buf->info = (iti_info_t *)((char *)buf->data + cam->rawsize); struct timeval timestamp; // copying unnecessary, I know memcpy (×tamp, &(buf->info->acq.timestamp), sizeof(struct timeval)); after this, I would assume that buf->info->acq.captured and buf->info- >acq.lost would hold the captured and lost images, however their values are 0. (int) timestamp.tv_sec does appear to work however, so I assume I'm reading the right part of memory. How can I get the frames captured and/or lost? >> - What do the various parameters in the .cam files mean? > > You setup the board for a specific camera. The parameters are > different > for the different boards and different cameras. There are some more > exapmles into the conffiles dir and some of the parameters are self > explaining. If You are unsure ask me for the behavior of a a specific > switch. I would like to set the camera runmethod (if I'm correct this is set with 'EXSYNC_MODE = EXSYNC_FREE_RUNNING'), what modes are available? Also I would like to set the framerate and exposure time independently. There are multiple timings however, and I do not know which times the various parameters control. I noticed that EXT_SYNC_TIME appears to be rejected by test_itifg, when I uncomment the line '#EXT_SYNC_TIME = 572.000 # us (140ns ... 572us)', test_itifg tells me 'parse error line 24: EXT_SYNC_TIME = (null)', when setting it to 'EXT_SYNC_TIME = 0.572000' I get a segfault. Furthermore, I noticed that EXT_SYNC_PERIOD_TIME must be longer than PRI_MIDPOINT_DELAY, is it correct that the first controls the framerate (period) and the other the exposure time or something? In short: what do the timings mean? I'm using the PCDIG board in combination with a dalsa CA-D6 camera. > There can be various operation modes for one camera. One of the most > important choise it weather the camera makes images from itself (free- > running mode) or it is controlled by the board (trigger and/or > exposure > time). Then the exs device gets involved. With respect to the above questions, how/when is the exs device relevant? Also, I noticed a typo/error in pcdigIface.c. It statically fills a struct for setting a board to default config, which goes like: 96 /* next both values are adjusted by the fpga download!!! */ 97 8, /* most used pixel size */ 98 PCD_1CHAN_L2R, /* standard geometry */ 99 PCD_DISABLE /* non-interlaced is standard */ However, the struct is declared in itifgExt.h as: 714 int geometry; /* this we need to load the source scatter gather right */ 715 int pixelsize; /* this value we need to load the lookup tables right */ 716 int interlaced; /* we have to collect even and odd frame for one image */ 717 }; suggestiong that line 97 and 98 are swapped in pcdigIface.c Another thing that I found was that test_itifg does not accept mmap'ed mode, after calling 1596 if (ioctl (devdesc, GIOC_SET_CAMCNF, &camcnf) < 0) it says 1602 if (args->other[args->other_i]) 1603 Clean_Up (EXIT_SUCCESS); which quites mmap mode immediately without capturing frames. Is that correct? Again thanks for your time and help, Tim |
|
From: <M....@go...> - 2008-03-19 16:13:47
|
Hello Tim,
sorry, You don't have overseen any documentation, because there is no
documentation,
that is 'up-to-date' :-(
iti...@li... wrote on 18.03.2008 15:34:05:
> Hi again Mattias,
>
> I'm trying to get a camera (dalsa cad6 256x256) to run with the itifg
> driver. It works with the test_itifg routine supplied with the driver
> after you helped my figure out how to tell the driver to use a
> specific .exo file (thanks again). I'm now trying to write my own
> routine which reads out the camera such that I can incorporate it in
> my program. There are however a few things that I have some difficulty
> finding out, and I hoped that you could help me. I've looked through
> the documentation supplied with itifg 8.4.0 (which is the version I'm
> using), but this seems rather old, and browsing through the changelog
> is unclear at best.
>
> The things I'm trying to find out are:
> - What is the normal mode of operation to get a camera to run,
> specifically the (fast) mmap mode? What ioctl calls are needed in what
> order?
There are two basic operation modes:
1. The 'grab' mode
You only want to have one image at a time and You want to have the
most recent image. You don't care, if there are images lost, when
You process one.
Often used for live video and quick processing.
call sequence:
open
mmap ringbuffer size (min 2 images)
ioctl GET_CAMCNF
modify via iti_read_config
ioctl SET_CAMCNF
ioctl GET_RAW|PAGED_SIZE
lseek +LONG_MAX SEEK_END
loop:
wait for image (poll/select/signal)
lseek 0 SEEK_CUR to get the offset of the current image into Your
memory
Image Processing
lseek -LONG_MAX SEEK_END
munmap
close
2. The 'snap' mode
You are interested in EVERY image you can get. No image should be
lost. The number of images is limited by the main memory You have.
same call sequence except:
no mmap/munmap
lseek number_of_bytes_to_read SEEK_END
into the loop:
only read - it is blockin till a new image is there
When working in grab mode - mmap makes sense, in snap mode - read is
the better solution.
> - What is the difference between the /dev/ic0??? descriptors? when
> are they used?
There are cfg, acq, dma, exs, lut, iop.
cfg - FPGA download
acq - camera to board acquisition
dma - on-board memory to host memory transfer
exs - trigger/shutter/exposure handling
lut - on-board lookup table handling
iop - on-board i/o ports
For common image acqustion usage, You never use acq directly! You open
dma instead and if acq isn't open at this moment, dma couples acq
internally.
> - How do I start and stop the framegrabber? The changelog mentions
> lseek() ('ioctls STRT/STOP replaced by one lseek interface'), where
> and how can I use that with itifg?
to start an image acquisition, You have to do
grab mode: lseek +LONG_MAX SEEK_END
snap mode: lseek number_of_images * number_of_bytes_per_image SEEK_END
to stop acqusition, you alwas do
lseek -LONG_MAX SEEK_END
For the grab mode you need some additional calls lseek SEEK_CUR/SEEK_END
to get the offset of the most recent image/to confirm this image
> - What do the various parameters in the .cam files mean?
You setup the board for a specific camera. The parameters are different
for the different boards and different cameras. There are some more
exapmles into the conffiles dir and some of the parameters are self
explaining. If You are unsure ask me for the behavior of a a specific
switch.
> - Are all camera specific settings in the .cam files or do I need to
> do some things myself? I.e.: do certain cameras require a different
> mode of operation, or is this all the same for all cameras?
There can be various operation modes for one camera. One of the most
important choise it weather the camera makes images from itself (free-
running mode) or it is controlled by the board (trigger and/or exposure
time). Then the exs device gets involved.
> And more specifically:
> - How do I find out the module that I need to use with
> iti_read_config() (fourth argument)? I currently use 48, but I don't
> know why (this is what itifg_test uses).
There is a function iti_parse_info, that reads /proc/itifg8 and fills
You a 'setup' structure, You can the it from that. Other approach:
You tell me Your board an I tell You the number.
> If I overlooked certain documentation, please tell me. Also, if these
> questions are too general for the itifg driver, let me know. However I
> could not find the answer to these questions (easily). An alternative
> would be to take your test code and cut out the parts I need, but
> that's a rather hacky approach in which case I wouldn't fully
> understand what I would be doing.
>
> Thanks in advance,
>
> Tim van Werkhoven
>
Sorry to be short at some points, the time...
Happy Easter! (I'm back next Tuesday)
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: Tim v. W. <T.I...@ph...> - 2008-03-18 14:34:10
|
Hi again Mattias,
I'm trying to get a camera (dalsa cad6 256x256) to run with the itifg
driver. It works with the test_itifg routine supplied with the driver
after you helped my figure out how to tell the driver to use a
specific .exo file (thanks again). I'm now trying to write my own
routine which reads out the camera such that I can incorporate it in
my program. There are however a few things that I have some difficulty
finding out, and I hoped that you could help me. I've looked through
the documentation supplied with itifg 8.4.0 (which is the version I'm
using), but this seems rather old, and browsing through the changelog
is unclear at best.
The things I'm trying to find out are:
- What is the normal mode of operation to get a camera to run,
specifically the (fast) mmap mode? What ioctl calls are needed in what
order?
- What is the difference between the /dev/ic0??? descriptors? when
are they used?
- How do I start and stop the framegrabber? The changelog mentions
lseek() ('ioctls STRT/STOP replaced by one lseek interface'), where
and how can I use that with itifg?
- What do the various parameters in the .cam files mean?
- Are all camera specific settings in the .cam files or do I need to
do some things myself? I.e.: do certain cameras require a different
mode of operation, or is this all the same for all cameras?
And more specifically:
- How do I find out the module that I need to use with
iti_read_config() (fourth argument)? I currently use 48, but I don't
know why (this is what itifg_test uses).
If I overlooked certain documentation, please tell me. Also, if these
questions are too general for the itifg driver, let me know. However I
could not find the answer to these questions (easily). An alternative
would be to take your test code and cut out the parts I need, but
that's a rather hacky approach in which case I wouldn't fully
understand what I would be doing.
Thanks in advance,
Tim van Werkhoven
|
|
From: <M....@go...> - 2008-03-04 15:52:38
|
Great!
I schedule it for the next release.
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: Fabien S. <fsp...@ir...> - 2008-03-04 15:39:10
|
Thanks a lot Matthias,
It works fine now.
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> I think, I have found it:
>
> the access to dma1stfld/dma2ndfld fails, they are allocated at the end of
> icpciIface.c
>
> if (!brdif->brd.i->dma1stfld)
> {
> brdif->brd.i->dma1stfld =
> (off_t*)iti_malloc (brdif->brd.i->osp, CR_FCNT_MAX * sizeof(off_t),
> "dma 1st");
> if (!brdif->brd.i->dma1stfld) return -ENOMEM;
> iti_memset (brdif->brd.i->dma1stfld, 0, CR_FCNT_MAX * sizeof(off_t));
> }
> if (!brdif->brd.i->dma2ndfld)
> {
> brdif->brd.i->dma2ndfld =
> (off_t*)iti_malloc (brdif->brd.i->osp, CR_FCNT_MAX * sizeof(off_t),
> "dma 2nd");
> if (!brdif->brd.i->dma2ndfld) return -ENOMEM;
> iti_memset (brdif->brd.i->dma2ndfld, 0, CR_FCNT_MAX * sizeof(off_t));
> }
>
> CR_FCNT_MAX is defined in icpciReg.h as
>
> #define CR_FCNT_MAX CR_FCNT_MASK >> CR_FCNT_SHIFT
>
> For the allocation size we get a line
>
> CR_FCNT_MASK >> CR_FCNT_SHIFT * sizeof(off_t)
>
> which is wrong, because the '*' binds tighter than '>>'
>
> Please change the definition of CR_FCNT_MAX to:
>
> #define CR_FCNT_MAX (CR_FCNT_MASK >> CR_FCNT_SHIFT)
>
> Good Luck!
>
> matthias
>
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
>
>
> Fabien Spindler
> <fspindle@irisa.f
> r> To
> M....@go...
> 04.03.2008 14:48 cc
> Fabien Spindler
> <Fab...@ir...>,
> iti...@li...
> Subject
> Re: [Itifg-tech] itifg-8.4.0-0
> released
>
>
>
>
>
>
>
>
>
>
> I have just added an other printf like:
>
> for (frame = 0; frame < frames; frame++)
> {
> ITI_PRINT1(brd->i->osp, " frame: %d\n", frame);
> iti_printd (brd->i->osp, "D\n");
>
> dmesg gives
>
> itifg8[D0]: > iti_intr: 0x20400 time: 60046us
> itifg8[D0]: -> acq_intr: 0x0
> itifg8[D0]: opmode: IDLE
> itifg8[D0]: -> dma_intr
> itifg8[D0]: opmode: IDLE
> itifg8[D0]: iti_intr: not all irqs recognized.
> itifg8[D0]: (0x400)!
> itifg8[D0]: < iti_intr
> itifg8[D0]: > iti_fill_info
> itifg8[D0]: inf mbuf size 160
> itifg8[D0]: inf mbuf k-alloc 0xc6ec8f00
> itifg8[D0]: inf sbuf size 160
> itifg8[D0]: inf sbuf k-alloc 0xc6ec8c00
> itifg8[D0]: inf fbuf size 320
> itifg8[D0]: inf fbuf k-alloc 0xdcdbce00
> itifg8[D0]: inf obuf size 160
> itifg8[D0]: inf obuf k-alloc 0xc3b89b40
> itifg8[D0]: inf fpga size 40
> itifg8[D0]: inf fpga k-alloc 0xd635f1c0
> itifg8[D0]: inf fpga k-free 0xd635f1c0
> itifg8[D0]: inf mbuf k-free 0xc6ec8f00
> itifg8[D0]: inf sbuf k-free 0xc6ec8c00
> itifg8[D0]: inf fbuf k-free 0xdcdbce00
> itifg8[D0]: inf obuf k-free 0xc3b89b40
> itifg8[D0]: < iti_fill_info
> itifg8[D0]: > iti_fill_info
> itifg8[D0]: inf mbuf size 160
> itifg8[D0]: inf mbuf k-alloc 0xc3b89b40
> itifg8[D0]: inf sbuf size 160
> itifg8[D0]: inf sbuf k-alloc 0xc6ec8b40
> itifg8[D0]: inf fbuf size 320
> itifg8[D0]: inf fbuf k-alloc 0xda8da400
> itifg8[D0]: inf obuf size 160
> itifg8[D0]: inf obuf k-alloc 0xc6ec8240
> itifg8[D0]: inf fpga size 40
> itifg8[D0]: inf fpga k-alloc 0xd635f1c0
> itifg8[D0]: inf fpga k-free 0xd635f1c0
> itifg8[D0]: inf mbuf k-free 0xc3b89b40
> itifg8[D0]: inf sbuf k-free 0xc6ec8b40
> itifg8[D0]: inf fbuf k-free 0xda8da400
> itifg8[D0]: inf obuf k-free 0xc6ec8240
> itifg8[D0]: < iti_fill_info
> itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
> itifg8[D0]: -> dma_open
> itifg8[D0]: <- dma_open
> itifg8[D0]: > iti_irq_enable
> itifg8[D0]: irq_enable end (40000)
> itifg8[D0]: < iti_irq_enable
> itifg8[D0]: op assume: IDLE
> itifg8[D0]: op accept: OPEN
> itifg8[D0]: opmode: IDLE
> itifg8[D0]: ACQ ist linked
> itifg8[D0]: -> acq_open
> itifg8[D0]: <- acq_open
> itifg8[D0]: > iti_irq_enable
> itifg8[D0]: < iti_irq_enable
> itifg8[D0]: op assume: IDLE
> itifg8[D0]: op accept: OPEN
> itifg8[D0]: rlock:1 - wlock:1
> itifg8[D0]: < iti_open: ok
> itifg8[D0]: > iti_ioctl: GET_CAMCNF
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_CAMCNF
> itifg8[D0]: outparam NULL
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: > amcmp_config
> itifg8[D0]: 1
> itifg8[D0]: 2
> itifg8[D0]: 3
> itifg8[D0]: 4
> itifg8[D0]: 5
> itifg8[D0]: 6
> itifg8[D0]: 7
> itifg8[D0]: 8
> itifg8[D0]: 9
> itifg8[D0]: 10
> itifg8[D0]: 11
> itifg8[D0]: 12
> itifg8[D0]: 13
> itifg8[D0]: 14
> itifg8[D0]: 15
> itifg8[D0]: 16
> itifg8[D0]: 17
> itifg8[D0]: 18
> itifg8[D0]: 20
> itifg8[D0]: 21
> itifg8[D0]: 22
> itifg8[D0]: 23
> itifg8[D0]: modid 0xe038
> itifg8[D0]: mxctl 0xe004
> itifg8[D0]: scl 0xe03d
> itifg8[D0]: sda 0xe001
> itifg8[D0]: nptrig 0xe028
> itifg8[D0]: npswtrig 0xe008
> itifg8[D0]: bt829a : status 0x20
> itifg8[D0]: bt829a : iform 0x58
> itifg8[D0]: bt829a : tdec 0x00
> itifg8[D0]: bt829a : crop 0x23
> itifg8[D0]: bt829a : vdly_lo 0x1e
> itifg8[D0]: bt829a : vact_lo 0x40
> itifg8[D0]: bt829a : hdly_lo 0xa0
> itifg8[D0]: bt829a : hact_lo 0x00
> itifg8[D0]: bt829a : hscal_hi 0x03
> itifg8[D0]: bt829a : hscal_lo 0x3c
> itifg8[D0]: > iti_intr: 0x20400 time: 94048us
> itifg8[D0]: -> acq_intr: 0x0
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: -> dma_intr
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: iti_intr: not all irqs recognized.
> itifg8[D0]: (0x400)!
> itifg8[D0]: < iti_intr
> itifg8[D0]: bt829a : bright 0x10
> itifg8[D0]: bt829a : control 0x34
> itifg8[D0]: bt829a : con_lo 0x3d
> itifg8[D0]: bt829a : sat_u_lo 0xfe
> itifg8[D0]: bt829a : sat_v_lo 0xb4
> itifg8[D0]: bt829a : hue 0x00
> itifg8[D0]: bt829a : scloop 0x40
> itifg8[D0]: bt829a : reserved 0xcf
> itifg8[D0]: bt829a : oform 0x86
> itifg8[D0]: bt829a : vscale_hi 0x60
> itifg8[D0]: bt829a : vscale_lo 0x00
> itifg8[D0]: bt829a : reserved 0x01
> itifg8[D0]: bt829a : reserved 0x00
> itifg8[D0]: bt829a : idcode 0xe8
> itifg8[D0]: bt829a : adly 0x7f
> itifg8[D0]: bt829a : bdly 0x72
> itifg8[D0]: bt829a : adc 0x80
> itifg8[D0]: bt829a : vtc 0x40
> itifg8[D0]: bt829a : reserved 0xc0
> itifg8[D0]: bt829a : reserved 0x00
> itifg8[D0]: bt829a : reserved 0x7f
> itifg8[D0]: bt829a : sreset 0x70
> itifg8[D0]: < amcmp_config
> itifg8[D0]: -> acq_startup
> itifg8[D0]: -> acq_fmt_init
> itifg8[D0]: width: 768, height: 576
> itifg8[D0]: htaps: 1, vtaps : 1
> itifg8[D0]: hdec : 0, vdec : 0
> itifg8[D0]: bpp: 16
> itifg8[D0]: ilace: TRUE
> itifg8[D0]: line size: 1536
> itifg8[D0]: frame size: 884736
> itifg8[D0]: <- acq_fmt_init
> itifg8[D0]: <- acq_startup
> itifg8[D0]: -> dma_startup
> itifg8[D0]: -> dma_fmt_init
> itifg8[D0]: frame size: 888832
> itifg8[D0]: trail size: 4096
> itifg8[D0]: <- dma_fmt_init
> itifg8[D0]: <- dma_startup
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_NORM_TO8
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: -> acq_fmt_init
> itifg8[D0]: width: 768, height: 576
> itifg8[D0]: htaps: 1, vtaps : 1
> itifg8[D0]: hdec : 0, vdec : 0
> itifg8[D0]: bpp: 8
> itifg8[D0]: ilace: TRUE
> itifg8[D0]: line size: 768
> itifg8[D0]: frame size: 442368
> itifg8[D0]: <- acq_fmt_init
> itifg8[D0]: -> dma_fmt_init
> itifg8[D0]: frame size: 446464
> itifg8[D0]: trail size: 4096
> itifg8[D0]: <- dma_fmt_init
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_HDEC
> itifg8[D0]: outparam NULL
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: horiz. decimation: 2
> itifg8[D0]: -> acq_fmt_init
> itifg8[D0]: width: 384, height: 576
> itifg8[D0]: htaps: 1, vtaps : 1
> itifg8[D0]: hdec : 1, vdec : 0
> itifg8[D0]: bpp: 8
> itifg8[D0]: ilace: TRUE
> itifg8[D0]: line size: 384
> itifg8[D0]: frame size: 221184
> itifg8[D0]: <- acq_fmt_init
> itifg8[D0]: -> dma_fmt_init
> itifg8[D0]: frame size: 225280
> itifg8[D0]: trail size: 4096
> itifg8[D0]: <- dma_fmt_init
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_VDEC
> itifg8[D0]: outparam NULL
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: vert. decimation: 2
> itifg8[D0]: -> acq_fmt_init
> itifg8[D0]: width: 384, height: 288
> itifg8[D0]: htaps: 1, vtaps : 1
> itifg8[D0]: hdec : 1, vdec : 1
> itifg8[D0]: bpp: 8
> itifg8[D0]: ilace: TRUE
> itifg8[D0]: line size: 384
> itifg8[D0]: frame size: 110592
> itifg8[D0]: <- acq_fmt_init
> itifg8[D0]: -> dma_fmt_init
> itifg8[D0]: frame size: 114688
> itifg8[D0]: trail size: 4096
> itifg8[D0]: <- dma_fmt_init
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_CAMERA
> itifg8[D0]: outparam NULL
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: camera: 0
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: SET_TIMEOUT
> itifg8[D0]: outparam NULL
> itifg8[D0]: timeout: 1000ms (HZ=1000)
> itifg8[D0]: expire: 1250
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: GET_WIDTH
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: GET_HEIGHT
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: GET_DEPTH
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: GET_RAWSIZE
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
> itifg8[D0]: inparam NULL
> itifg8[D0]: < iti_ioctl: ok
> itifg8[D0]: > iti_mmap: 4194304 byte(s)
> itifg8[D0]: -> dma_mmap: 1024 pages
> itifg8[D0]: buf init: 4194304 (SDMA)
> itifg8[D0]: dma-area alloc 0xe4501000
> itifg8[D0]: buf alloc: 0xe4501000
> itifg8[D0]: area not locked, do it.
> itifg8[D0]: > iti_intr: 0x20400 time: 127419us
> itifg8[D0]: -> acq_intr: 0x0
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: -> dma_intr
> itifg8[D0]: opmode: OPEN
> itifg8[D0]: iti_intr: not all irqs recognized.
> itifg8[D0]: (0x400)!
> itifg8[D0]: < iti_intr
> itifg8[D0]: v:0xe4501000->b:0x101da000
> itifg8[D0]: v:0xe4701000->b:0x1073c000
> itifg8[D0]: v:0xe4900000->b:0x109cb000
> itifg8[D0]: <- dma_mmap
> itifg8[D0]: < iti_mmap: 0xe4501000
> itifg8[DX]: t:0xb7f66000 4194304
> itifg8[DX]: f:0xe4900000
> itifg8[DX]: t:0xb7d66000 2097152
> itifg8[DX]: f:0xe4700000
> itifg8[DX]: t:0xb7b67000 4096
> itifg8[DX]: f:0xe4501000
> itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
> itifg8[D0]: -> dma_lseek: APPEND.
> itifg8[D0]: op assume: OPEN
> itifg8[D0]: op accept: WORK
> itifg8[D0]: buf reset: 0by (0it)
> itifg8[D0]: buf adjust: 0by (0it)
> itifg8[D0]: buf asize: 4128768by (36it)
> itifg8[D0]: buf isize: 114688by
> itifg8[D0]: 27 norm pages(s).
> itifg8[D0]: 27 last pages(s).
> itifg8[D0]: buf want: 114688by (1it)
> itifg8[D0]: <- dma_lseek
> itifg8[D0]: -> acq_lseek: APPEND.
> itifg8[D0]: op assume: OPEN
> itifg8[D0]: op accept: WORK
> itifg8[D0]: buf reset: 0by (0it)
> itifg8[D0]: buf adjust: 0by (0it)
> itifg8[D0]: buf isize: 110592by
> itifg8[D0]: frame size 110592
> itifg8[D0]: -> 1 frame(s).
> itifg8[D0]: block size 0 (whole frames)
> itifg8[D0]: -> 1 block(s).
> itifg8[D0]: => icp_src_init
> itifg8[D0]: int for append mode
> itifg8[D0]: base addr 0x0
> itifg8[D0]: line_size 384
> itifg8[D0]: frame_size 110592
> itifg8[D0]: A
> itifg8[D0]: B
> itifg8[D0]: C
> itifg8[D0]: frame: 0
> itifg8[D0]: D
> BUG: unable to handle kernel NULL pointer dereference at virtual address
> 00000010
> printing eip: e0ec3e42 *pde = 06772067 *pte = 00000000
> Oops: 0002 [#5] SMP
> Modules linked in: itifg8(U) nvidia(P)(U) nfs lockd nfs_acl sunrpc
> rfcomm l2cap bluetooth autofs4 ipv6 dm_multipath dm_mod snd_intel8x0
> snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event
> snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer
> firewire_ohci snd firewire_core e1000 button soundcore iTCO_wdt
> crc_itu_t parport_pc iTCO_vendor_support parport i2c_i801 serio_raw
> snd_page_alloc i2c_core joydev dcdbas floppy sr_mod sg cdrom ata_piix
> ata_generic libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd
> ehci_hcd
> CPU: 0
> EIP: 0060:[<e0ec3e42>] Tainted: P D VLI
> EFLAGS: 00210246 (2.6.23.15-137.fabien.fc8 #1)
> EIP is at icp_src_init+0x1b2/0x310 [itifg8]
> eax: 00000000 ebx: cb3f40dc ecx: 00000010 edx: 00000010
> esi: 00000000 edi: 00000000 ebp: d881cf14 esp: dda75ef8
> ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
> Process test_itifg (pid: 14280, ti=dda75000 task=c64f2610 task.ti=dda75000)
> Stack: dea98000 e0eea714 dea98000 e0eea707 00000000 01a98000 00000001
> e0ec3c90
> d881cf14 d881cf38 d881cf00 e0ebeada 00000000 00000001 e0ebfa2e
> 0001b000
> 00000400 000100f8 0001c000 00010400 00200000 00000000 00000000
> cb3f4000
> Call Trace:
> [<e0ec3c90>] icp_src_init+0x0/0x310 [itifg8]
> [<e0ebeada>] acq_lseek+0x42a/0x620 [itifg8]
> [<e0ebfa2e>] dma_lseek+0x8e/0x2f0 [itifg8]
> [<e0ebbd9f>] iti_lseek+0x14f/0x230 [itifg8]
> [<e0ee42d0>] iti_os_llseek+0x0/0x20 [itifg8]
> [<e0ee42e8>] iti_os_llseek+0x18/0x20 [itifg8]
> [<c0480cd6>] vfs_llseek+0x35/0x39
> [<c0481d2d>] sys_lseek+0x3c/0x66
> [<c040518a>] syscall_call+0x7/0xb
> =======================
> Code: 02 00 68 14 a7 ee e0 8b 03 8b 90 10 01 00 00 52 e8 c4 09 02 00 8b
> 13 89 f1 8b 42 2c 8b 52 30 01 c1 89 f8 0f af 45 20 03 44 24 30 <89> 04
> 32 89 01 68 17 a7 ee e0 8b 03 8b 80 10 01 00 00 50 e8 96
> EIP: [<e0ec3e42>] icp_src_init+0x1b2/0x310 [itifg8] SS:ESP 0068:dda75ef8
> itifg8[D0]: > iti_close: flags 0x1402
> itifg8[D0]: rlock:0 - wlock:0
> itifg8[D0]: del timer
> itifg8[D0]: > iti_irq_disable
> itifg8[D0]: < iti_irq_disable
> itifg8[D0]: op assume: XXXX
> itifg8[D0]: op accept: IDLE
> itifg8[D0]: -> acq_close
> itifg8[D0]: buf reset: 0by (0it)
> itifg8[D0]: buf adjust: 0by (0it)
> itifg8[D0]: <- acq_close
> itifg8[D0]: del timer
> itifg8[D0]: > iti_irq_disable
> itifg8[D0]: < iti_irq_disable
> itifg8[D0]: op assume: XXXX
> itifg8[D0]: op accept: IDLE
> itifg8[D0]: -> dma_close
> itifg8[D0]: dma stop
> itifg8[D0]: -> dma_munmap
> itifg8[D0]: area is locked, unlock it.
> itifg8[D0]: buf free: 0xe4501000
> itifg8[D0]: dma-area free 0xe4501000
> itifg8[D0]: buf fini
> itifg8[D0]: <- dma_munmap
> itifg8[D0]: <- dma_close
> itifg8[D0]: < iti_close: ok
>
>
> Fabien
> M....@go... a écrit :
>> Hello Fabien,
>>
>> the crash is somehere in src/board/icpcoIface.c:icp_src_init().
>> I have added some debug output, that we can see more:
>>
>> static int
>> icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
>> off_t base, bool append)
>> {
>> int error;
>>
>> int frame;
>>
>> ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
>>
>> if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
>> brd->i->append = append;
>>
>> ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
>> ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
>> ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
>>
>> /* set source values */
>> iti_printd (brd->i->osp, "A\n");
>> if ((error = cr_set_pitch (brd->i, fmt->line_size)))
>> {
>> iti_error (error, "cr_set_pitch");
>> return -EIO;
>> }
>> iti_printd (brd->i->osp, "B\n");
>> if ((error = cr_set_aoix (brd->i, fmt->line_size)))
>> {
>> iti_error (error, "cr_set_aoix");
>> return -EIO;
>> }
>>
>> iti_printd (brd->i->osp, "C\n");
>> for (frame = 0; frame < frames; frame++)
>> {
>> iti_printd (brd->i->osp, "D\n");
>> brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
>> base + frame * fmt->frame_size;
>> iti_printd (brd->i->osp, "E\n");
>>
>> if (fmt->ilace && !fmt->vdec)
>> {
>> iti_printd (brd->i->osp, "F\n");
>> if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
>> {
>> iti_error (error, "cr_set_bmilace");
>> return -EIO;
>> }
>> iti_printd (brd->i->osp, "G\n");
>> brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
>> iti_printd (brd->i->osp, "H\n");
>> }
>> else
>> {
>> iti_printd (brd->i->osp, "I\n");
>> if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
>> {
>> iti_error (error, "cr_set_bmilace");
>> return -EIO;
>> }
>> iti_printd (brd->i->osp, "J\n");
>> }
>>
>> iti_printd (brd->i->osp, "K\n");
>> /* for this only use one on-board memory frame */
>> if (!append) break;
>> }
>>
>> iti_printd (brd->i->osp, "L\n");
>> cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
>> iti_printd (brd->i->osp, "M\n");
>> cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
>> iti_printd (brd->i->osp, "N\n");
>>
>> ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
>> return OK;
>> }
>>
>> Please recompile and run again.
>>
>> matthias
>> _________________________________________________
>> Matthias Stein,
>> GOM Gesellschaft fuer Optische Messtechnik mbH,
>> Mittelweg 7-8, 38106 Braunschweig, Germany
>> E-mail: M....@go..., Internet: http://www.gom.com
>> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
>> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
>> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>>
>>
>> This e-mail is confidential. If you have received it in error, you are on
>> notice of its status.
>> Please notify us immediately by reply e-mail and delete this message from
>> your system.
>> Please do not copy it or use it for any purposes, or disclose its
> contents
>> to any other person;
>> to do so could be a breach of confidence.
>> Thank you for your co-operation.
>>
>>
>
>
> --
> Fabien Spindler, Equipe Lagadic, Irisa - Inria
> Campus universitaire de Beaulieu 35042 Rennes cedex France
> Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
> E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|
|
From: <M....@go...> - 2008-03-04 15:18:18
|
Hello Fabien,
I think, I have found it:
the access to dma1stfld/dma2ndfld fails, they are allocated at the end of
icpciIface.c
if (!brdif->brd.i->dma1stfld)
{
brdif->brd.i->dma1stfld =
(off_t*)iti_malloc (brdif->brd.i->osp, CR_FCNT_MAX * sizeof(off_t),
"dma 1st");
if (!brdif->brd.i->dma1stfld) return -ENOMEM;
iti_memset (brdif->brd.i->dma1stfld, 0, CR_FCNT_MAX * sizeof(off_t));
}
if (!brdif->brd.i->dma2ndfld)
{
brdif->brd.i->dma2ndfld =
(off_t*)iti_malloc (brdif->brd.i->osp, CR_FCNT_MAX * sizeof(off_t),
"dma 2nd");
if (!brdif->brd.i->dma2ndfld) return -ENOMEM;
iti_memset (brdif->brd.i->dma2ndfld, 0, CR_FCNT_MAX * sizeof(off_t));
}
CR_FCNT_MAX is defined in icpciReg.h as
#define CR_FCNT_MAX CR_FCNT_MASK >> CR_FCNT_SHIFT
For the allocation size we get a line
CR_FCNT_MASK >> CR_FCNT_SHIFT * sizeof(off_t)
which is wrong, because the '*' binds tighter than '>>'
Please change the definition of CR_FCNT_MAX to:
#define CR_FCNT_MAX (CR_FCNT_MASK >> CR_FCNT_SHIFT)
Good Luck!
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
Fabien Spindler
<fspindle@irisa.f
r> To
M....@go...
04.03.2008 14:48 cc
Fabien Spindler
<Fab...@ir...>,
iti...@li...
Subject
Re: [Itifg-tech] itifg-8.4.0-0
released
I have just added an other printf like:
for (frame = 0; frame < frames; frame++)
{
ITI_PRINT1(brd->i->osp, " frame: %d\n", frame);
iti_printd (brd->i->osp, "D\n");
dmesg gives
itifg8[D0]: > iti_intr: 0x20400 time: 60046us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: IDLE
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: IDLE
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc6ec8f00
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc6ec8c00
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xdcdbce00
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc3b89b40
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd635f1c0
itifg8[D0]: inf fpga k-free 0xd635f1c0
itifg8[D0]: inf mbuf k-free 0xc6ec8f00
itifg8[D0]: inf sbuf k-free 0xc6ec8c00
itifg8[D0]: inf fbuf k-free 0xdcdbce00
itifg8[D0]: inf obuf k-free 0xc3b89b40
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc3b89b40
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc6ec8b40
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xda8da400
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc6ec8240
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd635f1c0
itifg8[D0]: inf fpga k-free 0xd635f1c0
itifg8[D0]: inf mbuf k-free 0xc3b89b40
itifg8[D0]: inf sbuf k-free 0xc6ec8b40
itifg8[D0]: inf fbuf k-free 0xda8da400
itifg8[D0]: inf obuf k-free 0xc6ec8240
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
itifg8[D0]: -> dma_open
itifg8[D0]: <- dma_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: irq_enable end (40000)
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: opmode: IDLE
itifg8[D0]: ACQ ist linked
itifg8[D0]: -> acq_open
itifg8[D0]: <- acq_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: rlock:1 - wlock:1
itifg8[D0]: < iti_open: ok
itifg8[D0]: > iti_ioctl: GET_CAMCNF
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMCNF
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: > amcmp_config
itifg8[D0]: 1
itifg8[D0]: 2
itifg8[D0]: 3
itifg8[D0]: 4
itifg8[D0]: 5
itifg8[D0]: 6
itifg8[D0]: 7
itifg8[D0]: 8
itifg8[D0]: 9
itifg8[D0]: 10
itifg8[D0]: 11
itifg8[D0]: 12
itifg8[D0]: 13
itifg8[D0]: 14
itifg8[D0]: 15
itifg8[D0]: 16
itifg8[D0]: 17
itifg8[D0]: 18
itifg8[D0]: 20
itifg8[D0]: 21
itifg8[D0]: 22
itifg8[D0]: 23
itifg8[D0]: modid 0xe038
itifg8[D0]: mxctl 0xe004
itifg8[D0]: scl 0xe03d
itifg8[D0]: sda 0xe001
itifg8[D0]: nptrig 0xe028
itifg8[D0]: npswtrig 0xe008
itifg8[D0]: bt829a : status 0x20
itifg8[D0]: bt829a : iform 0x58
itifg8[D0]: bt829a : tdec 0x00
itifg8[D0]: bt829a : crop 0x23
itifg8[D0]: bt829a : vdly_lo 0x1e
itifg8[D0]: bt829a : vact_lo 0x40
itifg8[D0]: bt829a : hdly_lo 0xa0
itifg8[D0]: bt829a : hact_lo 0x00
itifg8[D0]: bt829a : hscal_hi 0x03
itifg8[D0]: bt829a : hscal_lo 0x3c
itifg8[D0]: > iti_intr: 0x20400 time: 94048us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: bt829a : bright 0x10
itifg8[D0]: bt829a : control 0x34
itifg8[D0]: bt829a : con_lo 0x3d
itifg8[D0]: bt829a : sat_u_lo 0xfe
itifg8[D0]: bt829a : sat_v_lo 0xb4
itifg8[D0]: bt829a : hue 0x00
itifg8[D0]: bt829a : scloop 0x40
itifg8[D0]: bt829a : reserved 0xcf
itifg8[D0]: bt829a : oform 0x86
itifg8[D0]: bt829a : vscale_hi 0x60
itifg8[D0]: bt829a : vscale_lo 0x00
itifg8[D0]: bt829a : reserved 0x01
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : idcode 0xe8
itifg8[D0]: bt829a : adly 0x7f
itifg8[D0]: bt829a : bdly 0x72
itifg8[D0]: bt829a : adc 0x80
itifg8[D0]: bt829a : vtc 0x40
itifg8[D0]: bt829a : reserved 0xc0
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : reserved 0x7f
itifg8[D0]: bt829a : sreset 0x70
itifg8[D0]: < amcmp_config
itifg8[D0]: -> acq_startup
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 16
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 1536
itifg8[D0]: frame size: 884736
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: <- acq_startup
itifg8[D0]: -> dma_startup
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 888832
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: <- dma_startup
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_NORM_TO8
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 768
itifg8[D0]: frame size: 442368
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 446464
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_HDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: horiz. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 221184
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 225280
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_VDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: vert. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 288
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 1
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 110592
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 114688
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMERA
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: camera: 0
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_TIMEOUT
itifg8[D0]: outparam NULL
itifg8[D0]: timeout: 1000ms (HZ=1000)
itifg8[D0]: expire: 1250
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_WIDTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_HEIGHT
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_DEPTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_RAWSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_mmap: 4194304 byte(s)
itifg8[D0]: -> dma_mmap: 1024 pages
itifg8[D0]: buf init: 4194304 (SDMA)
itifg8[D0]: dma-area alloc 0xe4501000
itifg8[D0]: buf alloc: 0xe4501000
itifg8[D0]: area not locked, do it.
itifg8[D0]: > iti_intr: 0x20400 time: 127419us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: v:0xe4501000->b:0x101da000
itifg8[D0]: v:0xe4701000->b:0x1073c000
itifg8[D0]: v:0xe4900000->b:0x109cb000
itifg8[D0]: <- dma_mmap
itifg8[D0]: < iti_mmap: 0xe4501000
itifg8[DX]: t:0xb7f66000 4194304
itifg8[DX]: f:0xe4900000
itifg8[DX]: t:0xb7d66000 2097152
itifg8[DX]: f:0xe4700000
itifg8[DX]: t:0xb7b67000 4096
itifg8[DX]: f:0xe4501000
itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
itifg8[D0]: -> dma_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf asize: 4128768by (36it)
itifg8[D0]: buf isize: 114688by
itifg8[D0]: 27 norm pages(s).
itifg8[D0]: 27 last pages(s).
itifg8[D0]: buf want: 114688by (1it)
itifg8[D0]: <- dma_lseek
itifg8[D0]: -> acq_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf isize: 110592by
itifg8[D0]: frame size 110592
itifg8[D0]: -> 1 frame(s).
itifg8[D0]: block size 0 (whole frames)
itifg8[D0]: -> 1 block(s).
itifg8[D0]: => icp_src_init
itifg8[D0]: int for append mode
itifg8[D0]: base addr 0x0
itifg8[D0]: line_size 384
itifg8[D0]: frame_size 110592
itifg8[D0]: A
itifg8[D0]: B
itifg8[D0]: C
itifg8[D0]: frame: 0
itifg8[D0]: D
BUG: unable to handle kernel NULL pointer dereference at virtual address
00000010
printing eip: e0ec3e42 *pde = 06772067 *pte = 00000000
Oops: 0002 [#5] SMP
Modules linked in: itifg8(U) nvidia(P)(U) nfs lockd nfs_acl sunrpc
rfcomm l2cap bluetooth autofs4 ipv6 dm_multipath dm_mod snd_intel8x0
snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer
firewire_ohci snd firewire_core e1000 button soundcore iTCO_wdt
crc_itu_t parport_pc iTCO_vendor_support parport i2c_i801 serio_raw
snd_page_alloc i2c_core joydev dcdbas floppy sr_mod sg cdrom ata_piix
ata_generic libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd
ehci_hcd
CPU: 0
EIP: 0060:[<e0ec3e42>] Tainted: P D VLI
EFLAGS: 00210246 (2.6.23.15-137.fabien.fc8 #1)
EIP is at icp_src_init+0x1b2/0x310 [itifg8]
eax: 00000000 ebx: cb3f40dc ecx: 00000010 edx: 00000010
esi: 00000000 edi: 00000000 ebp: d881cf14 esp: dda75ef8
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process test_itifg (pid: 14280, ti=dda75000 task=c64f2610 task.ti=dda75000)
Stack: dea98000 e0eea714 dea98000 e0eea707 00000000 01a98000 00000001
e0ec3c90
d881cf14 d881cf38 d881cf00 e0ebeada 00000000 00000001 e0ebfa2e
0001b000
00000400 000100f8 0001c000 00010400 00200000 00000000 00000000
cb3f4000
Call Trace:
[<e0ec3c90>] icp_src_init+0x0/0x310 [itifg8]
[<e0ebeada>] acq_lseek+0x42a/0x620 [itifg8]
[<e0ebfa2e>] dma_lseek+0x8e/0x2f0 [itifg8]
[<e0ebbd9f>] iti_lseek+0x14f/0x230 [itifg8]
[<e0ee42d0>] iti_os_llseek+0x0/0x20 [itifg8]
[<e0ee42e8>] iti_os_llseek+0x18/0x20 [itifg8]
[<c0480cd6>] vfs_llseek+0x35/0x39
[<c0481d2d>] sys_lseek+0x3c/0x66
[<c040518a>] syscall_call+0x7/0xb
=======================
Code: 02 00 68 14 a7 ee e0 8b 03 8b 90 10 01 00 00 52 e8 c4 09 02 00 8b
13 89 f1 8b 42 2c 8b 52 30 01 c1 89 f8 0f af 45 20 03 44 24 30 <89> 04
32 89 01 68 17 a7 ee e0 8b 03 8b 80 10 01 00 00 50 e8 96
EIP: [<e0ec3e42>] icp_src_init+0x1b2/0x310 [itifg8] SS:ESP 0068:dda75ef8
itifg8[D0]: > iti_close: flags 0x1402
itifg8[D0]: rlock:0 - wlock:0
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> acq_close
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: <- acq_close
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> dma_close
itifg8[D0]: dma stop
itifg8[D0]: -> dma_munmap
itifg8[D0]: area is locked, unlock it.
itifg8[D0]: buf free: 0xe4501000
itifg8[D0]: dma-area free 0xe4501000
itifg8[D0]: buf fini
itifg8[D0]: <- dma_munmap
itifg8[D0]: <- dma_close
itifg8[D0]: < iti_close: ok
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> the crash is somehere in src/board/icpcoIface.c:icp_src_init().
> I have added some debug output, that we can see more:
>
> static int
> icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
> off_t base, bool append)
> {
> int error;
>
> int frame;
>
> ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
>
> if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
> brd->i->append = append;
>
> ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
> ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
> ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
>
> /* set source values */
> iti_printd (brd->i->osp, "A\n");
> if ((error = cr_set_pitch (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_pitch");
> return -EIO;
> }
> iti_printd (brd->i->osp, "B\n");
> if ((error = cr_set_aoix (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_aoix");
> return -EIO;
> }
>
> iti_printd (brd->i->osp, "C\n");
> for (frame = 0; frame < frames; frame++)
> {
> iti_printd (brd->i->osp, "D\n");
> brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
> base + frame * fmt->frame_size;
> iti_printd (brd->i->osp, "E\n");
>
> if (fmt->ilace && !fmt->vdec)
> {
> iti_printd (brd->i->osp, "F\n");
> if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "G\n");
> brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
> iti_printd (brd->i->osp, "H\n");
> }
> else
> {
> iti_printd (brd->i->osp, "I\n");
> if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "J\n");
> }
>
> iti_printd (brd->i->osp, "K\n");
> /* for this only use one on-board memory frame */
> if (!append) break;
> }
>
> iti_printd (brd->i->osp, "L\n");
> cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
> iti_printd (brd->i->osp, "M\n");
> cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
> iti_printd (brd->i->osp, "N\n");
>
> ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
> return OK;
> }
>
> Please recompile and run again.
>
> matthias
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its
contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|
|
From: <M....@go...> - 2008-03-04 15:02:39
|
Sorry, forget the last answer, I have overseen this mail! _________________________________________________ Matthias Stein, GOM Gesellschaft fuer Optische Messtechnik mbH, Mittelweg 7-8, 38106 Braunschweig, Germany E-mail: M....@go..., Internet: http://www.gom.com Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15 Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131 Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter This e-mail is confidential. If you have received it in error, you are on notice of its status. Please notify us immediately by reply e-mail and delete this message from your system. Please do not copy it or use it for any purposes, or disclose its contents to any other person; to do so could be a breach of confidence. Thank you for your co-operation. |
|
From: <M....@go...> - 2008-03-04 14:51:48
|
Hello Fabien,
this is a correct output, icp_src_init runs correctly and and image
is acquired!
And now the output including the icp_src_init ABC... printouts with
the new (crashing 8.4.0-0) version!?
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
Fabien Spindler
<fspindle@irisa.f
r> To
M....@go...
04.03.2008 15:05 cc
Fabien Spindler
<Fab...@ir...>,
iti...@li...
Subject
Re: [Itifg-tech] itifg-8.4.0-0
released
Matthias,
Just to compare, here is the dmesg output from the previous driver
itifg-8.3 running on a 2.6.18-1 kernel. I see no major differences.
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x20100 time: 91722us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: IDLE
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: IDLE
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x100)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xf18de280
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xf3d05cc0
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xf42ae000
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xd4cc40c0
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xe24fbc40
itifg8[D0]: inf fpga k-free 0xe24fbc40
itifg8[D0]: inf mbuf k-free 0xf18de280
itifg8[D0]: inf sbuf k-free 0xf3d05cc0
itifg8[D0]: inf fbuf k-free 0xf42ae000
itifg8[D0]: inf obuf k-free 0xd4cc40c0
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xd4cc40c0
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xf3d05cc0
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xd17d8e00
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xf18de280
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xe24fbc40
itifg8[D0]: inf fpga k-free 0xe24fbc40
itifg8[D0]: inf mbuf k-free 0xd4cc40c0
itifg8[D0]: inf sbuf k-free 0xf3d05cc0
itifg8[D0]: inf fbuf k-free 0xd17d8e00
itifg8[D0]: inf obuf k-free 0xf18de280
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
itifg8[D0]: -> dma_open
itifg8[D0]: <- dma_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: irq_enable end (40000)
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: opmode: IDLE
itifg8[D0]: ACQ ist linked
itifg8[D0]: -> acq_open
itifg8[D0]: <- acq_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: rlock:1 - wlock:1
itifg8[D0]: < iti_open: ok
itifg8[D0]: > iti_ioctl: GET_CAMCNF
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMCNF
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: > amcmp_config
itifg8[D0]: 1
itifg8[D0]: > iti_intr: 0x20400 time: 105217us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: 2
itifg8[D0]: 3
itifg8[D0]: 4
itifg8[D0]: 5
itifg8[D0]: 6
itifg8[D0]: 7
itifg8[D0]: 8
itifg8[D0]: 9
itifg8[D0]: 10
itifg8[D0]: 11
itifg8[D0]: 12
itifg8[D0]: 13
itifg8[D0]: 14
itifg8[D0]: 15
itifg8[D0]: 16
itifg8[D0]: 17
itifg8[D0]: 18
itifg8[D0]: 20
itifg8[D0]: 21
itifg8[D0]: 22
itifg8[D0]: 23
itifg8[D0]: modid 0xe038
itifg8[D0]: mxctl 0xe004
itifg8[D0]: scl 0xe039
itifg8[D0]: sda 0xe001
itifg8[D0]: nptrig 0xe028
itifg8[D0]: npswtrig 0xe008
itifg8[D0]: bt829a : status 0x19
itifg8[D0]: bt829a : iform 0x58
itifg8[D0]: bt829a : tdec 0x00
itifg8[D0]: bt829a : crop 0x23
itifg8[D0]: bt829a : vdly_lo 0x1e
itifg8[D0]: bt829a : vact_lo 0x40
itifg8[D0]: bt829a : hdly_lo 0xa0
itifg8[D0]: bt829a : hact_lo 0x00
itifg8[D0]: bt829a : hscal_hi 0x03
itifg8[D0]: bt829a : hscal_lo 0x3c
itifg8[D0]: bt829a : bright 0x10
itifg8[D0]: bt829a : control 0x34
itifg8[D0]: bt829a : con_lo 0x3d
itifg8[D0]: bt829a : sat_u_lo 0xfe
itifg8[D0]: bt829a : sat_v_lo 0xb4
itifg8[D0]: bt829a : hue 0x00
itifg8[D0]: bt829a : scloop 0x40
itifg8[D0]: bt829a : reserved 0xcf
itifg8[D0]: bt829a : oform 0x86
itifg8[D0]: bt829a : vscale_hi 0x60
itifg8[D0]: bt829a : vscale_lo 0x00
itifg8[D0]: bt829a : reserved 0x01
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : idcode 0xe8
itifg8[D0]: bt829a : adly 0x7f
itifg8[D0]: bt829a : bdly 0x72
itifg8[D0]: bt829a : adc 0x80
itifg8[D0]: bt829a : vtc 0x40
itifg8[D0]: bt829a : reserved 0xc0
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : reserved 0x7f
itifg8[D0]: bt829a : sreset 0x70
itifg8[D0]: < amcmp_config
itifg8[D0]: -> acq_startup
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 16
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 1536
itifg8[D0]: frame size: 884736
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: <- acq_startup
itifg8[D0]: -> dma_startup
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 888832
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: <- dma_startup
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_NORM_TO8
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: > iti_intr: 0x20100 time: 145223us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x100)!
itifg8[D0]: < iti_intr
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 768
itifg8[D0]: frame size: 442368
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 446464
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_HDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: horiz. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 221184
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 225280
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_VDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: vert. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 288
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 1
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 110592
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 114688
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMERA
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: camera: 0
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_TIMEOUT
itifg8[D0]: outparam NULL
itifg8[D0]: timeout: 1000ms (HZ=1000)
itifg8[D0]: expire: 1250
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_WIDTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_HEIGHT
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_DEPTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_RAWSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_mmap: 4194304 byte(s)
itifg8[D0]: -> dma_mmap: 1024 pages
itifg8[D0]: buf init: 4194304 (SDMA)
itifg8[D0]: dma-area alloc 0xfec82000
itifg8[D0]: buf alloc: 0xfec82000
itifg8[D0]: area not locked, do it.
itifg8[D0]: v:0xfec82000->b:0x981f000
itifg8[D0]: v:0xfee82000->b:0x8694000
itifg8[D0]: v:0xff081000->b:0x8093000
itifg8[D0]: <- dma_mmap
itifg8[D0]: < iti_mmap: 0xfec82000
itifg8[DX]: t:0xb7f9d000 4194304
itifg8[DX]: f:0xff081000
itifg8[DX]: t:0xb7d9d000 2097152
itifg8[DX]: f:0xfee81000
itifg8[DX]: t:0xb7b9e000 4096
itifg8[DX]: f:0xfec82000
itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
itifg8[D0]: -> dma_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf asize: 4128768by (36it)
itifg8[D0]: buf isize: 114688by
itifg8[D0]: 27 norm pages(s).
itifg8[D0]: 27 last pages(s).
itifg8[D0]: buf want: 114688by (1it)
itifg8[D0]: <- dma_lseek
itifg8[D0]: -> acq_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf isize: 110592by
itifg8[D0]: frame size 110592
itifg8[D0]: -> 1 frame(s).
itifg8[D0]: block size 0 (whole frames)
itifg8[D0]: -> 1 block(s).
itifg8[D0]: => icp_src_init
itifg8[D0]: int for append mode
itifg8[D0]: base addr 0x0
itifg8[D0]: line_size 384
itifg8[D0]: frame_size 110592
itifg8[D0]: A
itifg8[D0]: B
itifg8[D0]: C
itifg8[D0]: frame: 0
itifg8[D0]: D
itifg8[D0]: E
itifg8[D0]: I
itifg8[D0]: J
itifg8[D0]: K
itifg8[D0]: L
itifg8[D0]: M
itifg8[D0]: N
itifg8[D0]: <= icp_src_init
itifg8[D0]: => icp_inp_init
itifg8[D0]: int for append mode
itifg8[D0]: <= icp_inp_init
itifg8[D0]: using snap mode
itifg8[D0]: buf want: 110592by (1it)
itifg8[D0]: add timer (1250)
itifg8[D0]: <- acq_lseek
itifg8[D0]: < iti_lseek: is 0
itifg8[D0]: > iti_read: at 0xb7fa3000
itifg8[D0]: 114688 byte(s)
itifg8[D0]: -> dma_read: BLOCKED SYNC.
itifg8[D0]: opmode: WORK
itifg8[D0]: *** dma block sleep *** 158090us
itifg8[D0]: add timer (5000)
itifg8[D0]: > iti_intr: 0x20100 time: 165176us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: WORK
itifg8[I0]: dropping leadin frame.
itifg8[D0]: <- acq_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x24100 time: 185187us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: WORK
itifg8[D0]: buf is wanted
itifg8[D0]: buf todo: 110592by (1it)
itifg8[D0]: buf free: 2097152by (18it)
itifg8[D0]: buf can write
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: => icp_src_next
itifg8[D0]: frame 1
itifg8[D0]: <= icp_src_next
itifg8[D0]: buf wr done: 110592by (1it)
itifg8[D0]: add timer (1250)
itifg8[D0]: <- acq_intr
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: buf is wanted
itifg8[D0]: buf todo: 114688by (1it)
itifg8[D0]: buf free: 4128768by (36it)
itifg8[D0]: buf can write
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: => icp_dst_next: last
itifg8[D0]: <= icp_dst_next
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 0/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: add timer (5000)
itifg8[D0]: dma start
itifg8[D0]: <- dma_intr
itifg8[D0]: del timer
itifg8[D0]: acq: nobody waiting.
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185295us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 1/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185352us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 2/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185408us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 3/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185469us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 4/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185520us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 5/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185572us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 6/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185627us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 7/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185693us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 8/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185755us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 9/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185832us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 10/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185915us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 11/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185976us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 12/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186054us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 13/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186137us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 14/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186217us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 15/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186294us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 16/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186369us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 17/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186427us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 18/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186484us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 19/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186537us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 20/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186596us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 21/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186654us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 22/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186716us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 23/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186789us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 24/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186861us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 25/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186939us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 26/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 187000us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 27/27
itifg8[D0]: del timer
itifg8[D0]: dma stop
itifg8[D0]: dma_proceed 0xfeb81000
itifg8[D0]: dma_proceed 0xfeb81000
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: buf wr done: 114688by (1it)
itifg8[D0]: <- dma_intr
itifg8[D0]: *** dma block wakeup *** 187070us
itifg8[D0]: del timer
itifg8[D0]: < iti_intr
itifg8[D0]: buf used: 114688by (1it)
itifg8[D0]: buf can read
itifg8[D0]: buf rd: @ 0by (0it)
itifg8[D0]: buf rd done: 114688by (1it)
itifg8[D0]: <- dma_read
itifg8[D0]: < iti_read: 114688 byte(s)
itifg8[D0]: > iti_close: flags 0x1402
itifg8[D0]: rlock:0 - wlock:0
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> acq_close
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: <- acq_close
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> dma_close
itifg8[D0]: dma stop
itifg8[D0]: -> dma_munmap
itifg8[D0]: area is locked, unlock it.
itifg8[D0]: buf free: 0xfec82000
itifg8[D0]: dma-area free 0xfec82000
itifg8[D0]: buf fini
itifg8[D0]: <- dma_munmap
itifg8[D0]: <- dma_close
itifg8[D0]: < iti_close: ok
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> the crash is somehere in src/board/icpcoIface.c:icp_src_init().
> I have added some debug output, that we can see more:
>
> static int
> icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
> off_t base, bool append)
> {
> int error;
>
> int frame;
>
> ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
>
> if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
> brd->i->append = append;
>
> ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
> ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
> ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
>
> /* set source values */
> iti_printd (brd->i->osp, "A\n");
> if ((error = cr_set_pitch (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_pitch");
> return -EIO;
> }
> iti_printd (brd->i->osp, "B\n");
> if ((error = cr_set_aoix (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_aoix");
> return -EIO;
> }
>
> iti_printd (brd->i->osp, "C\n");
> for (frame = 0; frame < frames; frame++)
> {
> iti_printd (brd->i->osp, "D\n");
> brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
> base + frame * fmt->frame_size;
> iti_printd (brd->i->osp, "E\n");
>
> if (fmt->ilace && !fmt->vdec)
> {
> iti_printd (brd->i->osp, "F\n");
> if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "G\n");
> brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
> iti_printd (brd->i->osp, "H\n");
> }
> else
> {
> iti_printd (brd->i->osp, "I\n");
> if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "J\n");
> }
>
> iti_printd (brd->i->osp, "K\n");
> /* for this only use one on-board memory frame */
> if (!append) break;
> }
>
> iti_printd (brd->i->osp, "L\n");
> cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
> iti_printd (brd->i->osp, "M\n");
> cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
> iti_printd (brd->i->osp, "N\n");
>
> ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
> return OK;
> }
>
> Please recompile and run again.
>
> matthias
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its
contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|
|
From: Fabien S. <fsp...@ir...> - 2008-03-04 14:05:20
|
Matthias,
Just to compare, here is the dmesg output from the previous driver
itifg-8.3 running on a 2.6.18-1 kernel. I see no major differences.
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x20100 time: 91722us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: IDLE
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: IDLE
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x100)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xf18de280
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xf3d05cc0
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xf42ae000
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xd4cc40c0
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xe24fbc40
itifg8[D0]: inf fpga k-free 0xe24fbc40
itifg8[D0]: inf mbuf k-free 0xf18de280
itifg8[D0]: inf sbuf k-free 0xf3d05cc0
itifg8[D0]: inf fbuf k-free 0xf42ae000
itifg8[D0]: inf obuf k-free 0xd4cc40c0
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xd4cc40c0
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xf3d05cc0
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xd17d8e00
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xf18de280
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xe24fbc40
itifg8[D0]: inf fpga k-free 0xe24fbc40
itifg8[D0]: inf mbuf k-free 0xd4cc40c0
itifg8[D0]: inf sbuf k-free 0xf3d05cc0
itifg8[D0]: inf fbuf k-free 0xd17d8e00
itifg8[D0]: inf obuf k-free 0xf18de280
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
itifg8[D0]: -> dma_open
itifg8[D0]: <- dma_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: irq_enable end (40000)
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: opmode: IDLE
itifg8[D0]: ACQ ist linked
itifg8[D0]: -> acq_open
itifg8[D0]: <- acq_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: rlock:1 - wlock:1
itifg8[D0]: < iti_open: ok
itifg8[D0]: > iti_ioctl: GET_CAMCNF
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMCNF
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: > amcmp_config
itifg8[D0]: 1
itifg8[D0]: > iti_intr: 0x20400 time: 105217us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: 2
itifg8[D0]: 3
itifg8[D0]: 4
itifg8[D0]: 5
itifg8[D0]: 6
itifg8[D0]: 7
itifg8[D0]: 8
itifg8[D0]: 9
itifg8[D0]: 10
itifg8[D0]: 11
itifg8[D0]: 12
itifg8[D0]: 13
itifg8[D0]: 14
itifg8[D0]: 15
itifg8[D0]: 16
itifg8[D0]: 17
itifg8[D0]: 18
itifg8[D0]: 20
itifg8[D0]: 21
itifg8[D0]: 22
itifg8[D0]: 23
itifg8[D0]: modid 0xe038
itifg8[D0]: mxctl 0xe004
itifg8[D0]: scl 0xe039
itifg8[D0]: sda 0xe001
itifg8[D0]: nptrig 0xe028
itifg8[D0]: npswtrig 0xe008
itifg8[D0]: bt829a : status 0x19
itifg8[D0]: bt829a : iform 0x58
itifg8[D0]: bt829a : tdec 0x00
itifg8[D0]: bt829a : crop 0x23
itifg8[D0]: bt829a : vdly_lo 0x1e
itifg8[D0]: bt829a : vact_lo 0x40
itifg8[D0]: bt829a : hdly_lo 0xa0
itifg8[D0]: bt829a : hact_lo 0x00
itifg8[D0]: bt829a : hscal_hi 0x03
itifg8[D0]: bt829a : hscal_lo 0x3c
itifg8[D0]: bt829a : bright 0x10
itifg8[D0]: bt829a : control 0x34
itifg8[D0]: bt829a : con_lo 0x3d
itifg8[D0]: bt829a : sat_u_lo 0xfe
itifg8[D0]: bt829a : sat_v_lo 0xb4
itifg8[D0]: bt829a : hue 0x00
itifg8[D0]: bt829a : scloop 0x40
itifg8[D0]: bt829a : reserved 0xcf
itifg8[D0]: bt829a : oform 0x86
itifg8[D0]: bt829a : vscale_hi 0x60
itifg8[D0]: bt829a : vscale_lo 0x00
itifg8[D0]: bt829a : reserved 0x01
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : idcode 0xe8
itifg8[D0]: bt829a : adly 0x7f
itifg8[D0]: bt829a : bdly 0x72
itifg8[D0]: bt829a : adc 0x80
itifg8[D0]: bt829a : vtc 0x40
itifg8[D0]: bt829a : reserved 0xc0
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : reserved 0x7f
itifg8[D0]: bt829a : sreset 0x70
itifg8[D0]: < amcmp_config
itifg8[D0]: -> acq_startup
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 16
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 1536
itifg8[D0]: frame size: 884736
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: <- acq_startup
itifg8[D0]: -> dma_startup
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 888832
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: <- dma_startup
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_NORM_TO8
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: > iti_intr: 0x20100 time: 145223us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x100)!
itifg8[D0]: < iti_intr
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 768
itifg8[D0]: frame size: 442368
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 446464
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_HDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: horiz. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 221184
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 225280
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_VDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: vert. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 288
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 1
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 110592
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 114688
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMERA
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: camera: 0
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_TIMEOUT
itifg8[D0]: outparam NULL
itifg8[D0]: timeout: 1000ms (HZ=1000)
itifg8[D0]: expire: 1250
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_WIDTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_HEIGHT
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_DEPTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_RAWSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_mmap: 4194304 byte(s)
itifg8[D0]: -> dma_mmap: 1024 pages
itifg8[D0]: buf init: 4194304 (SDMA)
itifg8[D0]: dma-area alloc 0xfec82000
itifg8[D0]: buf alloc: 0xfec82000
itifg8[D0]: area not locked, do it.
itifg8[D0]: v:0xfec82000->b:0x981f000
itifg8[D0]: v:0xfee82000->b:0x8694000
itifg8[D0]: v:0xff081000->b:0x8093000
itifg8[D0]: <- dma_mmap
itifg8[D0]: < iti_mmap: 0xfec82000
itifg8[DX]: t:0xb7f9d000 4194304
itifg8[DX]: f:0xff081000
itifg8[DX]: t:0xb7d9d000 2097152
itifg8[DX]: f:0xfee81000
itifg8[DX]: t:0xb7b9e000 4096
itifg8[DX]: f:0xfec82000
itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
itifg8[D0]: -> dma_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf asize: 4128768by (36it)
itifg8[D0]: buf isize: 114688by
itifg8[D0]: 27 norm pages(s).
itifg8[D0]: 27 last pages(s).
itifg8[D0]: buf want: 114688by (1it)
itifg8[D0]: <- dma_lseek
itifg8[D0]: -> acq_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf isize: 110592by
itifg8[D0]: frame size 110592
itifg8[D0]: -> 1 frame(s).
itifg8[D0]: block size 0 (whole frames)
itifg8[D0]: -> 1 block(s).
itifg8[D0]: => icp_src_init
itifg8[D0]: int for append mode
itifg8[D0]: base addr 0x0
itifg8[D0]: line_size 384
itifg8[D0]: frame_size 110592
itifg8[D0]: A
itifg8[D0]: B
itifg8[D0]: C
itifg8[D0]: frame: 0
itifg8[D0]: D
itifg8[D0]: E
itifg8[D0]: I
itifg8[D0]: J
itifg8[D0]: K
itifg8[D0]: L
itifg8[D0]: M
itifg8[D0]: N
itifg8[D0]: <= icp_src_init
itifg8[D0]: => icp_inp_init
itifg8[D0]: int for append mode
itifg8[D0]: <= icp_inp_init
itifg8[D0]: using snap mode
itifg8[D0]: buf want: 110592by (1it)
itifg8[D0]: add timer (1250)
itifg8[D0]: <- acq_lseek
itifg8[D0]: < iti_lseek: is 0
itifg8[D0]: > iti_read: at 0xb7fa3000
itifg8[D0]: 114688 byte(s)
itifg8[D0]: -> dma_read: BLOCKED SYNC.
itifg8[D0]: opmode: WORK
itifg8[D0]: *** dma block sleep *** 158090us
itifg8[D0]: add timer (5000)
itifg8[D0]: > iti_intr: 0x20100 time: 165176us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: WORK
itifg8[I0]: dropping leadin frame.
itifg8[D0]: <- acq_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x24100 time: 185187us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: WORK
itifg8[D0]: buf is wanted
itifg8[D0]: buf todo: 110592by (1it)
itifg8[D0]: buf free: 2097152by (18it)
itifg8[D0]: buf can write
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: => icp_src_next
itifg8[D0]: frame 1
itifg8[D0]: <= icp_src_next
itifg8[D0]: buf wr done: 110592by (1it)
itifg8[D0]: add timer (1250)
itifg8[D0]: <- acq_intr
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: buf is wanted
itifg8[D0]: buf todo: 114688by (1it)
itifg8[D0]: buf free: 4128768by (36it)
itifg8[D0]: buf can write
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: => icp_dst_next: last
itifg8[D0]: <= icp_dst_next
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 0/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: add timer (5000)
itifg8[D0]: dma start
itifg8[D0]: <- dma_intr
itifg8[D0]: del timer
itifg8[D0]: acq: nobody waiting.
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185295us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 1/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185352us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 2/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185408us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 3/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185469us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 4/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185520us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 5/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185572us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 6/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185627us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 7/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185693us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 8/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185755us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 9/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185832us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 10/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185915us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 11/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 185976us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 12/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186054us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 13/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186137us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 14/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186217us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 15/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186294us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 16/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186369us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 17/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186427us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 18/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186484us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 19/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186537us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 20/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186596us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 21/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186654us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 22/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186716us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 23/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186789us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 24/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186861us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 25/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 186939us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 26/27
itifg8[D0]: <= icp_dst_page
itifg8[D0]: <- dma_intr
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_intr: 0x40000 time: 187000us
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: WORK
itifg8[D0]: => icp_dst_page
itifg8[D0]: page 27/27
itifg8[D0]: del timer
itifg8[D0]: dma stop
itifg8[D0]: dma_proceed 0xfeb81000
itifg8[D0]: dma_proceed 0xfeb81000
itifg8[D0]: buf wr: @ 0by (0it)
itifg8[D0]: buf wr done: 114688by (1it)
itifg8[D0]: <- dma_intr
itifg8[D0]: *** dma block wakeup *** 187070us
itifg8[D0]: del timer
itifg8[D0]: < iti_intr
itifg8[D0]: buf used: 114688by (1it)
itifg8[D0]: buf can read
itifg8[D0]: buf rd: @ 0by (0it)
itifg8[D0]: buf rd done: 114688by (1it)
itifg8[D0]: <- dma_read
itifg8[D0]: < iti_read: 114688 byte(s)
itifg8[D0]: > iti_close: flags 0x1402
itifg8[D0]: rlock:0 - wlock:0
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> acq_close
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: <- acq_close
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> dma_close
itifg8[D0]: dma stop
itifg8[D0]: -> dma_munmap
itifg8[D0]: area is locked, unlock it.
itifg8[D0]: buf free: 0xfec82000
itifg8[D0]: dma-area free 0xfec82000
itifg8[D0]: buf fini
itifg8[D0]: <- dma_munmap
itifg8[D0]: <- dma_close
itifg8[D0]: < iti_close: ok
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> the crash is somehere in src/board/icpcoIface.c:icp_src_init().
> I have added some debug output, that we can see more:
>
> static int
> icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
> off_t base, bool append)
> {
> int error;
>
> int frame;
>
> ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
>
> if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
> brd->i->append = append;
>
> ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
> ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
> ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
>
> /* set source values */
> iti_printd (brd->i->osp, "A\n");
> if ((error = cr_set_pitch (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_pitch");
> return -EIO;
> }
> iti_printd (brd->i->osp, "B\n");
> if ((error = cr_set_aoix (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_aoix");
> return -EIO;
> }
>
> iti_printd (brd->i->osp, "C\n");
> for (frame = 0; frame < frames; frame++)
> {
> iti_printd (brd->i->osp, "D\n");
> brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
> base + frame * fmt->frame_size;
> iti_printd (brd->i->osp, "E\n");
>
> if (fmt->ilace && !fmt->vdec)
> {
> iti_printd (brd->i->osp, "F\n");
> if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "G\n");
> brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
> iti_printd (brd->i->osp, "H\n");
> }
> else
> {
> iti_printd (brd->i->osp, "I\n");
> if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "J\n");
> }
>
> iti_printd (brd->i->osp, "K\n");
> /* for this only use one on-board memory frame */
> if (!append) break;
> }
>
> iti_printd (brd->i->osp, "L\n");
> cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
> iti_printd (brd->i->osp, "M\n");
> cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
> iti_printd (brd->i->osp, "N\n");
>
> ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
> return OK;
> }
>
> Please recompile and run again.
>
> matthias
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|
|
From: Fabien S. <fsp...@ir...> - 2008-03-04 13:48:26
|
I have just added an other printf like:
for (frame = 0; frame < frames; frame++)
{
ITI_PRINT1(brd->i->osp, " frame: %d\n", frame);
iti_printd (brd->i->osp, "D\n");
dmesg gives
itifg8[D0]: > iti_intr: 0x20400 time: 60046us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: IDLE
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: IDLE
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc6ec8f00
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc6ec8c00
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xdcdbce00
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc3b89b40
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd635f1c0
itifg8[D0]: inf fpga k-free 0xd635f1c0
itifg8[D0]: inf mbuf k-free 0xc6ec8f00
itifg8[D0]: inf sbuf k-free 0xc6ec8c00
itifg8[D0]: inf fbuf k-free 0xdcdbce00
itifg8[D0]: inf obuf k-free 0xc3b89b40
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc3b89b40
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc6ec8b40
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xda8da400
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc6ec8240
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd635f1c0
itifg8[D0]: inf fpga k-free 0xd635f1c0
itifg8[D0]: inf mbuf k-free 0xc3b89b40
itifg8[D0]: inf sbuf k-free 0xc6ec8b40
itifg8[D0]: inf fbuf k-free 0xda8da400
itifg8[D0]: inf obuf k-free 0xc6ec8240
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
itifg8[D0]: -> dma_open
itifg8[D0]: <- dma_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: irq_enable end (40000)
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: opmode: IDLE
itifg8[D0]: ACQ ist linked
itifg8[D0]: -> acq_open
itifg8[D0]: <- acq_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: rlock:1 - wlock:1
itifg8[D0]: < iti_open: ok
itifg8[D0]: > iti_ioctl: GET_CAMCNF
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMCNF
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: > amcmp_config
itifg8[D0]: 1
itifg8[D0]: 2
itifg8[D0]: 3
itifg8[D0]: 4
itifg8[D0]: 5
itifg8[D0]: 6
itifg8[D0]: 7
itifg8[D0]: 8
itifg8[D0]: 9
itifg8[D0]: 10
itifg8[D0]: 11
itifg8[D0]: 12
itifg8[D0]: 13
itifg8[D0]: 14
itifg8[D0]: 15
itifg8[D0]: 16
itifg8[D0]: 17
itifg8[D0]: 18
itifg8[D0]: 20
itifg8[D0]: 21
itifg8[D0]: 22
itifg8[D0]: 23
itifg8[D0]: modid 0xe038
itifg8[D0]: mxctl 0xe004
itifg8[D0]: scl 0xe03d
itifg8[D0]: sda 0xe001
itifg8[D0]: nptrig 0xe028
itifg8[D0]: npswtrig 0xe008
itifg8[D0]: bt829a : status 0x20
itifg8[D0]: bt829a : iform 0x58
itifg8[D0]: bt829a : tdec 0x00
itifg8[D0]: bt829a : crop 0x23
itifg8[D0]: bt829a : vdly_lo 0x1e
itifg8[D0]: bt829a : vact_lo 0x40
itifg8[D0]: bt829a : hdly_lo 0xa0
itifg8[D0]: bt829a : hact_lo 0x00
itifg8[D0]: bt829a : hscal_hi 0x03
itifg8[D0]: bt829a : hscal_lo 0x3c
itifg8[D0]: > iti_intr: 0x20400 time: 94048us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: bt829a : bright 0x10
itifg8[D0]: bt829a : control 0x34
itifg8[D0]: bt829a : con_lo 0x3d
itifg8[D0]: bt829a : sat_u_lo 0xfe
itifg8[D0]: bt829a : sat_v_lo 0xb4
itifg8[D0]: bt829a : hue 0x00
itifg8[D0]: bt829a : scloop 0x40
itifg8[D0]: bt829a : reserved 0xcf
itifg8[D0]: bt829a : oform 0x86
itifg8[D0]: bt829a : vscale_hi 0x60
itifg8[D0]: bt829a : vscale_lo 0x00
itifg8[D0]: bt829a : reserved 0x01
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : idcode 0xe8
itifg8[D0]: bt829a : adly 0x7f
itifg8[D0]: bt829a : bdly 0x72
itifg8[D0]: bt829a : adc 0x80
itifg8[D0]: bt829a : vtc 0x40
itifg8[D0]: bt829a : reserved 0xc0
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : reserved 0x7f
itifg8[D0]: bt829a : sreset 0x70
itifg8[D0]: < amcmp_config
itifg8[D0]: -> acq_startup
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 16
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 1536
itifg8[D0]: frame size: 884736
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: <- acq_startup
itifg8[D0]: -> dma_startup
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 888832
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: <- dma_startup
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_NORM_TO8
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 768
itifg8[D0]: frame size: 442368
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 446464
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_HDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: horiz. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 221184
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 225280
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_VDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: vert. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 288
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 1
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 110592
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 114688
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMERA
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: camera: 0
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_TIMEOUT
itifg8[D0]: outparam NULL
itifg8[D0]: timeout: 1000ms (HZ=1000)
itifg8[D0]: expire: 1250
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_WIDTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_HEIGHT
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_DEPTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_RAWSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_mmap: 4194304 byte(s)
itifg8[D0]: -> dma_mmap: 1024 pages
itifg8[D0]: buf init: 4194304 (SDMA)
itifg8[D0]: dma-area alloc 0xe4501000
itifg8[D0]: buf alloc: 0xe4501000
itifg8[D0]: area not locked, do it.
itifg8[D0]: > iti_intr: 0x20400 time: 127419us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: v:0xe4501000->b:0x101da000
itifg8[D0]: v:0xe4701000->b:0x1073c000
itifg8[D0]: v:0xe4900000->b:0x109cb000
itifg8[D0]: <- dma_mmap
itifg8[D0]: < iti_mmap: 0xe4501000
itifg8[DX]: t:0xb7f66000 4194304
itifg8[DX]: f:0xe4900000
itifg8[DX]: t:0xb7d66000 2097152
itifg8[DX]: f:0xe4700000
itifg8[DX]: t:0xb7b67000 4096
itifg8[DX]: f:0xe4501000
itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
itifg8[D0]: -> dma_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf asize: 4128768by (36it)
itifg8[D0]: buf isize: 114688by
itifg8[D0]: 27 norm pages(s).
itifg8[D0]: 27 last pages(s).
itifg8[D0]: buf want: 114688by (1it)
itifg8[D0]: <- dma_lseek
itifg8[D0]: -> acq_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf isize: 110592by
itifg8[D0]: frame size 110592
itifg8[D0]: -> 1 frame(s).
itifg8[D0]: block size 0 (whole frames)
itifg8[D0]: -> 1 block(s).
itifg8[D0]: => icp_src_init
itifg8[D0]: int for append mode
itifg8[D0]: base addr 0x0
itifg8[D0]: line_size 384
itifg8[D0]: frame_size 110592
itifg8[D0]: A
itifg8[D0]: B
itifg8[D0]: C
itifg8[D0]: frame: 0
itifg8[D0]: D
BUG: unable to handle kernel NULL pointer dereference at virtual address
00000010
printing eip: e0ec3e42 *pde = 06772067 *pte = 00000000
Oops: 0002 [#5] SMP
Modules linked in: itifg8(U) nvidia(P)(U) nfs lockd nfs_acl sunrpc
rfcomm l2cap bluetooth autofs4 ipv6 dm_multipath dm_mod snd_intel8x0
snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer
firewire_ohci snd firewire_core e1000 button soundcore iTCO_wdt
crc_itu_t parport_pc iTCO_vendor_support parport i2c_i801 serio_raw
snd_page_alloc i2c_core joydev dcdbas floppy sr_mod sg cdrom ata_piix
ata_generic libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd
ehci_hcd
CPU: 0
EIP: 0060:[<e0ec3e42>] Tainted: P D VLI
EFLAGS: 00210246 (2.6.23.15-137.fabien.fc8 #1)
EIP is at icp_src_init+0x1b2/0x310 [itifg8]
eax: 00000000 ebx: cb3f40dc ecx: 00000010 edx: 00000010
esi: 00000000 edi: 00000000 ebp: d881cf14 esp: dda75ef8
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process test_itifg (pid: 14280, ti=dda75000 task=c64f2610 task.ti=dda75000)
Stack: dea98000 e0eea714 dea98000 e0eea707 00000000 01a98000 00000001
e0ec3c90
d881cf14 d881cf38 d881cf00 e0ebeada 00000000 00000001 e0ebfa2e
0001b000
00000400 000100f8 0001c000 00010400 00200000 00000000 00000000
cb3f4000
Call Trace:
[<e0ec3c90>] icp_src_init+0x0/0x310 [itifg8]
[<e0ebeada>] acq_lseek+0x42a/0x620 [itifg8]
[<e0ebfa2e>] dma_lseek+0x8e/0x2f0 [itifg8]
[<e0ebbd9f>] iti_lseek+0x14f/0x230 [itifg8]
[<e0ee42d0>] iti_os_llseek+0x0/0x20 [itifg8]
[<e0ee42e8>] iti_os_llseek+0x18/0x20 [itifg8]
[<c0480cd6>] vfs_llseek+0x35/0x39
[<c0481d2d>] sys_lseek+0x3c/0x66
[<c040518a>] syscall_call+0x7/0xb
=======================
Code: 02 00 68 14 a7 ee e0 8b 03 8b 90 10 01 00 00 52 e8 c4 09 02 00 8b
13 89 f1 8b 42 2c 8b 52 30 01 c1 89 f8 0f af 45 20 03 44 24 30 <89> 04
32 89 01 68 17 a7 ee e0 8b 03 8b 80 10 01 00 00 50 e8 96
EIP: [<e0ec3e42>] icp_src_init+0x1b2/0x310 [itifg8] SS:ESP 0068:dda75ef8
itifg8[D0]: > iti_close: flags 0x1402
itifg8[D0]: rlock:0 - wlock:0
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> acq_close
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: <- acq_close
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> dma_close
itifg8[D0]: dma stop
itifg8[D0]: -> dma_munmap
itifg8[D0]: area is locked, unlock it.
itifg8[D0]: buf free: 0xe4501000
itifg8[D0]: dma-area free 0xe4501000
itifg8[D0]: buf fini
itifg8[D0]: <- dma_munmap
itifg8[D0]: <- dma_close
itifg8[D0]: < iti_close: ok
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> the crash is somehere in src/board/icpcoIface.c:icp_src_init().
> I have added some debug output, that we can see more:
>
> static int
> icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
> off_t base, bool append)
> {
> int error;
>
> int frame;
>
> ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
>
> if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
> brd->i->append = append;
>
> ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
> ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
> ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
>
> /* set source values */
> iti_printd (brd->i->osp, "A\n");
> if ((error = cr_set_pitch (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_pitch");
> return -EIO;
> }
> iti_printd (brd->i->osp, "B\n");
> if ((error = cr_set_aoix (brd->i, fmt->line_size)))
> {
> iti_error (error, "cr_set_aoix");
> return -EIO;
> }
>
> iti_printd (brd->i->osp, "C\n");
> for (frame = 0; frame < frames; frame++)
> {
> iti_printd (brd->i->osp, "D\n");
> brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
> base + frame * fmt->frame_size;
> iti_printd (brd->i->osp, "E\n");
>
> if (fmt->ilace && !fmt->vdec)
> {
> iti_printd (brd->i->osp, "F\n");
> if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "G\n");
> brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
> iti_printd (brd->i->osp, "H\n");
> }
> else
> {
> iti_printd (brd->i->osp, "I\n");
> if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
> {
> iti_error (error, "cr_set_bmilace");
> return -EIO;
> }
> iti_printd (brd->i->osp, "J\n");
> }
>
> iti_printd (brd->i->osp, "K\n");
> /* for this only use one on-board memory frame */
> if (!append) break;
> }
>
> iti_printd (brd->i->osp, "L\n");
> cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
> iti_printd (brd->i->osp, "M\n");
> cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
> iti_printd (brd->i->osp, "N\n");
>
> ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
> return OK;
> }
>
> Please recompile and run again.
>
> matthias
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|
|
From: <M....@go...> - 2008-03-04 11:58:17
|
Hello Fabien,
the crash is somehere in src/board/icpcoIface.c:icp_src_init().
I have added some debug output, that we can see more:
static int
icp_src_init (iti_brd_t *brd, struct iti_fmt_t *fmt, int frames,
off_t base, bool append)
{
int error;
int frame;
ITI_PRINT1(brd->i->osp, "=> icp_src_init\n");
if (append) ITI_PRINT1(brd->i->osp, " int for append mode\n");
brd->i->append = append;
ITI_PRINT1(brd->i->osp, " base addr %#lx\n", base);
ITI_PRINT1(brd->i->osp, " line_size " SIZE_F "\n", fmt->line_size);
ITI_PRINT1(brd->i->osp, " frame_size " SIZE_F "\n", fmt->frame_size);
/* set source values */
iti_printd (brd->i->osp, "A\n");
if ((error = cr_set_pitch (brd->i, fmt->line_size)))
{
iti_error (error, "cr_set_pitch");
return -EIO;
}
iti_printd (brd->i->osp, "B\n");
if ((error = cr_set_aoix (brd->i, fmt->line_size)))
{
iti_error (error, "cr_set_aoix");
return -EIO;
}
iti_printd (brd->i->osp, "C\n");
for (frame = 0; frame < frames; frame++)
{
iti_printd (brd->i->osp, "D\n");
brd->i->dma1stfld[frame] = brd->i->dma2ndfld[frame] =
base + frame * fmt->frame_size;
iti_printd (brd->i->osp, "E\n");
if (fmt->ilace && !fmt->vdec)
{
iti_printd (brd->i->osp, "F\n");
if ((error = cr_set_bmilace (brd->i, CR_ENABLE)))
{
iti_error (error, "cr_set_bmilace");
return -EIO;
}
iti_printd (brd->i->osp, "G\n");
brd->i->dma2ndfld[frame] += fmt->frame_size / 2;
iti_printd (brd->i->osp, "H\n");
}
else
{
iti_printd (brd->i->osp, "I\n");
if ((error = cr_set_bmilace (brd->i, CR_DISABLE)))
{
iti_error (error, "cr_set_bmilace");
return -EIO;
}
iti_printd (brd->i->osp, "J\n");
}
iti_printd (brd->i->osp, "K\n");
/* for this only use one on-board memory frame */
if (!append) break;
}
iti_printd (brd->i->osp, "L\n");
cr_set_bmsf (brd->i, brd->i->dma1stfld[0]);
iti_printd (brd->i->osp, "M\n");
cr_set_bmss (brd->i, brd->i->dma2ndfld[0]);
iti_printd (brd->i->osp, "N\n");
ITI_PRINT1(brd->i->osp, "<= icp_src_init\n");
return OK;
}
Please recompile and run again.
matthias
_________________________________________________
Matthias Stein,
GOM Gesellschaft fuer Optische Messtechnik mbH,
Mittelweg 7-8, 38106 Braunschweig, Germany
E-mail: M....@go..., Internet: http://www.gom.com
Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
This e-mail is confidential. If you have received it in error, you are on
notice of its status.
Please notify us immediately by reply e-mail and delete this message from
your system.
Please do not copy it or use it for any purposes, or disclose its contents
to any other person;
to do so could be a breach of confidence.
Thank you for your co-operation.
|
|
From: Fabien S. <fsp...@ir...> - 2008-03-04 11:09:16
|
Matthias,
-------------------------------------------------------------------------
Here is the output of /var/log/messages
-------------------------------------------------------------------------
Mar 4 11:51:46 genesis kernel: itifg8[IX]: Debug output enabled
Mar 4 11:51:46 genesis kernel: itifg8[IX]: Debug level is 127 (0x7f)
Mar 4 11:51:46 genesis kernel: itifg8[IX]: Configure physical device 0
Mar 4 11:51:46 genesis kernel: itifg8[I0]: IC-PCI found
Mar 4 11:51:46 genesis kernel: ACPI: PCI Interrupt 0000:02:01.0[A] ->
GSI 22 (level, low) -> IRQ 22
Mar 4 11:51:46 genesis kernel: itifg8[NX]: iti_intr: invalid board pointer.
Mar 4 11:51:46 genesis kernel: itifg8[NX]: (0xd2775000)
Mar 4 11:51:46 genesis kernel: itifg8[I0]: Serial number is 33171 (rev. B6)
Mar 4 11:51:46 genesis kernel: itifg8[I0]: AM-STD/COMP Acquisition
Module found.
Mar 4 11:51:46 genesis kernel: itifg8[IX]: 1 physical device(s) found
Mar 4 11:51:46 genesis kernel: itifg8[IX]: Version 8.4.0-0 (build#9)
Mar 4 11:51:46 genesis kernel: itifg8[IX]: Mar 4 2008 (Linux
2.6.23.15-137.fabien.fc8).
Mar 4 11:55:52 genesis kernel: BUG: unable to handle kernel NULL
pointer dereference at virtual address 00000010
Mar 4 11:55:52 genesis kernel: printing eip: e0ec2d8d *pde = 11fdc067
*pte = 00000000
Mar 4 11:55:52 genesis kernel: Oops: 0002 [#1] SMP
Mar 4 11:55:52 genesis kernel: Modules linked in: itifg8(U)
nvidia(P)(U) nfs lockd nfs_acl sunrpc rfcomm l2cap bluetooth autofs4
ipv6 dm_multipath dm_mod snd_intel8x0 snd_ac97_codec ac97_bus
snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
snd_pcm_oss snd_mixer_oss snd_pcm snd_timer firewire_ohci snd
firewire_core e1000 button soundcore iTCO_wdt crc_itu_t parport_pc
iTCO_vendor_support parport i2c_i801 serio_raw snd_page_alloc i2c_core
joydev dcdbas floppy sr_mod sg cdrom ata_piix ata_generic libata sd_mod
scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd ehci_hcd
Mar 4 11:55:52 genesis kernel: CPU: 0
Mar 4 11:55:52 genesis kernel: EIP: 0060:[<e0ec2d8d>] Tainted: P
VLI
Mar 4 11:55:52 genesis kernel: EFLAGS: 00010246
(2.6.23.15-137.fabien.fc8 #1)
Mar 4 11:55:52 genesis kernel: EIP is at icp_src_init+0xfd/0x1c0 [itifg8]
Mar 4 11:55:52 genesis kernel: eax: 00000000 ebx: 00000000 ecx:
00000010 edx: 00000010
Mar 4 11:55:52 genesis kernel: esi: 00000000 edi: d27750dc ebp:
dfe25314 esp: d5d2ef0c
Mar 4 11:55:52 genesis kernel: ds: 007b es: 007b fs: 00d8 gs: 0033
ss: 0068
Mar 4 11:55:52 genesis kernel: Process test_itifg (pid: 11449,
ti=d5d2e000 task=c6b38610 task.ti=d5d2e000)
Mar 4 11:55:52 genesis kernel: Stack: 01557000 00000001 e0ec2c90
dfe25314 dfe25338 dfe25300 e0ebdada 00000000
Mar 4 11:55:52 genesis kernel: 00000001 e0ebea2e 0001b000
00000400 00010078 0001c000 00010400 00200000
Mar 4 11:55:52 genesis kernel: 00000000 00000000 d2775000
00001402 e0ebad9f 00001402 0001c000 00000002
Mar 4 11:55:52 genesis kernel: Call Trace:
Mar 4 11:55:52 genesis kernel: [<e0ec2c90>] icp_src_init+0x0/0x1c0
[itifg8]
Mar 4 11:55:52 genesis kernel: [<e0ebdada>] acq_lseek+0x42a/0x620 [itifg8]
Mar 4 11:55:52 genesis kernel: [<e0ebea2e>] dma_lseek+0x8e/0x2f0 [itifg8]
Mar 4 11:55:52 genesis kernel: [<e0ebad9f>] iti_lseek+0x14f/0x230 [itifg8]
Mar 4 11:55:52 genesis kernel: [<e0ee3180>] iti_os_llseek+0x0/0x20
[itifg8]
Mar 4 11:55:52 genesis kernel: [<e0ee3198>] iti_os_llseek+0x18/0x20
[itifg8]
Mar 4 11:55:52 genesis kernel: [<c0480cd6>] vfs_llseek+0x35/0x39
Mar 4 11:55:52 genesis kernel: [<c0481d2d>] sys_lseek+0x3c/0x66
Mar 4 11:55:52 genesis kernel: [<c040518a>] syscall_call+0x7/0xb
Mar 4 11:55:52 genesis kernel: =======================
Mar 4 11:55:52 genesis kernel: Code: 80 7c 24 03 00 74 5f 46 3b 74 24
04 74 58 8b 17 8d 1c b5 00 00 00 00 89 d9 8b 42 2c 8b 52 30 01 c1 89 f0
0f af 45 20 03 44 24 1c <89> 04 1a 89 01 80 7d 00 00 74 b9 8b 45 18 85
c0 75 b2 ba 01 00
Mar 4 11:55:52 genesis kernel: EIP: [<e0ec2d8d>]
icp_src_init+0xfd/0x1c0 [itifg8] SS:ESP 0068:d5d2ef0c
-------------------------------------------------------------------------
Here is the output of dmesg
-------------------------------------------------------------------------
itifg8[D0]: > iti_intr: 0x20400 time: 496796us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: IDLE
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: IDLE
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc85bde40
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc85bd180
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xd51f1e00
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc85bda80
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd353dfc0
itifg8[D0]: inf fpga k-free 0xd353dfc0
itifg8[D0]: inf mbuf k-free 0xc85bde40
itifg8[D0]: inf sbuf k-free 0xc85bd180
itifg8[D0]: inf fbuf k-free 0xd51f1e00
itifg8[D0]: inf obuf k-free 0xc85bda80
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_fill_info
itifg8[D0]: inf mbuf size 160
itifg8[D0]: inf mbuf k-alloc 0xc85bda80
itifg8[D0]: inf sbuf size 160
itifg8[D0]: inf sbuf k-alloc 0xc85bd180
itifg8[D0]: inf fbuf size 320
itifg8[D0]: inf fbuf k-alloc 0xcea83000
itifg8[D0]: inf obuf size 160
itifg8[D0]: inf obuf k-alloc 0xc85bde40
itifg8[D0]: inf fpga size 40
itifg8[D0]: inf fpga k-alloc 0xd353dfc0
itifg8[D0]: inf fpga k-free 0xd353dfc0
itifg8[D0]: inf mbuf k-free 0xc85bda80
itifg8[D0]: inf sbuf k-free 0xc85bd180
itifg8[D0]: inf fbuf k-free 0xcea83000
itifg8[D0]: inf obuf k-free 0xc85bde40
itifg8[D0]: < iti_fill_info
itifg8[D0]: > iti_open: flags 0x1402 (RDWR)
itifg8[D0]: -> dma_open
itifg8[D0]: <- dma_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: irq_enable end (40000)
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: opmode: IDLE
itifg8[D0]: ACQ ist linked
itifg8[D0]: -> acq_open
itifg8[D0]: <- acq_open
itifg8[D0]: > iti_irq_enable
itifg8[D0]: < iti_irq_enable
itifg8[D0]: op assume: IDLE
itifg8[D0]: op accept: OPEN
itifg8[D0]: rlock:1 - wlock:1
itifg8[D0]: < iti_open: ok
itifg8[D0]: > iti_ioctl: GET_CAMCNF
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_intr: 0x20400 time: 530166us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: > iti_ioctl: SET_CAMCNF
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: > amcmp_config
itifg8[D0]: 1
itifg8[D0]: 2
itifg8[D0]: 3
itifg8[D0]: 4
itifg8[D0]: 5
itifg8[D0]: 6
itifg8[D0]: 7
itifg8[D0]: 8
itifg8[D0]: 9
itifg8[D0]: 10
itifg8[D0]: 11
itifg8[D0]: 12
itifg8[D0]: 13
itifg8[D0]: 14
itifg8[D0]: 15
itifg8[D0]: 16
itifg8[D0]: 17
itifg8[D0]: 18
itifg8[D0]: 20
itifg8[D0]: 21
itifg8[D0]: 22
itifg8[D0]: 23
itifg8[D0]: modid 0xe038
itifg8[D0]: mxctl 0xe004
itifg8[D0]: scl 0xe039
itifg8[D0]: sda 0xe001
itifg8[D0]: nptrig 0xe028
itifg8[D0]: npswtrig 0xe008
itifg8[D0]: bt829a : status 0x21
itifg8[D0]: bt829a : iform 0x58
itifg8[D0]: bt829a : tdec 0x00
itifg8[D0]: bt829a : crop 0x23
itifg8[D0]: bt829a : vdly_lo 0x1e
itifg8[D0]: bt829a : vact_lo 0x40
itifg8[D0]: bt829a : hdly_lo 0xa0
itifg8[D0]: bt829a : hact_lo 0x00
itifg8[D0]: bt829a : hscal_hi 0x03
itifg8[D0]: bt829a : hscal_lo 0x3c
itifg8[D0]: bt829a : bright 0x10
itifg8[D0]: bt829a : control 0x34
itifg8[D0]: bt829a : con_lo 0x3d
itifg8[D0]: bt829a : sat_u_lo 0xfe
itifg8[D0]: bt829a : sat_v_lo 0xb4
itifg8[D0]: bt829a : hue 0x00
itifg8[D0]: bt829a : scloop 0x40
itifg8[D0]: bt829a : reserved 0xcf
itifg8[D0]: bt829a : oform 0x86
itifg8[D0]: bt829a : vscale_hi 0x60
itifg8[D0]: bt829a : vscale_lo 0x00
itifg8[D0]: bt829a : reserved 0x01
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : idcode 0xe8
itifg8[D0]: bt829a : adly 0x7f
itifg8[D0]: bt829a : bdly 0x72
itifg8[D0]: bt829a : adc 0x80
itifg8[D0]: bt829a : vtc 0x40
itifg8[D0]: bt829a : reserved 0xc0
itifg8[D0]: > iti_intr: 0x20400 time: 564168us
itifg8[D0]: -> acq_intr: 0x0
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> dma_intr
itifg8[D0]: opmode: OPEN
itifg8[D0]: iti_intr: not all irqs recognized.
itifg8[D0]: (0x400)!
itifg8[D0]: < iti_intr
itifg8[D0]: bt829a : reserved 0x00
itifg8[D0]: bt829a : reserved 0x7f
itifg8[D0]: bt829a : sreset 0x70
itifg8[D0]: < amcmp_config
itifg8[D0]: -> acq_startup
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 16
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 1536
itifg8[D0]: frame size: 884736
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: <- acq_startup
itifg8[D0]: -> dma_startup
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 888832
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: <- dma_startup
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_NORM_TO8
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 768, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 0, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 768
itifg8[D0]: frame size: 442368
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 446464
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_HDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: horiz. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 576
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 0
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 221184
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 225280
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_VDEC
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: vert. decimation: 2
itifg8[D0]: -> acq_fmt_init
itifg8[D0]: width: 384, height: 288
itifg8[D0]: htaps: 1, vtaps : 1
itifg8[D0]: hdec : 1, vdec : 1
itifg8[D0]: bpp: 8
itifg8[D0]: ilace: TRUE
itifg8[D0]: line size: 384
itifg8[D0]: frame size: 110592
itifg8[D0]: <- acq_fmt_init
itifg8[D0]: -> dma_fmt_init
itifg8[D0]: frame size: 114688
itifg8[D0]: trail size: 4096
itifg8[D0]: <- dma_fmt_init
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_CAMERA
itifg8[D0]: outparam NULL
itifg8[D0]: opmode: OPEN
itifg8[D0]: opmode: OPEN
itifg8[D0]: camera: 0
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: SET_TIMEOUT
itifg8[D0]: outparam NULL
itifg8[D0]: timeout: 1000ms (HZ=1000)
itifg8[D0]: expire: 1250
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_WIDTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_HEIGHT
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_DEPTH
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_RAWSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_ioctl: GET_PAGEDSIZE
itifg8[D0]: inparam NULL
itifg8[D0]: < iti_ioctl: ok
itifg8[D0]: > iti_mmap: 4194304 byte(s)
itifg8[D0]: -> dma_mmap: 1024 pages
itifg8[D0]: buf init: 4194304 (SDMA)
itifg8[D0]: dma-area alloc 0xe2f02000
itifg8[D0]: buf alloc: 0xe2f02000
itifg8[D0]: area not locked, do it.
itifg8[D0]: v:0xe2f02000->b:0x11fdb000
itifg8[D0]: v:0xe3102000->b:0x12962000
itifg8[D0]: v:0xe3301000->b:0x13329000
itifg8[D0]: <- dma_mmap
itifg8[D0]: < iti_mmap: 0xe2f02000
itifg8[DX]: t:0xb7f8f000 4194304
itifg8[DX]: f:0xe3301000
itifg8[DX]: t:0xb7d8f000 2097152
itifg8[DX]: f:0xe3101000
itifg8[DX]: t:0xb7b90000 4096
itifg8[DX]: f:0xe2f02000
itifg8[D0]: > iti_lseek: to (+-)114688, SEEKEND
itifg8[D0]: -> dma_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf asize: 4128768by (36it)
itifg8[D0]: buf isize: 114688by
itifg8[D0]: 27 norm pages(s).
itifg8[D0]: 27 last pages(s).
itifg8[D0]: buf want: 114688by (1it)
itifg8[D0]: <- dma_lseek
itifg8[D0]: -> acq_lseek: APPEND.
itifg8[D0]: op assume: OPEN
itifg8[D0]: op accept: WORK
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: buf isize: 110592by
itifg8[D0]: frame size 110592
itifg8[D0]: -> 1 frame(s).
itifg8[D0]: block size 0 (whole frames)
itifg8[D0]: -> 1 block(s).
itifg8[D0]: => icp_src_init
itifg8[D0]: int for append mode
itifg8[D0]: base addr 0x0
itifg8[D0]: line_size 384
itifg8[D0]: frame_size 110592
BUG: unable to handle kernel NULL pointer dereference at virtual address
00000010
printing eip: e0ec2d8d *pde = 11fdc067 *pte = 00000000
Oops: 0002 [#1] SMP
Modules linked in: itifg8(U) nvidia(P)(U) nfs lockd nfs_acl sunrpc
rfcomm l2cap bluetooth autofs4 ipv6 dm_multipath dm_mod snd_intel8x0
snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event
snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer
firewire_ohci snd firewire_core e1000 button soundcore iTCO_wdt
crc_itu_t parport_pc iTCO_vendor_support parport i2c_i801 serio_raw
snd_page_alloc i2c_core joydev dcdbas floppy sr_mod sg cdrom ata_piix
ata_generic libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd ohci_hcd
ehci_hcd
CPU: 0
EIP: 0060:[<e0ec2d8d>] Tainted: P VLI
EFLAGS: 00010246 (2.6.23.15-137.fabien.fc8 #1)
EIP is at icp_src_init+0xfd/0x1c0 [itifg8]
eax: 00000000 ebx: 00000000 ecx: 00000010 edx: 00000010
esi: 00000000 edi: d27750dc ebp: dfe25314 esp: d5d2ef0c
ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
Process test_itifg (pid: 11449, ti=d5d2e000 task=c6b38610 task.ti=d5d2e000)
Stack: 01557000 00000001 e0ec2c90 dfe25314 dfe25338 dfe25300 e0ebdada
00000000
00000001 e0ebea2e 0001b000 00000400 00010078 0001c000 00010400
00200000
00000000 00000000 d2775000 00001402 e0ebad9f 00001402 0001c000
00000002
Call Trace:
[<e0ec2c90>] icp_src_init+0x0/0x1c0 [itifg8]
[<e0ebdada>] acq_lseek+0x42a/0x620 [itifg8]
[<e0ebea2e>] dma_lseek+0x8e/0x2f0 [itifg8]
[<e0ebad9f>] iti_lseek+0x14f/0x230 [itifg8]
[<e0ee3180>] iti_os_llseek+0x0/0x20 [itifg8]
[<e0ee3198>] iti_os_llseek+0x18/0x20 [itifg8]
[<c0480cd6>] vfs_llseek+0x35/0x39
[<c0481d2d>] sys_lseek+0x3c/0x66
[<c040518a>] syscall_call+0x7/0xb
=======================
Code: 80 7c 24 03 00 74 5f 46 3b 74 24 04 74 58 8b 17 8d 1c b5 00 00 00
00 89 d9 8b 42 2c 8b 52 30 01 c1 89 f0 0f af 45 20 03 44 24 1c <89> 04
1a 89 01 80 7d 00 00 74 b9 8b 45 18 85 c0 75 b2 ba 01 00
EIP: [<e0ec2d8d>] icp_src_init+0xfd/0x1c0 [itifg8] SS:ESP 0068:d5d2ef0c
itifg8[D0]: > iti_close: flags 0x1402
itifg8[D0]: rlock:0 - wlock:0
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> acq_close
itifg8[D0]: buf reset: 0by (0it)
itifg8[D0]: buf adjust: 0by (0it)
itifg8[D0]: <- acq_close
itifg8[D0]: del timer
itifg8[D0]: > iti_irq_disable
itifg8[D0]: < iti_irq_disable
itifg8[D0]: op assume: XXXX
itifg8[D0]: op accept: IDLE
itifg8[D0]: -> dma_close
itifg8[D0]: dma stop
itifg8[D0]: -> dma_munmap
itifg8[D0]: area is locked, unlock it.
itifg8[D0]: buf free: 0xe2f02000
itifg8[D0]: dma-area free 0xe2f02000
itifg8[D0]: buf fini
itifg8[D0]: <- dma_munmap
itifg8[D0]: <- dma_close
itifg8[D0]: < iti_close: ok
Fabien
M....@go... a écrit :
> Hello Fabien,
>
> the 'struct_module' isn't your problem. We have it here too (sometimes).
> It is only important for modinfo/modprobe and other module utilities.
> And the handling changes EVERY kernel version, so I give up sometimes :-(
>
> Also the 'invalid board pointer' isn't the problem. These messages are
> only generated during the initialization phase, most times when interrupts
> are shared.
>
> Please load the debugging module (itifg8_g.ko) and start the test_program:
> -t 1 (make only one image) is a useful option to not blast
> /var/log/messages.
>
> Please send me the full output including the 'NULL pointer access'.
>
> matthias
> _________________________________________________
> Matthias Stein,
> GOM Gesellschaft fuer Optische Messtechnik mbH,
> Mittelweg 7-8, 38106 Braunschweig, Germany
> E-mail: M....@go..., Internet: http://www.gom.com
> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>
>
> This e-mail is confidential. If you have received it in error, you are on
> notice of its status.
> Please notify us immediately by reply e-mail and delete this message from
> your system.
> Please do not copy it or use it for any purposes, or disclose its contents
> to any other person;
> to do so could be a breach of confidence.
> Thank you for your co-operation.
>
>
>
>
> Fabien Spindler
> <fspindle@irisa.f
> r> To
> M....@go...
> 04.03.2008 11:02 cc
> iti...@li...,
> Fabien Spindler
> <Fab...@ir...>
> Subject
> Re: [Itifg-tech] itifg-8.4.0-0
> released
>
>
>
>
>
>
>
>
>
>
> Matthias,
>
> I have rebuilt a 2.6.23 kernel to be able to precise the switches. Fo
> example switches for cmd_drivers/firewire/fw-card.o := gcc -m32
> -Wp,-MD,drivers/firewire/.fw-card.o.d -nostdinc -isystem
> /usr/lib/gcc/i386-redhat-linux/4.1.2/include -D__KERNEL__ -Iinclude
> -include include/linux/autoconf.h -Wall -Wundef -Wstrict-prototypes
> -Wno-trigraphs -fno-strict-aliasing -fno-common
> -Werror-implicit-function-declaration -Os -pipe -msoft-float -mregparm=3
> -freg-struct-return -mpreferred-stack-boundary=2 -march=i586
> -mtune=generic -mtune=generic -ffreestanding -maccumulate-outgoing-args
> -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1
> -Iinclude/asm-i386/mach-generic -Iinclude/asm-i386/mach-default
> -fomit-frame-pointer -fno-stack-protector -Wdeclaration-after-statement
> -Wno-pointer-sign -DMODULE -D"KBUILD_STR(s)=\#s"
> -D"KBUILD_BASENAME=KBUILD_STR(fw_card)"
> -D"KBUILD_MODNAME=KBUILD_STR(firewire_core)" -c -o
> drivers/firewire/fw-card.o drivers/firewire/fw-card.c
>
>
> After make config, in itifg-8.4.0-0/.system I have
> KFLAGS = -isystem /usr/lib/gcc/i386-redhat-linux/4.1.2/include -I.
> -I/lib/modules/2.6.23.15-137.fc8/build/include
> -I/lib/modules/2.6.23.15-137.fc8/build/include /asm-i386/mach-default
> -include linux/autoconf.h -D__KERNEL__ -DMODULE -D"KBUILD_STR(s)=\#s"
> -D"KBUILD_BASENAME=KBUILD_STR(itifg8)"
> -D"KBUILD_MODNAME=KBUILD_STR(itifg8)" -fno-strict-aliasing -fno-common
> -ffreestanding -fomit-frame-pointer -march=i686
> -mpreferred-stack-boundary=2
>
> As you suggest I have added -mregparm=3 and modified -march=i586.
>
> I have just seen that when I make static, I have the error
> make[1]: Entering directory
> `/local/soft/itifg/itifg-8.4.0-0.irisa/src/osdep'
> sh osLinux26.sh
> ERROR: "struct_module" [itifg8.ko] undefined!
>
> When I insmod src/osdep/itifg8.ko dmesg gives me a lot time the same error:
>
> itifg8[IX]: Shutdown logical device 0
> itifg8[IX]: Configure physical device 0
> itifg8[I0]: IC-PCI found
> ....
> itifg8[NX]: iti_intr: invalid board pointer.
> itifg8[NX]: (0xc46b6800)
> itifg8[NX]: iti_intr: invalid board pointer.
> itifg8[NX]: (0xc46b6800)
> itifg8[IX]: 1 physical device(s) found
> itifg8[IX]: Version 8.4.0-0 (build#22)
> itifg8[IX]: Mar 3 2008 (Linux 2.6.23.15-137.fc8).
>
>
> And when I run the test a get a segfault and a kernel panic
>
> genesis[15:48]%./test_itifg -f ../conffiles/robot.cam -d 8 -z 2 -p 2 -m -i
>
> Driver version: 8.4.0-0.
> Compilation Date: Mar 3 2008.
> Boards detected: 1.
> Module type board 0: AM-STD-COMP.
>
> 0 - conffile: ../conffiles/robot.cam
> 0 - savefile: test_itifg
> 0 - save: TRUE
> 0 - display: FALSE
> 0 - wait: FALSE
> 0 - useshm: TRUE
> 0 - match: TRUE
> 0 - contig: FALSE
> 0 - other: FALSE
> 0 - update: TRUE
> 0 - board: 0
> 0 - module: 7
> 0 - camera: 2
> 0 - depth: 8
> 0 - scales: 64
> 0 - buffer: 1
> 0 - frames: 2147483647
> 0 - zoom: 2
> 0 - rate: 1.00
> 0 - syncmd: block
> 0 - sacqmd: normal
> 0 - lutmd: blkwht
> CameraName : various cameras - PAL 768x576 fps:25 (8+8bit) Port 2.
> ExoFilename: .
>
> Image width: 384.
> Image height: 288.
> Image depth: 8.
> Source bits_per_pixel: 8.
> Source bytes_per_line: 384.
> Source pointer: 0xb7f90000.
> Source offset: 0.
> Incident de segmentation
> genesis[15:50]%
> Message from syslogd@genesis at Mar 3 15:50:31 ...
> kernel: Oops: 0002 [#1] SMP
>
> Message from syslogd@genesis at Mar 3 15:50:31 ...
> kernel: CPU: 0
>
> Message from syslogd@genesis at Mar 3 15:50:31 ...
> kernel: EIP: 0060:[<e0d26d2c>] Tainted: P VLI
>
> Message from syslogd@genesis at Mar 3 15:50:31 ...
> kernel: EFLAGS: 00210202 (2.6.23.15-137.fc8 #1)
>
>
> dmegs gives the following errors:
>
> itifg8[IX]: Version 8.4.0-0 (build#22)
> itifg8[IX]: Mar 3 2008 (Linux 2.6.23.15-137.fc8).
> BUG: unable to handle kernel NULL pointer dereference at virtual address
> 00000010
> printing eip: e0d26d2c *pde = 0bb86067 *pte = 00000000
> Oops: 0002 [#1] SMP
> Modules linked in: itifg8(U)
>
> I think, that the problem is due to the ERROR: "struct_module"
> [itifg8.ko] undefined! But I can't figure out how to modify the driver
> to suppress this error.
>
> If you have an idea...
> Many thanks
>
> PS: To be able to compile itifg-8.4.0.0 on a 2.6.23 kernel a have done
> some modifications in the code (see the attached patch).
>
> Fabien
>
>
> M....@go... a écrit :
>> Hello Fabien,
>>
>> this is the first call back into the kernel framework, that is done by
> the
>> init subroutine.
>>
>> Last time this happens, the compiler switches of the kernel and the itifg
>> doesn't match. Unfortunately I still don't use the kernels's module
>> compiling
>> support :-(
>>
>> To check whats happens, I need some idea, what switches the kernel wants.
>> The easiest way is to have one of the .*.cmd files, that are generated
> into
>> every kernel source directory. E.g. drivers/ieee1394/.ohci1394.o.cmd
>> Additional
>> to this your .system into the itifg directory is helpful.
>>
>> One switch, that I know to be problematic is -mregparm=3.
>>
>> matthias
>> _________________________________________________
>> Matthias Stein,
>> GOM Gesellschaft fuer Optische Messtechnik mbH,
>> Mittelweg 7-8, 38106 Braunschweig, Germany
>> E-mail: M....@go..., Internet: http://www.gom.com
>> Tel.: +49 (0)531 39029-0, Fax: +49 (0)531 39029-15
>> Amtsgericht Handelsregister Braunschweig, HRB-Nr.: 3131
>> Geschaeftsfuehrer: Dr.-Ing. K. Galanulis, Dr.-Ing. D. Winter
>>
>>
>> This e-mail is confidential. If you have received it in error, you are on
>> notice of its status.
>> Please notify us immediately by reply e-mail and delete this message from
>> your system.
>> Please do not copy it or use it for any purposes, or disclose its
> contents
>> to any other person;
>> to do so could be a breach of confidence.
>> Thank you for your co-operation.
>>
>>
>> iti...@li... wrote on 14.02.2008 15:48:16:
>>
>>> Hello Matthias,
>>>
>>> Thanks for this new version.
>>>
>>> I try to use it on a Fedora 8 (kernel 2.6.23.9-85.fc8 #1 SMP). I'm able
>>> to build the module, but when I insmod itifg8_g.ko dmesg gives the
>>> followings errors:
>>>
>>> itifg8[IX]: Debug output enabled
>>> itifg8[IX]: Debug level is 127 (0x7f)
>>> itifg8[DX]: >> iti_os_attach
>>> itifg8[DX]: >> before class_create() call
>>> BUG: unable to handle kernel paging request at virtual address 00200000
>>> printing eip: c04f6701 *pde = 17390067 *pte = 00000000
>>> Oops: 0000 [#1] SMP
>>> Modules linked in: itifg8(U) nfs lockd nfs_acl sunrpc rfcomm l2cap
>>> bluetooth autofs4 ipv6 dm_multipath dm_mod raw1394(U) video1394(U)
>>> snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss
>>> snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss nvidia(P)(U)
>>> ohci1394(U) snd_mixer_oss i2c_i801 iTCO_wdt ieee1394(U) e1000 snd_pcm
>>> parport_pc button iTCO_vendor_support i2c_core snd_timer snd dcdbas
>>> serio_raw parport soundcore joydev snd_page_alloc sg sr_mod floppy cdrom
>>> ata_generic ata_piix libata sd_mod scsi_mod ext3 jbd mbcache uhci_hcd
>>> ohci_hcd ehci_hcd
>>> CPU: 0
>>> EIP: 0060:[<c04f6701>] Tainted: P VLI
>>> EFLAGS: 00210297 (2.6.23.9-85.fc8 #1)
>>> EIP is at strnlen+0x6/0x15
>>> eax: 00200000 ebx: 00200000 ecx: 00200000 edx: fffffffe
>>> esi: d735841c edi: d738ce48 ebp: ffffffff esp: d738cdd4
>>> ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068
>>> Process insmod (pid: 2495, ti=d738c000 task=d72e0610 task.ti=d738c000)
>>> Stack: c04f5e01 ffffffff 00000000 e0e41565 d738ce20 dfe42400 e0e5a144
>>> 00000014
>>> d735841c 00e5a144 00000000 d7358430 ffffffff 00000000 c06a8b13
>>> d7358400
>>> d735841c d735841c d738ce48 c04f2fca d738ce48 d738ce48 d7358400
>>> fffffff4
>>> Call Trace:
>>> [<c04f5e01>] vsnprintf+0x2b7/0x484
>>> [<c04f2fca>] kobject_set_name+0x2b/0x92
>>> [<c0567bc6>] class_register+0x64/0x108
>>> [<c056819e>] class_create+0x40/0x56
>>> [<e0a6314d>] itifg_init+0x14d/0x3e4 [itifg8]
>>> [<c0449303>] __link_module+0x0/0x10
>>> [<c044ab86>] sys_init_module+0x150d/0x1651
>>> [<c04f1ea6>] _atomic_dec_and_lock+0x2a/0x44
>>> [<c04935c0>] mntput_no_expire+0x11/0x6a
>>> [<c040518a>] syscall_call+0x7/0xb
>>> =======================
>>> Code: c9 74 0c f2 ae 74 05 bf 01 00 00 00 4f 89 fa 5f 89 d0 c3 85 c9 57
>>> 89 c7 89 d0 74 05 f2 ae 75 01 4f 89 f8 5f c3 89 c1 89 c8 eb 06 <80> 38
>>> 00 74 07 40 4a 83 fa ff 75 f4 29 c8 c3 57 83 c9 ff 56 89
>>> EIP: [<c04f6701>] strnlen+0x6/0x15 SS:ESP 0068:d738cdd4
>>>
>>>
>>>
>>> The error seems produced by the line
>>> itifg_class = class_create (THIS_MODULE, ITI_DEV_STRING);
>>> in src/osdep/osLinux26.c in iti_os_attach().
>>>
>>> Do you have an idea ?
>>>
>>> Thanks
>>>
>>> Fabien
>>> --
>>> Fabien Spindler, Equipe Lagadic, Irisa - Inria
>>> Campus universitaire de Beaulieu 35042 Rennes cedex France
>>> Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
>>> E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
>>>
>>>
> -------------------------------------------------------------------------
>>> This SF.net email is sponsored by: Microsoft
>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>> _______________________________________________
>>> Itifg-tech mailing list
>>> Iti...@li...
>>> https://lists.sourceforge.net/lists/listinfo/itifg-tech
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> Itifg-tech mailing list
>> Iti...@li...
>> https://lists.sourceforge.net/lists/listinfo/itifg-tech
>>
>
>
> --
> Fabien Spindler, Equipe Lagadic, Irisa - Inria
> Campus universitaire de Beaulieu 35042 Rennes cedex France
> Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
> E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
> Index: config.sh
> ===================================================================
> RCS file: /udd/fspindle/robot/cvsroot/driver/itifg84/config.sh,v
> retrieving revision 1.1.1.1
> retrieving revision 1.2
> diff -u -8 -p -r1.1.1.1 -r1.2
> --- config.sh 28 Feb 2008 17:33:27 -0000 1.1.1.1
> +++ config.sh 28 Feb 2008 18:28:05 -0000 1.2
> @@ -1,16 +1,16 @@
> #!/bin/sh
> # ITI-FG Kernel module free public release
> #
> # Copyright (C) 1996-2004 GOM mbH.
> # Mittelweg 7-8, 38106 Braunschweig, GERMANY
> # All rights reserved
> #
> -# $Id: config.sh,v 1.1.1.1 2008/02/28 17:33:27 fspindle Exp $
> +# $Id: config.sh,v 1.2 2008/02/28 18:28:05 fspindle Exp $
> #
> #
>
> # set -x
>
> if [ -z $SYSTEM ]; then
> SYSTEM=`uname -s`
> fi
> @@ -52,23 +52,23 @@ Linux)
>
> fgrep 'CONFIG_HIGHMEM64G=y' $KSRCDIR/.config > /dev/null
> if [ $? -eq "0" ]; then
> echo -n "Please don't use the 64G option,"
> echo " this will not work proberly (32bit=4G)!"
> exit 1
> fi
>
> - echo -n " -nostdinc -isystem${GCCDIR}include" >> .system
> + echo -n " -isystem${GCCDIR}include" >> .system
> echo -n " -I. -I$KSRCDIR/include" >> .system
>
> fgrep 'CONFIG_X86_PC=y' $KSRCDIR/.config > /dev/null
> - if [ $? -eq "0" ]; then
> + #if [ $? -eq "0" ]; then
> echo -n " -I$KSRCDIR/include/asm-i386/mach-default" >> .system
> - fi
> + #fi
>
> echo -n " -include linux/autoconf.h" >> .system
>
> echo -n " -D__KERNEL__ -DMODULE" >> .system
> if [ $BUILD -lt "16" ]; then
> echo -n " -D\"KBUILD_BASENAME=itifg8\"" >> .system
> echo -n " -D\"KBUILD_MODNAME=itifg8\"" >> .system
> else
> Index: src/itifgOS.h
> ===================================================================
> RCS file: /udd/fspindle/robot/cvsroot/driver/itifg84/src/itifgOS.h,v
> retrieving revision 1.1.1.1
> retrieving revision 1.2
> diff -u -8 -p -r1.1.1.1 -r1.2
> --- src/itifgOS.h 28 Feb 2008 17:33:28 -0000 1.1.1.1
> +++ src/itifgOS.h 28 Feb 2008 18:28:13 -0000 1.2
> @@ -1,16 +1,16 @@
> /* ITI-FG Kernel module free public release
> *
> * Copyright (C) 1996-2004 GOM mbH.
> * Mittelweg 7-8, 38106 Braunschweig, GERMANY
> * All rights reserved
> *
> *
> - * $Id: itifgOS.h,v 1.1.1.1 2008/02/28 17:33:28 fspindle Exp $
> + * $Id: itifgOS.h,v 1.2 2008/02/28 18:28:13 fspindle Exp $
> *
> */
>
> #ifndef _ITIFGOS_H
> #define _ITIFGOS_H
>
> /*
> * Includes:
> @@ -197,17 +197,17 @@ typedef enum
> # define LOFF_F "%ld"
> # define SIZE_F "%ld"
> #endif
>
> /*
> * Typedefs:
> */
>
> -typedef char bool;
> +/*typedef char bool;*/
>
> /* which common resource should be protected */
> typedef enum
> {
> ITI_LOCK_IRQ, /* async pathes (irq handler, timout
> handler) */
> ITI_LOCK_OPM, /* operation mode */
> ITI_LOCK_BUF, /* buffer members */
> ITI_LOCK_REG, /* shared register sets */
> Index: src/osdep/osLinux26.c
> ===================================================================
> RCS file:
> /udd/fspindle/robot/cvsroot/driver/itifg84/src/osdep/osLinux26.c,v
> retrieving revision 1.1.1.1
> retrieving revision 1.3
> diff -u -8 -p -r1.1.1.1 -r1.3
> --- src/osdep/osLinux26.c 28 Feb 2008 17:33:30 -0000
> 1.1.1.1
> +++ src/osdep/osLinux26.c 29 Feb 2008 10:56:55 -0000
> 1.3
> @@ -1,15 +1,15 @@
> /* ITI-FG Kernel module free public release
> *
> * Copyright (C) 1996-2004 GOM mbH.
> * Mittelweg 7-8, 38106 Braunschweig, GERMANY
> * All rights reserved
> *
> - * $Id: osLinux26.c,v 1.1.1.1 2008/02/28 17:33:30 fspindle Exp $
> + * $Id: osLinux26.c,v 1.3 2008/02/29 10:56:55 fspindle Exp $
> *
> */
>
> #if defined(__alpha__) || defined(__sparc_v9__) || \
> defined(__ia64__) || defined(__x86_64__)
> # define ITI_IS64BIT /* one define for all 64bit machines */
> #endif
>
> @@ -55,16 +55,19 @@
>
> #include <linux/kdev_t.h> /* MAJOR / MINOR */
> #include <linux/major.h> /* MAX_CHRDEV */
> #include <linux/device.h> /* class_device_register */
>
> #include <linux/pci.h> /* pci_register_driver */
> #include <linux/dma-mapping.h> /* dma abstraction laver */
> #include <linux/proc_fs.h> /* proc filesystem defines */
> +#if LINUX_VERSION_CODE >= 0x020617 /* 2.6.23 */
> +#include <linux/freezer.h> /* try_to_freeze() */
> +#endif
>
> #if LINUX_VERSION_CODE < 0x02060c /* 2.6.12 */
> #include <linux/suspend.h> /* refigerator */
> #endif
>
> #if LINUX_VERSION_CODE < 0x020609
> #error "Only kernel 2.6 - starting with .9 - is supported!" /* vprintk! */
> #endif
> @@ -185,18 +188,24 @@ struct iti_osp_t
> struct semaphore hotplug_run;
> struct completion hotplug_done;
> };
>
> /*
> * Prototypes:
> */
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> static irqreturn_t
> iti_os_interrupt (int, void*, struct pt_regs*);
> +#else
> +static irqreturn_t
> +iti_os_interrupt (int, void*);
> +#endif
> +
> static void
> iti_os_timeout (u_long);
>
> static int
> iti_os_open (struct inode*, struct file*);
> static int
> iti_os_release (struct inode*, struct file*);
> static ssize_t
> @@ -1527,18 +1536,23 @@ iti_noprint (struct iti_osp_t *osp, cons
> }
>
> /*
> -------------------------------------------------------------------------
> */
>
> /*
> * iti_os_interrupt
> */
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> static irqreturn_t
> iti_os_interrupt (int irq, void *dev_id, struct pt_regs *regs)
> +#else
> +static irqreturn_t
> +iti_os_interrupt (int irq, void *dev_id)
> +#endif
> {
> itifg_t *iti = (itifg_t*)dev_id;
>
> #if (0)
> if (irq != iti->osp->irq_line)
> {
> iti_printn (iti->osp, "device irq does not match!\n");
> return 0;
> @@ -2188,24 +2202,35 @@ iti_os_pci_init (struct iti_osp_t *osp,
> if (osp->irq_line == 0 || osp->irq_line == 255)
> {
> osp->irq_line = 255;
> iti_printw (osp, "interrupt disabled!\n");
> return -EINVAL;
> }
>
> /* register interrupt line */
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> if ((error = request_irq (osp->irq_line,
> &iti_os_interrupt,
> SA_SHIRQ,
> ITI_IRQ_STRING, iti)))
> if ((error = request_irq (osp->irq_line,
> &iti_os_interrupt,
> SA_INTERRUPT | SA_SHIRQ,
> ITI_IRQ_STRING, iti)))
> +#else
> + if ((error = request_irq (osp->irq_line,
> + &iti_os_interrupt,
> + IRQF_SHARED,
> + ITI_IRQ_STRING, iti)))
> + if ((error = request_irq (osp->irq_line,
> + &iti_os_interrupt,
> + IRQF_DISABLED | IRQF_SHARED,
> + ITI_IRQ_STRING, iti)))
> +#endif
> {
> iti_printw (osp, "'request_irq' (intr. %d) failed.\n",
> osp->irq_line);
> return error;
> }
>
> #if defined(__powerpc__)
> {
> @@ -2546,20 +2571,23 @@ iti_os_detach_single (struct pci_dev *de
>
> ITI_PRINT0(NULL, "<< iti_os_detach_single\n");
> return;
> }
>
> static int
> itifg_pci_resume (struct pci_dev *dev)
> {
> + int retval = 0;
> pci_restore_state (dev);
> - pci_enable_device (dev);
> + retval = pci_enable_device (dev);
> + if (retval)
> + iti_printn (NULL, "pci_enable_device failed in resume.\n");
>
> - return 0;
> + return retval;
> }
>
> static void
> itifg_pci_remove(struct pci_dev *dev)
> {
> iti_os_detach_single (dev);
> }
>
> @@ -2654,19 +2682,23 @@ iti_os_detach (void)
>
> pboard = lboard = 0;
>
> remove_proc_entry (ITI_PFS_STRING, NULL);
>
> /* do board by board deinit with kernel iterator function */
> pci_unregister_driver (&itifg_pci_driver);
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> if (unregister_chrdev (major, ITI_DEV_STRING) < 0)
> iti_printw (NULL, "'unregister_chrdev' (device %d) failed.\n", major);
> -
> +#else
> + unregister_chrdev (major, ITI_DEV_STRING);
> +#endif
> +
> #if LINUX_VERSION_CODE < 0x02060c /* 2.6.12 */
> class_simple_destroy (itifg_class);
> #else
> class_destroy (itifg_class);
> #endif
>
> iti_os_tty_detach ();
>
> Index: src/osdep/osLinux26.sh
> ===================================================================
> RCS file:
> /udd/fspindle/robot/cvsroot/driver/itifg84/src/osdep/osLinux26.sh,v
> retrieving revision 1.1.1.1
> retrieving revision 1.2
> diff -u -8 -p -r1.1.1.1 -r1.2
> --- src/osdep/osLinux26.sh 28 Feb 2008 17:33:30 -0000
> 1.1.1.1
> +++ src/osdep/osLinux26.sh 28 Feb 2008 18:28:13 -0000
> 1.2
> @@ -69,17 +69,17 @@ if [ ! -x $MODP ]; then
> echo "modpost utility not found, exiting..."
> exit 1
> fi
>
> for i in $FILES; do
> if [ "$NEWONE" -lt 1 ]; then
> $MODP ${i}.o
> else
> - $MODP -m -i ${KSRC}/Module.symvers ${KSRC}/vmlinux ${i}.o -o
> ${i}.symvers
> + $MODP -m -i ${KSRC}/Module.symvers ${i}.o -o ${i}.symvers
> fi
> make ${i}.mod.o
> if [ $? -ne 0 ]; then
> exit 1
> fi
> ld -r -o ${i}.ko ${i}.o ${i}.mod.o
> done
>
> Index: src/osdep/osLinux26TTY.c
> ===================================================================
> RCS file:
> /udd/fspindle/robot/cvsroot/driver/itifg84/src/osdep/osLinux26TTY.c,v
> retrieving revision 1.1.1.1
> retrieving revision 1.2
> diff -u -8 -p -r1.1.1.1 -r1.2
> --- src/osdep/osLinux26TTY.c 28 Feb 2008 17:33:30 -0000
> 1.1.1.1
> +++ src/osdep/osLinux26TTY.c 29 Feb 2008 10:56:55 -0000
> 1.2
> @@ -1,15 +1,15 @@
> /* ITI-FG Kernel module free public release
> *
> * Copyright (C) 1996-2004 GOM mbH.
> * Mittelweg 7-8, 38106 Braunschweig, GERMANY
> * All rights reserved
> *
> - * $Id: osLinux26TTY.c,v 1.1.1.1 2008/02/28 17:33:30 fspindle Exp $
> + * $Id: osLinux26TTY.c,v 1.2 2008/02/29 10:56:55 fspindle Exp $
> *
> */
>
> /*
> * Includes:
> */
>
> #include <linux/version.h>
> @@ -30,17 +30,21 @@
> /*
> * Globals:
> */
>
> static struct tty_driver iti_tdrv;
>
> static struct tty_struct **iti_ttys = NULL, **iti_int_ttys = NULL;
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> static struct termios **iti_termios = NULL, **iti_termios_locked = NULL;
> +#else
> +static struct ktermios **iti_termios = NULL, **iti_termios_locked = NULL;
> +#endif
>
> /* static */ char x_char; /* FIXME */
>
> /*
> * Prototypes:
> */
>
> static int
> @@ -195,18 +199,23 @@ iti_os_tty_stop (struct tty_struct *ttys
> {
> }
>
> static void
> iti_os_tty_start (struct tty_struct *ttys)
> {
> }
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> static void
> iti_os_tty_set_termios (struct tty_struct *ttys, struct termios *old)
> +#else
> +static void
> +iti_os_tty_set_termios (struct tty_struct *ttys, struct ktermios *old)
> +#endif
> {
> iti_file_t file;
> iti_devno_t devno;
>
> union iti_inparam_t inparam;
>
> if (iti_os_tty_encode_devno (&devno, ttys->index))
> return;
> @@ -367,30 +376,47 @@ iti_os_tty_attach (int boards)
> sizeof(struct tty_struct*),
> GFP_KERNEL);
> if (!iti_ttys) return -ENOMEM;
> ITI_PRINT3(NULL, " ttys: 0x%p\n", iti_ttys);
> memset (iti_ttys, 0, num_devices * sizeof(struct tty_struct*));
>
> iti_tdrv.ttys = iti_ttys;
>
> +#if LINUX_VERSION_CODE < 0x020617 /* 2.6.23 */
> ITI_PRINT3(NULL, " termios: %d\n", num_devices * sizeof(struct
> termios*));
> iti_termios = (struct termios**)kmalloc (num_devices *
> sizeof(struct termios*),
> GFP_KERNEL);
> if (!iti_termios) return -ENOMEM;
> ITI_PRINT3(NULL, " termios: 0x%p\n", iti_termios);
> memset (iti_termios, 0, num_devices * sizeof(struct termios*));
>
> iti_termios_locked = (struct termios**)kmalloc (num_devices *
> sizeof(struct termios*),
> GFP_KERNEL);
> if (!iti_termios_locked) return -ENOMEM;
> ITI_PRINT3(NULL, " termios l: 0x%p\n", iti_termios_locked);
> memset (iti_termios_locked, 0, num_devices * sizeof(struct termios*));
> +#else
> + ITI_PRINT3(NULL, " termios: %d\n", num_devices * sizeof(struct
> ktermios*));
> + iti_termios = (struct ktermios**)kmalloc (num_devices *
> + sizeof(struct ktermios*),
> + GFP_KERNEL);
> + if (!iti_termios) return -ENOMEM;
> + ITI_PRINT3(NULL, " termios: 0x%p\n", iti_termios);
> + memset (iti_termios, 0, num_devices * sizeof(struct ktermios*));
> +
> + iti_termios_locked = (struct ktermios**)kmalloc (num_devices *
> + sizeof(struct
> ktermios*),
> + GFP_KERNEL);
> + if (!iti_termios_locked) return -ENOMEM;
> + ITI_PRINT3(NULL, " termios l: 0x%p\n", iti_termios_locked);
> + memset (iti_termios_locked, 0, num_devices * sizeof(struct ktermios*));
> +#endif
>
> iti_tdrv.termios = iti_termios;
> iti_tdrv.termios_locked = iti_termios_locked;
> iti_tdrv.driver_state = NULL;
>
> iti_tdrv.open = iti_os_tty_open;
> iti_tdrv.close = iti_os_tty_close;
> iti_tdrv.write = iti_os_tty_write;
>
>
>
>
--
Fabien Spindler, Equipe Lagadic, Irisa - Inria
Campus universitaire de Beaulieu 35042 Rennes cedex France
Tel: +33 2.99.84.75.10, Fax: +33 2.99.84.71.71
E-mail: Fab...@ir..., web: http://www.irisa.fr/lagadic
|