User Tools

Site Tools


ds:comedi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
ds:comedi [2015/08/04 11:24]
tmilosic created
ds:comedi [2015/08/06 11:45]
tmilosic
Line 1: Line 1:
 ====== Comedi - The Linux Control and Measurement Device Interface  ====== ====== Comedi - The Linux Control and Measurement Device Interface  ======
  
 +[[http://www.comedi.org|Comedi]] provides a common Linux interface to certain DAQ hardware, \\
 +typical PCI digital and analog I/O cards and is actively developed since 1998.
  
 +It consists of 
 +  * Linux drivers
 +  * Comedilib
 +  * Kcomedilib
 +
 +==== Drivers ====
 +
 +The newest sources for the Comedi and driver modules\\
 +are available from the official Git repository.
 +
 +  git clone git://comedi.org/git/comedi/comedilib.git
 +  
 +Use //autotools// to generate the //configure// script
 +
 +  ./autogen.sh
 +  
 +To display all available options
 +
 +  ./configure --help
 +  
 +[The following assumes you're in a maintenance chroot and are\\
 +installing the modules directly to the diskless system.\\
 +If you want to build and install the drivers to a different \\
 +directory, for example '/srv/diskless/fec/arch/L866_64/lib/<kernel-version>/'\\
 +you have to specify --with-modulesdir=<DIR>]
 +
 +Assembling the Makefile for 64-bit Linux 3.10.82-rt89 with RT preempt patch
 +  
 +  ./configure --with-rtlinuxdir=/usr/src/kernels/3.10.82-rt89 \
 +              --with-kernel-release=3.10.82-rt89 --with-rpm-target=x86_64
 +
 +Compiling
 +
 +  make
 +  
 +Installing
 +
 +  make install
 +
 +This will install the modules to
 +
 +  /lib/modules/<kernel-version>/...
 +  
 +where kernel-version is 3.10.82-rt89 in this example.
 +
 +
 +=== Linux In-Tree Comedi Support ===
 +
 +Comedi and available drivers are also integrated into the Linux kernel \\
 +since 2.6.30 located in the experimental staging tree.\\
 +
 +This might be the best choice unless the kernel version of choice\\
 +lacks required hardware support or contains bugs stopping its use.\\
 +In that case we should use the out-of-tree Git version as described above.\\
 +
 +To enable Comedi and build the //comedi// module, setup the \\
 +kernel configuration as follows:
 +
 +  Device Drivers [*]
 +      Staging drivers [*]
 +          Data acquisition support <M>
 +This ensures the built of the comedi module only.\\
 +To actually make use of the supported hardware,\\
 +the comedi //driver(s)// need to be set to build.\\
 +
 +Taking the [[ds:io_addi_data_cards|ADDI-DATA I/O PCI card 1648]] for example,\\
 +activate the //Comedi PCI drivers// section and set the appropriate driver. 
 +
 +              Comedi PCI drivers [*]
 +                  ADDI-DATA APCI_16xx support <M>
 +
 +This will built the driver module addi_apci_16xx,\\
 +which depends on the comedi module. \\
 +
 +When loaded, lsmod shows something like:
 +
 +  comedi                 46649  1 addi_apci_16xx
 +
 +Every device gets a separate //comedi[0-9]+// node in the device tree.\\
 +Assuming only one card in this example
 +
 +  crw-rw---- 1 root root 98, 0 Aug  4  2015 /dev/comedi0
 +  
 +To access the device, use the library Comedilib for user-space applications\\
 +or Kcomedilib for real-time kernel modules making use of Comedi hardware.
 +
 +==== Comedilib ====
 +
 +Comedilib needs to be installed manually either via Git
 +  git clone git://comedi.org/git/comedi/comedi.git
 +or by getting the latest stable release tarball from the Comedi page
 +  wget http://www.comedi.org/download/comedilib-0.10.2.tar.gz
 +At time of writing 0.10.2 was the latest stable release.
 +
 +  > comedi_board_info
 +
 +  overall info:
 +    version code: 0x00074c
 +    driver name: addi_apci_16xx
 +    board name: apci1696
 +    number of subdevices: 3
 +  subdevice 0:
 +    type: 5 (digital I/O)
 +    flags: 0x00030000
 +    number of channels: 32
 +    max data value: 1
 +    ranges:
 +      all chans: [0,5]
 +    command:
 +      not supported
 +  subdevice 1:
 +    type: 5 (digital I/O)
 +    flags: 0x00030000
 +    number of channels: 32
 +    max data value: 1
 +    ranges:
 +      all chans: [0,5]
 +    command:
 +      not supported
 +  subdevice 2:
 +    type: 5 (digital I/O)
 +    flags: 0x00030000
 +    number of channels: 32
 +    max data value: 1
 +    ranges:
 +      all chans: [0,5]
 +    command:
 +      not supported 
 +    
 +==== Kcomedilib ====
 +
 +Kcomedilib provides the Comedilib interface to the kernel space.\\
 +This is useful when writing real-time kernel modules that need\\
 +access to Comedi devices.
 +
 +==== Resources =====
ds/comedi.txt · Last modified: 2015/08/06 16:07 by tmilosic