Hi Alexis,
Thanks a lot !!
I switched to the analogy branch, configured the kernel to build the analogy
kernel moduels and compiled it. However, here is what I get:
r...@xenomai:~# dmesg
...snip...
[ 11.413779] Comedi: MITE: Available NI device IDs: 0x717f(used)
[ 11.430558] analogy_8255: module license 'unspecified' taints kernel.
[ 11.430561] Disabling lock debugging due to kernel taint
[ 11.459390] analogy_ni_mio: Unknown symbol ni_tio_handle_interrupt
[ 11.459441] analogy_ni_mio: Unknown symbol ni_tio_set_mite_channel
[ 11.459577] analogy_ni_mio: Unknown symbol ni_tio_cmd_mask
[ 11.459805] analogy_ni_mio: Unknown symbol ni_tio_init_counter
[ 11.459856] analogy_ni_mio: Unknown symbol ni_tio_winsn
[ 11.459997] analogy_ni_mio: Unknown symbol ni_gpct_device_destroy
[ 11.460047] analogy_ni_mio: Unknown symbol ni_tio_insn_config
[ 11.460328] analogy_ni_mio: Unknown symbol ni_tio_acknowledge_and_confirm
[ 11.460419] analogy_ni_mio: Unknown symbol ni_tio_cmdtest
[ 11.460511] analogy_ni_mio: Unknown symbol ni_tio_cancel
[ 11.460567] analogy_ni_mio: Unknown symbol ni_gpct_device_construct
[ 11.460688] analogy_ni_mio: Unknown symbol ni_tio_rinsn
[ 11.460737] analogy_ni_mio: Unknown symbol ni_tio_cmd
...snip...
r...@xenomai:~# lspci -v
...snip...
06:00.0 Class ff00: National Instruments Device 717f
Flags: bus master, medium devsel, latency 64, IRQ 11
Memory at f7dfe000 (32-bit, non-prefetchable) [size=4K]
Memory at f7dff000 (32-bit, non-prefetchable) [size=4K]
Kernel driver in use: mite
Kernel modules: analogy_ni_pcimio
...snip...
r...@xenomai:~# lsmod | grep analogy
analogy_ni_tio 26852 0
analogy_8255 4388 0
analogy_ni_mite 12644 1 analogy_ni_tio
xeno_analogy 39108 3 analogy_ni_tio,analogy_8255,
analogy_ni_mite
I don't really know how to use analogy_config... since
r...@xenomai:/usr/xenomai/sbin# ./analogy_config analogy0 analogy_ni_mite
comedi_config: comedi_snd_attach failed ret=-22
when I run
r...@xenomai:/usr/xenomai/bin# ./cmd_read
cmd_read: a4l_fill_desc failed (ret=-22)
*** glibc detected *** ./cmd_read: free(): invalid next size (fast):
0x08052008 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7f5f604]
/lib/tls/i686/cmov/libc.so.6(cfree+0x96)[0xb7f615b6]
./cmd_read[0x80496ae]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7f06775]
./cmd_read[0x8048f41]
======= Memory map: ========
08048000-0804e000 r-xp 00000000 08:01 13109565 /usr/xenomai/bin/cmd_read
0804e000-0804f000 r--p 00005000 08:01 13109565 /usr/xenomai/bin/cmd_read
0804f000-08050000 rw-p 00006000 08:01 13109565 /usr/xenomai/bin/cmd_read
08050000-08073000 rw-p 00000000 00:00 0 [heap]
b7d00000-b7d21000 rw-p 00000000 00:00 0
b7d21000-b7e00000 ---p 00000000 00:00 0
b7ecf000-b7edc000 r-xp 00000000 08:01 11894849 /lib/libgcc_s.so.1
b7edc000-b7edd000 r--p 0000c000 08:01 11894849 /lib/libgcc_s.so.1
...
which is I guess due to the unsuccessful analogy_config. My question is,
which driver do I have to use ?
Thanks,
peter
On Thu, Oct 22, 2009 at 11:49 PM, Alexis Berlemont
<[email protected]>wrote:
> Hi,
>
> On Thu, Oct 22, 2009 at 7:30 AM, Peter Pastor <[email protected]>
> wrote:
> > Hi Alexis,
> >
> > Sorry for the delay, I was out of town.
> >
> > I have tried the statical configuration and it seemed to work, i.e. I
> could
> > execute the example program /usr/xenomai/bin/cmd_read. However, I wanted
> to
> > run the task in real-time and added the -r option which results in
> > r...@xenomai:/usr/xenomai/bin# ./cmd_read -vr
> > cmd_read: switching to real-time mode
> > cmd_read: device comedi0 opened (fd=0)
> > cmd_read: basic descriptor retrieved
> > subdevices count = 14
> > read subdevice index = 0
> > write subdevice index = 1
> > cmd_read: complex descriptor retrieved
> > cmd_read: channel 0
> > ranges count = 7
> > range's size = 16 (bits)
> > cmd_read: channel 1
> > ranges count = 7
> > range's size = 16 (bits)
> > cmd_read: channel 2
> > ranges count = 7
> > range's size = 16 (bits)
> > cmd_read: channel 3
> > ranges count = 7
> > range's size = 16 (bits)
> > cmd_read: scan size = 8
> > cmd_read: size to read = 800
> > cmd_read: command successfully sent
> > 0xff 0xff 0xff 0xff 0xff 0xff 0x81 0xf9
> > 0xff 0xff 0xff 0xff 0xff 0xff 0xca 0xfb
> > ...snip...
> > 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
> > cmd_read: comedi_read failed (ret=-2)
>
> -2 is -ENOENT, which means there is nothing more to acquire. The
> return code should have been 0 but I 'd rather send -2, which is not
> very compliant. It is something I need to work on.
>
> > The cmd_write however, seems to work
> >
> > r...@xenomai:/usr/xenomai/bin# ./cmd_write -rv
> > cmd_write: switching to real-time mode
> > cmd_write: device comedi0 opened (fd=0)
> > cmd_write: basic descriptor retrieved
> > subdevices count = 14
> > read subdevice index = 0
> > write subdevice index = 1
> > cmd_write: complex descriptor retrieved
> > cmd_write: channel 0
> > ranges count = 3
> > range's size = 16 (bits)
> > cmd_write: channel 1
> > ranges count = 3
> > range's size = 16 (bits)
> > cmd_write: scan size = 4
> > cmd_write: size to write = 400
> > cmd_write: command successfully sent
> > cmd_write: 400 bytes successfully written
> >
> > also...
> > r...@xenomai:/usr/xenomai/bin# ./insn_read -rv
> > insn_read: switching to real-time mode
> > insn_read: device (null) opened (fd=0)
> > insn_read: basic descriptor retrieved
> > subdevices count = 14
> > read subdevice index = 0
> > write subdevice index = 1
> > insn_read: complex descriptor retrieved
> > insn_read: channel width is 16 bits
> > insn_read: global scan size is 20
> > 0xff 0xff
> > 0x0 0x0
> > 0xff 0xff
> > 0x0 0x0
> > 0xff 0xff
> > 0x0 0x0
> > 0xff 0xff
> > 0x0 0x0
> > 0xff 0xff
> > 0x0 0x0
> > insn_read: 20 bytes successfully received
> >
> > What I would like to make sure is that I can write to comedi0 without
> having
> > mode switches. Therefore I copied cmd_write and added a rt_task_spawn to
> > make sure that the task_body runs in real-time (even though the -r option
> > results in the same behavior.) This way, I could add/change code to check
> > for mode switches... However, since unfortunately I am debugging things
> > remotely I cannot "see" the output (the display) of our oscilloscope that
> is
> > connected to the pci express card. I'll send an email as soon as I know
> > more.
>
> Be careful with the printf() I inserted in the test programs cmd_read,
> cmd_write; they will make you switch in the secondary domain.
>
> > Besides that, I updated to your latest xenomai and re-compiled having the
> > comedi drivers compiled as loadable modules. After booting the new kernel
> I
> > can see the following:
> >
> > xenomai:~> uname -a
> > Linux xenomai 2.6.30.5-xenomai-ipipe-comedi #6 SMP Wed Oct 21 20:05:37
> PDT
> > 2009 i686 GNU/Linux
> > xenomai:~> lspci -v
> > ...snip...
> > 06:00.0 Class ff00: National Instruments Device 717f
> > Flags: bus master, medium devsel, latency 64, IRQ 11
> > Memory at f7dfe000 (32-bit, non-prefetchable) [size=4K]
> > Memory at f7dff000 (32-bit, non-prefetchable) [size=4K]
> > Kernel driver in use: mite
> > Kernel modules: comedi_ni_pcimio
> > ...snip...
> > xenomai:~> lsmod | grep come
> > comedi_ni_tio 26884 0
> > comedi_8255 4420 0
> > comedi_ni_mite 12708 1 comedi_ni_tio
> > xeno_comedi 39908 3 comedi_ni_tio,comedi_8255,comedi_ni_mite
> >
> >
> > However, the problem is that there is:
> >
> > r...@xenomai:/usr/xenomai/sbin# ./comedi_config comedi0 comedi_pcimio
> > comedi_config: comedi_snd_attach failed ret=-22
> >
> > also...
> >
> > r...@xenomai:/usr/xenomai/sbin# ./comedi_config comedi0 comedi_ni_mite
> > comedi_config: comedi_snd_attach failed ret=-22
> >
> > r...@xenomai:/usr/xenomai/sbin# dmesg
> > ...snip...
> > [ 11.298460] Comedi: MITE: Available NI device IDs: 0x717f(used)
> > [ 11.305333] comedi_8255: module license 'unspecified' taints kernel.
> > [ 11.305337] Disabling lock debugging due to kernel taint
> > [ 11.331840] comedi_ni_mio: Unknown symbol ni_tio_handle_interrupt
> > [ 11.331936] comedi_ni_mio: Unknown symbol ni_tio_set_mite_channel
> > [ 11.331986] comedi_ni_mio: Unknown symbol ni_tio_cmd_mask
> > [ 11.332171] comedi_ni_mio: Unknown symbol ni_tio_init_counter
> > [ 11.332317] comedi_ni_mio: Unknown symbol ni_tio_winsn
> > [ 11.332416] comedi_ni_mio: Unknown symbol ni_gpct_device_destroy
> > [ 11.332466] comedi_ni_mio: Unknown symbol ni_tio_insn_config
> > [ 11.332696] comedi_ni_mio: Unknown symbol
> ni_tio_acknowledge_and_confirm
> > [ 11.332786] comedi_ni_mio: Unknown symbol ni_tio_cmdtest
> > [ 11.332921] comedi_ni_mio: Unknown symbol ni_tio_cancel
> > [ 11.332976] comedi_ni_mio: Unknown symbol ni_gpct_device_construct
> > [ 11.333139] comedi_ni_mio: Unknown symbol ni_tio_rinsn
> > [ 11.333189] comedi_ni_mio: Unknown symbol ni_tio_cmd
> > ...snip...
> >
> > How can I fix this ? Or should I simply work with the statical linked
> comedi
> > drivers ??
>
> I will update my git repository soon with these fixes. However, could
> you switch to the analogy branch ? As you may know, comedi/RTDM has
> been renamed as analogy:
> https://mail.gna.org/public/xenomai-core/2009-09/msg00016.html
>
> Alexis.
>
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help