![]() |
![]() |
![]() |
![]() |
5 REFERENCE
5.1 Functions
Man-pages of all public driver functions in alphabetical order.
This page describes the hardware-specific configuration options of
the ISER serial interface board in the VLT environment.
One VMEbus board corresponds to ten devices.
Each device provides a programmable serial channel.
Only one ISER board is foreseen per system:
Devices Base-Addr A24 IRQ-Lev IRQ-Vec
---------------- --------------- ------- --------
/iser0 .. /iser9 0xd00000 1 236..255
Currently these values are hard-coded in the driver, and
therefore not user-configurable.
User-configurable elements are located on the board as follows:
P1 P2
___________________ ___________________
+-|___________________|__--__-|___________________|-+ back
| __ __ |
| -- J7 J8 |
| -- |
| J2 |
| |||J6 |||J9 |
| |
| |
| |
| |
| |
| |
===================================================== front
The jumpers must be set as follows for the respective device:
(the orientation in the table corresponds to the BOARD LAYOUT)
J2, J7, J8 Base address setting:
J7, J8 omitted
board 1: J2 5-6 installed
board 2: J2 7-8 installed
J6, J9 Voltage supply of the piggy-backs
2-3 installed
Most of the routines in this driver are accessible only through the I/O
system. Two routines, however, must be called directly, iserDrv to
initialize the driver, and iserDevCreate to create devices.
Before using the driver, it must be initialized by calling the routine:
.CS
STATUS iserDrv ( )
.CE
The status returned is OK.
This routine should be called exactly once, before any reads, writes, or
iserDevCreates. Normally, it is called from usrRoot.
Before a terminal can be used, it must be created. This is done
with the iserDevCreate call.
Each port to be used should have exactly one device associated with it,
by calling this routine.
.CS
STATUS iserDevCreate (name, channel, rdBufSize, wrtBufSize)
char *name; * Name to use for this device
int channel; * Physical channel for this device (0-9)
int rdBufSize; * Read buffer size, in bytes
int wrtBufSize; * Write buffer size, in bytes
.CE
For instance, to create the device "/iser4" on the fifth ISER-channel,
with buffer sizes of 512 bytes, the proper call would be:
.CS
iserDevCreate ("/iser4", 4, 512, 512);
.CE
This driver responds to all the same ioctl codes as a normal ty driver.
The baud rates available are normally 50, 75, 110, 150, 300, 600, 1200,
2400, 4800, 9600, 19200 and 38400. For the upper 2 channels ( 8 & 9 )
are also 76800 and 115200 Baud available. If none if these is written,
the ISER takes the nearest one, who's available (refer to the ISER-manual).
requ: I arg: I action
-----------+----------+---------------------------------------
FIOFLUSH I 0 I Flush TyCo buffer
(2) I 1 I Full Flush (including board buffer)
-----------+----------+---------------------------------------
Additionally it is possible, to set character-length, number of stopbits,
parity-mode and special for ISER-applications handshake-mode, rx-mode and
rx-record-length. To do this, there are additional defines in ioLibAdd.h
with following meanings:
requ: I arg: I action
-----------+----------+---------------------------------------
FIOCHARLEN I 5...8 I set characterlength to 5...8 bit
(400) I else I Error (Return -1)
-----------+----------+---------------------------------------
FIOSTOPBIT I 1 or 2 I set number of stopbits
(401) I else I Error (Return -1)
-----------+----------+---------------------------------------
FIOPARITY I >0 I set even parity
(402) I =0 I set no parity
I <0 I set odd parity
-----------+----------+---------------------------------------
FIOHNDSHK I 0 I Hardware-handshake DTR/CTS
(403) I 1 I Software-handshake XON/XOFF
I 2 I Modem-handshake RTS/CTS
I 3 I no handshake
I 4 I RS-485-operation, no handshake
I 5 I RS-422-operation, XON/XOFF-handshake
I else I Error (Return -1)
-----------+----------+---------------------------------------
FIORECLEN I 0 I use maximal record-length (=1024)
(420) I 1..1024 I definable record-length
I else I Error (Return -1)
-----------+----------+---------------------------------------
FIORXMODE I 1 \ I EOT (end_of_text) \ use specified char
(421) I 2 >add I LF (line_feed) > as end-condition
I 4 / I CR (carriage_return)/ (addable)
I 0 I use only record-length as end-condition
I <0 I binary mode, no end-condition, no XON/XOFF
I >7 I Error (Return -1)
-----------+----------+---------------------------------------
FIOTIMOUT0 I 0 I no timeout to receipt of first character
(422) I 1..32767I timeout to receipt of first character (milliseconds)
-----------+----------+---------------------------------------
FIOTIMOUT1 I 0 I no timeout between receipt of further characters
(423) I 1..32767I timeout to time between receipt of further
I I characters (milliseconds)
The end-condition means the condition, on which the ISER transmits
the received characters to the master. Such an end-condition may be
one of the above character (if defined), a timeout or the defined
record-length. So if you define a record-length of 1, the ISER works
like a normal UART.
The default-set of the ISER after iserDrv is:
9600 Baud, 8 bit, no parity, 1 stopbit, max. recordlength, rxmode 7,
no timeout.
For example to change to modem-hardware-handshake type:
-> x=open("/iser4",0)
-> ioctl(x,FIOHNDSHK,2)
-> close(x)
The used interrupt-vectors and -level are defined in iserDrv.h and are
changable. The defined vector is a basevector and is free programmable.
The two vectors used for receipt and transmission for a channel are the
basevector plus 2*'channel'(+1).
This driver uses the ISER-own handshake-possibilities (refer to the
manual). The VxWorks-implemented software-handshake is not useful
because of the large local rx/tx-buffer. So this bit is masked out in
the ioctl-function.
INSTALLING MORE ISER'S
To install more ISER's just increase MAX_ISERS in iser.h and write the
jumpered baseaddress in common/esdadr.h (iser_base2, iser_base3).
![]() Quadralay Corporation http://www.webworks.com Voice: (512) 719-3399 Fax: (512) 719-3606 sales@webworks.com |
![]() |
![]() |
![]() |
![]() |