1 |
30 |
unneback |
#
|
2 |
|
|
# $Id: README,v 1.2 2001-09-27 12:00:18 chris Exp $
|
3 |
|
|
#
|
4 |
|
|
|
5 |
|
|
This driver was submitted by Katsutoshi Shibuya .
|
6 |
|
|
|
7 |
|
|
Configuration
|
8 |
|
|
-------------
|
9 |
|
|
The application can choose this driver by using "CONSOLEX_DRIVER_TABLE_ENTRY"
|
10 |
|
|
in the driver table definition, in place of "CONSOLE_DRIVER_TABLE_ENTRY".
|
11 |
|
|
See consolex/cTest.c for an example and consolex/README for more information.
|
12 |
|
|
|
13 |
|
|
Programmatic Usage
|
14 |
|
|
------------------
|
15 |
|
|
|
16 |
|
|
- You can open 9 devices; console tty00, tty01, tty02, tty03,
|
17 |
|
|
rtty00, rtty01, rtty02, rtty03
|
18 |
|
|
tty00, rtty00 and console correspond to port#1 of MVME162LX,
|
19 |
|
|
tty01 and rtty01 correspond to port#2, and so on.
|
20 |
|
|
- tty0x are "cooked" devices. They support following flags on termios
|
21 |
|
|
definition;
|
22 |
|
|
ISTRIP, INLCR, IGNCR, ICRNL, IUCLC, OLCUC, ONLCR, OCRNL, ICANON, ECHO,
|
23 |
|
|
CBAUD, B38400, B19200, B9600, CSIZE, CS8, CS7, PARENB, PARODD, CSTOPB,
|
24 |
|
|
- rtty0x are "raw" devices. They support following flags on termios
|
25 |
|
|
definition;
|
26 |
|
|
CBAUD, B38400, B19200, B9600, CSIZE, CS8, CS7, PARENB, PARODD, CSTOPB,
|
27 |
|
|
- The default parameter is;
|
28 |
|
|
B38400, CS8, ICRNL, ONLCR, ICANON, ECHO
|
29 |
|
|
(but all flags except B38400 and CS8 will be ignored on raw device.)
|
30 |
|
|
- All devices support O_NDELAY (non blocking read/write) mode operation.
|
31 |
|
|
(Non-blocking cooked mode output is valid, but will not work fine.)
|
32 |
|
|
(Non-blocking cooked mode input with ECHO flag may be blocked while sending
|
33 |
|
|
echoed character.)
|
34 |
|
|
- All devices support hardware flow control by CTS/RTS.
|
35 |
|
|
(There is no way to disable it. There are no supports for soft flow control.)
|
36 |
|
|
- The application can use tcgetattr or ioctl to obtain the parameters of the
|
37 |
|
|
device into struct termios.
|
38 |
|
|
- The application can use tcsetattr or ioctl to set the parameters of the
|
39 |
|
|
device within the struct temios. The action argument (2nd arg) of the
|
40 |
|
|
tcsetattr must be TCSANOW.
|
41 |
|
|
- On opening the device, the driver activate DTR line. On closing the device,
|
42 |
|
|
the driver deactivate DTR line.
|
43 |
|
|
If 2 or more device opening occures at the same time on the same port, only
|
44 |
|
|
the first open procedure activates DTR line, and only the last close
|
45 |
|
|
procedure deactivate it.
|
46 |
|
|
- There are no device locking mechanisms. Application can open same device
|
47 |
|
|
several times.
|
48 |
|
|
But 2 simultanious reading operation on the same port will cause unexpected
|
49 |
|
|
result.
|
50 |
|
|
|
51 |
|
|
Porting Notes
|
52 |
|
|
-------------
|
53 |
|
|
- This code can be used for any Zilog SCC based board.
|
54 |
|
|
Change the time constant parameters and SCC register base addresses.
|
55 |
|
|
|
56 |
|
|
- This code is well separated into "device depended part" and "device
|
57 |
|
|
independed part".
|
58 |
|
|
They can use device independed part for any other board. The device
|
59 |
|
|
independed part requires following functions;
|
60 |
|
|
|
61 |
|
|
void SCCInitialize();
|
62 |
|
|
Initialize hardware.
|
63 |
|
|
rtems_boolean SCCGetOne(int port, char *ch);
|
64 |
|
|
Get one character from port. If no character is in the receiver buffer,
|
65 |
|
|
this function returns FALSE, otherwise TRUE.
|
66 |
|
|
char SCCGetOneBlocked(int port);
|
67 |
|
|
Get one character from port. If no character is in the receiver buffer,
|
68 |
|
|
wait it passing the CPU to the other task.
|
69 |
|
|
rtems_boolean SCCSendOne(int port, char ch);
|
70 |
|
|
Send one character via port. If the transmitter is not ready, this function
|
71 |
|
|
returns FALSE, otherwise TRUE.
|
72 |
|
|
void SCCSendOneBlocked(int port, char ch);
|
73 |
|
|
Send one character via port. Wait until the transmitter is ready, passing
|
74 |
|
|
the CPU to the other task.
|
75 |
|
|
unsigned32 SCCSetAttributes(int port, struct termios *tm);
|
76 |
|
|
Set device attribute according to the information in the struct termios.
|
77 |
|
|
c_cflags parameter (baud, parity, stopbits and code size) will be checked.
|
78 |
|
|
On the successful completion, this function should return 0.
|
79 |
|
|
unsigned32 SCCGetAttributes(int port, struct termios *tm);
|
80 |
|
|
Get device attribute according into the struct termios.
|
81 |
|
|
c_cflags parameter (baud, parity, stopbits and code size) will be set.
|
82 |
|
|
On the successful completion, this function should return 0.
|
83 |
|
|
void SCCSetDTR(port);
|
84 |
|
|
Activate DTR line.
|
85 |
|
|
void SCCResetDTR(port);
|
86 |
|
|
Deactivate DTR line.
|
87 |
|
|
void SCCSetRTS(port);
|
88 |
|
|
Activate RTS line.
|
89 |
|
|
void SCCResetRTS(port);
|
90 |
|
|
Deactivate RTS line.
|
91 |
|
|
int SCCGetCTS(port);
|
92 |
|
|
Return non zero when CTS line is activated.
|
93 |
|
|
|
94 |
|
|
- If you don't want console port, undefine "CONSOLEPORT".
|
95 |
|
|
|
96 |
|
|
- This code does not use ESCC feature; i.e. does not read register #4/#5/#14
|
97 |
|
|
|