ARO Documentation Project
SMT Tracker / Servo
System Configuration Notes
April 10, 2001
Tom Sargent
I now have Linux drivers for the IRIG, 12-bit DAC, 16-bit DAC,
48-bit and 96-bit parallel I/O interfaces, and 16 Channel A/D running. The
system resource allocation is as follows:
Directory Contents:
-
das1400 The driver and a test program for the DAS1401/12 16
Channel A/D interface.
-
cioDac0216 The driver and test program for the CIO-DIO-02/16
dual channel 16-bit D/A converter.
-
cioDac02 The driver and test program for the CIO-DIO-02 dual
channel 12-bit D/A converter. Will work for the 6 channel version too.
-
irigSmt The driver for the IRIG interface. Developed from the
version used on Linux 2.0 kernel at the 12 meter telescope.
-
CIO-DIO CIO-DIO48 or CIO-DIO96 48-bit or 96-bit parallel I/O
interfaces.
-
CIO-DDA06 The driver and the test code for the 6 channel
12-bit DAC card and/or the 2 channel 12-bit DAC.
IRQ Usage
At the present time, the das1400 interface is the only card
that uses an interrupt. It uses IRQ 7.
The Traquair DSP card uses one IRQ (11) for the server loader
to talk to the Linux driver. The IRIG driver may need to use an interrupt,
although it does not now.
In order to get the Traquair Linux driver to work correctly it
was necessary to go into the BIOS and change IRQ 11 from "PCI PnP" to "ISA". I
suspect this should be done for any other interrupts we use for ISA bus too.
At present that is the DAS1400 using IRQ 7.
DMA Usage
Only the driver for the das1401/12 uses any DMA. It uses DMA
channel 1. This is determined by a switch on the card (1 vs. 3). We do not
anticipate using any other DMA channels in any of the other drivers.
Linux Major Device Numbers
All the drivers use dynamic assignment of major device
numbers, so this is taken care of automatically.
ISA Addresses
The allocation of PC I/O addresses is shown below ("fwa" =
First Word Address", "lwa" = Last Word Address):
Device fwa lwa
-
TI DSP board 0x200 0x207
-
IRIG 0x300 0x31f
-
CIO-DAC02/6 0x320 0x323 (The 6 channel version uses up to
0x32b)
-
CIO-DAC02/16 0x330 0x333
-
das1401/12 0x340 0x34f (Uses 2 address ranges.) 0x740 0x747
-
CIO-DIO96 0x350 0x35f (48 bit version uses only up to 0x357)
Driver and Device Names:
Driver Dev names
irigSmt /dev/irig and /dev/irig0 are the same device.
das1400 /dev//das14adc and /dev/das14adc0 which are the same
device.
cioDac0216 /dev/dac0216 and /dev/dac02160 are the same device.
/dev/dac02161
ciodio /dev/dio0 and /dev/dio are the same device. /dev/dio1
/dev/dio2 /dev/dio3
ciodda6 /dev/ciodda6 and /dev/ciodda60 are the same device.
/dev/ciodda61 /dev/ciodda62 /dev/ciodda63 /dev/ciodda64 /dev/ciodda65
System Start-up
There are copies of the drivers and startup scripts in /etc/smtDrivers.
/etc/rc.d/rc.local has been altered to load /etc/smtDrivers/smtDriverScript.
This loads all the drivers.
The parallel port driver presented a bit of a problem. It is
passed the name of the host computer via a MODULE_PARM() variable supplied to
the insmod command. This is done in the /etc/smtDrivers/dio_load4 script and
it works. What I don't understand is that if that is left out, the insmod call
crashes and prints an oops message leaving the driver loaded but with an open
count of 1. Since that can't be reduced (or at least, I can't figure out how)
the driver can't be removed. So, for the moment, the variable "dioHostName"
has to be set to something when insmod is called. It is presently set to
$(hostname) which will work on all machines.
NTP server
It is compiled by doing a "./configure" and a "make" in the
/usr/src/redhat/SOURCES/xntp3-5.93/ directory. When configure is invoked, it
should be done as (assuming you want authentication):
./configure --enable-IRIGBW --prefix=/usr --enable-des
--enable-authenticate
The 'des' enables the authentication protocol. The
--enable-authenticate is there because of a comment in the notes. I'm not sure
it does anything. The -des may be sufficient by itself.
IRIG clock interface
The IRIG clock driver (irigSmt.o) needs to be installed &
running. It should produce a 2KHz pulse (not square wave) to drive the A/Ds
digitizing the encoder signals. The A/D (HEGD2) needs a pulse now shorter than
150ns and no longer than 10,000ns. The IRIG puts out pulses derived from an
internal 3MHz clock which are 333ns. Note that the IRIG driver (copied from
the 12m code) does not enable the 2KHz pulse train unless there is at least
one file descriptor to /dev/irig0 open. The CTR-1 clock signal is initialized
in the "open" method of the driver. Normally the ntp server is always running
and always has it open, so that is not a problem.
|