|
|
1.1 root 1: ccoomm -- Device Driver
2:
3:
4: The COHERENT 286 system supports four asynchronous serial lines, ccoomm11
5: through ccoomm44, via device drivers aall00 and aall11. The COHERENT 386 system uses
6: device driver aassyy to control up to 32 serial lines. See their respective
7: Lexicon entries for further details. Note that the rest of this article
8: applies to COHERENT 286.
9:
10: A serial line can be opened into any of four different ``flavors'', as
11: follows:
12:
13: ccoomm?ll Interrupt driven, local mode (no modem control)
14: ccoomm?rr Interrupt driven, remote mode (modem control)
15: ccoomm?ppll Polled, local mode (no modem control)
16: ccoomm?pprr Polled, remote mode (modem control)
17:
18: ``Local mode'' means that the line will have a terminal plugged into it, to
19: directly access the computer. ``Modem control'' means that the line will
20: have a modem plugged into it. Modem control is enabled on a serial line by
21: resetting the modem control bit (bit 7) in the minor number for the device.
22: This allows the system to generate a hangup signal when the modem indicates
23: loss of carrier by dropping DCD (Data Carrier Detect). A modem line should
24: always have its DSR, DCD and CTS pins connected. If left hanging, spurious
25: transitions can cause severe system thrashing. To disable modem control on
26: a given serial line, use the minor device which has the modem control bit
27: set (bit 7). An ooppeenn to a modem-control line will block until a carrier is
28: detected (DCD goes true).
29:
30: ``Interrupt mode'' means that the port can generate an interrupt to attract
31: the attention of the COHERENT system; ``polled mode'' means that the port
32: cannot generate an interrupt, but must be checked (or ``polled'')
33: constantly by the COHERENT system to see if activity has occurred on it.
34:
35: The COHERENT 286 system uses two device drivers to manage serial lines: aall00
36: manages COM1 and COM3, and aall11 manages COM2 and COM4. Due to limitations
37: in the design of the ports, you can enable interrupts on either COM1 or
38: COM3 (or on COM2 or COM4), but not both. If you wish to use both ports
39: simultaneously, one must be run in polled mode. For example, if you wish
40: to open all four serial lines, you can open two of the lines in interrupt
41: mode: you can open either COM1 or COM3 in interrupt mode, and you can open
42: either COM2 or COM4 in interrupt mode. The other two lines must be opened
43: in polled mode.
44:
45: Opening a device in polled mode consumes many CPU cycles, based upon the
46: speed of the highest baud rate requested. For example, on a 20 MHz 80386-
47: based machine, polling at 9600-baud was found to consume about 15% of the
48: CPU time. As only one device can use the interrupt line at any given time,
49: the best approach is to make the high-speed line of the pair interrupt
50: driven and open the low-speed or less-frequently used line in polled mode.
51: However, if you enable a polled line for logins, the port is open and will
52: be polled as long as the port remains open (enabled). Thus, even if a port
53: is not in use, the fact that it has a ggeettttyy on it consumes CPU cycles. As
54: a rule of thumb, try and open a port in interrupt mode. If you cannot, use
55: the polled version. Also note that use of any of the four serial ports in
56: polled mode prevents other polled serial device drivers, such as the hhss
57: generic multi-port polled serial driver, from being used at the same time.
58:
59: If you intend to use a modem on your serial port, you must insure that the
60: DCD signal from the modem actually _f_o_l_l_o_w_s the state of carrier detect.
61: Some modems allow the user to ``strap'' or set the DCD signal so that it is
62: always asserted (true). This incorrect setup will cause COHERENT to think
63: that the modem is ``connected'' to a remote modem, even when there is no
64: such connection.
65:
66: In addition, if you wish to allow remote logins to your COHERENT system via
67: your modem, you must insure that the modem does _n_o_t echo any commands or
68: status information. Failure to do so will result in severe system
69: thrashing due to the ggeettttyy or llooggiinn processes endlessly ``talking'' to your
70: modem.
71:
72: _C_h_a_n_g_i_n_g _D_e_f_a_u_l_t _P_o_r_t _S_p_e_e_d_s
73: Serial lines ccoomm11 through ccoomm44 default to 9600 baud when opened. This
74: default speed can be permanently changed on a ``per port'' basis by
75: changing the value of driver variables CC11BBAAUUDD, CC22BBAAUUDD, CC33BBAAUUDD or CC44BBAAUUDD.
76: The list of acceptible values can be found in header file <ssggttttyy.hh> and
77: range from 1, corresponding to 50 baud, up to 17, which corresponds to
78: 19,200 baud. For a table of legal baud rates, see the Lexicon entry for
79: ssggttttyy.hh.
80:
81: To change the default value for a port, you must use the /ccoonnff/ppaattcchh
82: command. For example, to change the default speed for port ccoomm22 to 2400
83: baud, enter the following command while running as the superuser:
84:
85: /conf/patch /drv/al1 C2BAUD_=12
86:
87: The change will not take effect until the next time that you boot your
88: system.
89:
90: _L_o_a_d_i_n_g _a _D_r_i_v_e_r
91: COHERENT 286 version 3.2 and later implements all COM drivers as loadable
92: drivers. This was done to save space within the kernel, and to let you
93: configure your system as you prefer. COHERENT 386 version 4.0 links all
94: COM drivers into the kernel. The rest of this section applies to users of
95: COHERENT 286, versions 3.2 and later. It does _n_o_t apply to any release of
96: COHERENT prior to version 3.2.
97:
98: To load a COM driver, you must use the command ddrrvvlldd to load the
99: appropriate aall device. As noted above, drivers ccoomm11 and ccoomm33 are
100: controlled by device aall00, and drivers ccoomm22 and ccoomm44 by aall11. For example, to
101: load aall00 use the command:
102:
103: /etc/drvld /drv/al0
104:
105: To remove a COM driver, first type the command
106:
107: ps -d
108:
109: and note the process identifier of the COM driver you want to remove.
110: Then, become the superuser rroooott and type the command
111:
112: kill -9 _x_x_x_x
113:
114: where _x_x_x_x is the process identifier for the COM driver.
115:
116: Note that aall00 is in directory /ddrrvv, _n_o_t /ddeevv.
117:
118: If you are going to load certain drivers regularly, be sure to write the
119: appropriate ddrrvvlldd command into system file /eettcc/ddrrvvlldd.aallll.
120:
121: _S_e_e _A_l_s_o
122: ccoomm11, ccoomm22, ccoomm33, ccoomm44, ddeevviiccee ddrriivveerrss, ddrrvvlldd
123:
124: _D_i_a_g_n_o_s_t_i_c_s
125: An attempt to open a non-existent device will generate error messages.
126: This can occur if hardware is absent or not turned on.
127:
128: _N_o_t_e_s
129: The ccoomm family of devices apply only to COHERENT 286. To access a serial
130: port under COHERENT 386, use the driver aassyy, which is described in its own
131: Lexicon entry.
132:
133: The ccoomm* series of devices are not compatible with the iiooccttll() parameters
134: defined in header file <tteerrmmiioo.hh>. Be sure to include header file <ssggttttyy.hh>
135: if you wish to perform terminal specific iiooccttll() calls.
136:
137: In the current version of these drivers, the following sequence of steps
138: results in a panic:
139:
140: enable com4pl
141: enable com3pl
142: disable com4pl
143: kill kill <al1 driver process id>
144:
145: The key is that the driver containing the polling routine cannot be
146: unloaded if the other driver is still polling.
147:
148: Note, too, that if any ccoomm device driver is used in polling mode, the hhss
149: driver cannot be used, and vice versa.
150:
151: Source for these device drivers, is provided in with the driver kit, in
152: source files aall.cc, aallbbaauudd.cc, and aallxx.cc. In the production releases of
153: COHERENT 4.0.0 and later, these devices are supplanted by device driver
154: aassyy.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.