Data Acquisition with FreeBSD
Murray Stokely <murray@FreeBSD.org>
This page describes some of the work that I have done with data acquisition devices and FreeBSD.
I wrote a driver for the PCI E-series cards from NI. This driver currently supports Analog Input and Digital I/O. I haven't added support for the general purpose counter/timers yet (useful to do staged analog acquisitions) and unfortunately the driver does not do DMA yet. I have been in contact with at least 10 different representatives at National Instruments in an effort to obtain programming information for the mMITE chip. Some NI engineers are writing some code for the Comedi project that I might be able to pick up if all else fails.
Anyway, this driver has only been tested on a PCI-6023E under -current but it should work for many other devices as well. This is alpha-quality code but "it works for me".
April 7, 2001 snapshot - This snapshot offers partial (ie "broken") support for DMA transfers.
|Vendor||Model||Analog Input||Analog Outpu||Other||Cost|
|National Instruments||PCI-6023E||16 channels, 12bit, 200kS/s||None||DMA, 8 digital I/O, 2 24bit counters||$395|
|National Instruments||PCI-6024E||16 channels, 12bit, 200kS/s||2 channels, 12 bit||DMA, 8 digital I/O, 2 24bit counters||$595|
|National Instruments||PCI-6025E||16 channels, 12bit, 200kS/s||2 channels, 12 bit||DMA, 32 digital I/O, 2 24bit counters||$695|
|National Instruments||PCI-6034E||16 channels, 16bit, 200kS/s||None||DMA, 8 digital I/O, 2 24bit counters||$595|
|National Instruments||PCI-6035E||16 channels, 16bit, 200kS/s||2 channels, 12 bit||DMA, 8 digital I/O, 2 24bit counters||$795|
|Measurement Computing (ComputerBoards)||PCI-DAS08||8 channels, 12bit, 50KHz||none||7 digital I/O, 3 16bit counters||$249|
|Measurement Computing (ComputerBoards)||
The ComputerBoards PCI DAQ cards are not interesting to me because only the > $1000 models do DMA and my CPU has better things to do than service programmed I/O interrupts several hundred times a second.
|Adlink Technology||PCI-9112||16 channels, 12bit, 110KHz||2 channels, 12bit||DMA, 16 digital in, 16 digital out, 8254 16bit counter||$659|
LabVIEW is a graphical programming language that uses icons instead of lines of text to create applications. In LabVIEW, you build a user interface by using a set of tools and objects. The user interface is known as a front panel. You then add code using graphical representations of functions to control the front panel objects. The "block diagram" contains this code. If organized properly, the block diagram resembles a flowchart. You can think of LabVIEW as a RAD tool specifically for data acquisition. Using LabVIEW you can make very complex virtual instruments, such as an oscilliscope, very quickly.
LabVIEW Front Panel
LabVIEW Block Diagram
There is a lot of really cool stuff going on in this area in the Linux camp.
Comedi - The Comedi project is a standard of sorts for data acquisition under Linux. This project supports many different types of data acquisition hardware with a single interface. Unfortunately the code is very Linux-centric, GPLed, and at times very difficult to read (poking magic numbers everywhere instead of symbolic constants). I am on the Comedi mailing list and am actively seeking ways to cooperate with this group.
The Linux Lab Project - Data collection and process control software for Linux - links to lots of interesting applications.
Email : firstname.lastname@example.org