Linux device driver for the Compumotor AT6200/AT6400 indexers

by Charles M. "Chip" Coldwell
Last updated Sep 17, 2003

The archive contains a Linux device driver and utility programs for the Parker-Hannifin Compumotor AT6200/AT6400 bus-based stepper motor indexers. These indexers are analogous to the standalone 6000 series indexers, except that instead of communicating with the host computer via a serial port, they plug right into an ISA slot and communicate over the bus. This difference is the reason the AT6200/AT6400 indexers require a device driver.

On Red Hat Linux systems, probably the easiest way to install this driver is to build an "rpm" package by running the command (as root)

# rpm -tb at6n00-1.0.1.tar.gz
and then install it with
# rpm -Uvh /usr/src/redhat/RPMS/i386/at6n00-1.0.1-1.i386.rpm
After doing this, you should check the options configured (device major, port and irq numbers) for the device in /etc/modules.conf to make sure they match the settings on the hardware and that they don't conflict with resources used by other devices in the system (remember, this is an ISA device, and not Plug-n-Pray). The default device major number configured by the rpm (60) is taken from the local/experimental range (see /usr/src/linux-2.4/Documentation/devices.txt).

The AT6200/AT6400 indexers depend on the host computer to download an operating system to them before they can do anything useful. This operating system is distributed on a floppy with the indexers, usually in a file named something like "AT6400.OPS". If you install the rpm as described above, it will add a startup script in /etc/rc.d/init.d that does this automatically on boot using the osload program that comes with the package. Otherwise, you must load the operating system manually with a command such as

$ osload /usr/etc/AT6400.OPS /dev/at6n00a

The device driver provides open, read, write, ioctl, poll, fsync, fasync and close methods and can be configured for blocking or non-blocking as well as asynchronous I/O. The device driver also provides ioctls for programming the Xilinx LCA ("logic cell array") that serves as the card controller (needed for loading the OS) and reading the fast status area and status register. Some examples are in the README file. The driver can support up to four AT6200/AT6400 devices simultaneously (although the rpm only configures /etc/modules.conf for one).

The most common usage anticipated would be to let the startup script load the AT6400 operating system on boot, and afterwards user programs are free to open the device, write commands and read responses. The terminal program is provided as an example. It provides an interactive session with the AT6200/AT6400 device in which you can type commands and read the responses immediately.

Comments, questions, bug reports and suggestions for improvements should be directed to me; contact information can be found on my homepage by following the link at the top of this page.