| 1 |
199 |
simons |
|
| 2 |
|
|
Stallion Multiport Serial Driver Readme
|
| 3 |
|
|
---------------------------------------
|
| 4 |
|
|
|
| 5 |
|
|
Copyright (C) 1994-1998, Stallion Technologies (support@stallion.com).
|
| 6 |
|
|
|
| 7 |
|
|
Version: 5.4.4
|
| 8 |
|
|
Date: 20MAR98
|
| 9 |
|
|
|
| 10 |
|
|
|
| 11 |
|
|
|
| 12 |
|
|
1. INTRODUCTION
|
| 13 |
|
|
|
| 14 |
|
|
This is a Linux driver for some of the Stallion Technologies range of
|
| 15 |
|
|
multiport serial boards. There are really two drivers in this package.
|
| 16 |
|
|
One is for the Stallion smart boards, the other for the true Stallion
|
| 17 |
|
|
intelligent multiport boards.
|
| 18 |
|
|
|
| 19 |
|
|
The drivers included in this package are intended as a replacement for
|
| 20 |
|
|
those shipped with Linux kernel versions in the 2.0.X series. For later
|
| 21 |
|
|
versions of the kernel (2.1.0 and above) use the driver source supplied
|
| 22 |
|
|
with the kernel. The drivers in this package specifically add support
|
| 23 |
|
|
for the most recent releases of Stallion hardware - which are not supported
|
| 24 |
|
|
in the Stallion drivers supplied in the 2.0.X kernels. The drivers in this
|
| 25 |
|
|
package do not support kernel versions earlier than 2.0.0.
|
| 26 |
|
|
|
| 27 |
|
|
The other utilities supplied in this package can be used with Stallion
|
| 28 |
|
|
drivers on any version of the kernel.
|
| 29 |
|
|
|
| 30 |
|
|
If you have any trouble getting Stallion boards to work in Linux systems,
|
| 31 |
|
|
please contact Stallion Technologies support department via email or phone.
|
| 32 |
|
|
Contact information for Stallion Technologies offices is included in the
|
| 33 |
|
|
file "Offices" contained in this distribution.
|
| 34 |
|
|
|
| 35 |
|
|
Please note the disclaimers set out in the GNU general public license
|
| 36 |
|
|
included with this driver package.
|
| 37 |
|
|
|
| 38 |
|
|
All host driver source is included in this package, and is copyrighted under
|
| 39 |
|
|
the GNU GPL. The board "firmware" code in this package is copyright Stallion
|
| 40 |
|
|
Technologies (the files cdk.sys and 2681.sys).
|
| 41 |
|
|
|
| 42 |
|
|
|
| 43 |
|
|
1.1 SMART MULTIPORT BOARD DRIVER
|
| 44 |
|
|
|
| 45 |
|
|
This driver supports the EasyIO and EasyConnection 8/32 range of boards.
|
| 46 |
|
|
These boards are not classic intelligent multiport boards, but are host
|
| 47 |
|
|
based multiport boards that use Cirrus Logic CL-CD1400 UART's, or on
|
| 48 |
|
|
newer versions of the hardware use the Signetics 26C198 UART. Both of
|
| 49 |
|
|
these are high performance UART's with built in FIFO's, automatic flow
|
| 50 |
|
|
control and a host of other features.
|
| 51 |
|
|
|
| 52 |
|
|
The EasyIO range of cards comes in 4 forms, the EasyIO-4, EasyIO-8,
|
| 53 |
|
|
EasyIO-8M and EasyIO-8-PCI. The first three are ISA based boards while
|
| 54 |
|
|
the last is a PCI bus board. All of these are non-expandable, low cost,
|
| 55 |
|
|
multiport boards with 4 or 8 RS-232C ports. Each ISA EasyIO board requires 8
|
| 56 |
|
|
bytes of I/O address space and 1 interrupt. The PCI EasyIO board uses 64
|
| 57 |
|
|
bytes of I/O address space and 1 interrupt. On EISA and PCI systems it is
|
| 58 |
|
|
possible to share 1 interrupt between multiple boards. The EasyIO-4 has 10
|
| 59 |
|
|
pin RJ connectors, and the EasyIO-8 comes with a dongle cable with either 10
|
| 60 |
|
|
pin RJ connectors or DB-25 connectors. The EasyIO-8M has 6 pin RJ connectors.
|
| 61 |
|
|
|
| 62 |
|
|
The EasyConnection 8/32 family of boards is a relatively low cost modular
|
| 63 |
|
|
range of multiport serial boards. The EasyConnection 8/32 boards can be
|
| 64 |
|
|
configured to have from 8 to 32 serial ports by plugging in external serial
|
| 65 |
|
|
port modules that contain either 8 or 16 ports each. There is a wide range
|
| 66 |
|
|
of external modules available that offer: DB-25 connectors, RJ-45 connectors
|
| 67 |
|
|
(both with RS-232 D and E compatible drivers), and also RS-422 and RS-485
|
| 68 |
|
|
ports. The EasyConnection 8/32 boards come in ISA, PCI and MCA bus versions.
|
| 69 |
|
|
The board takes the form of a host adapter card, with an external connector
|
| 70 |
|
|
cable that plugs into the external modules. The external modules just clip
|
| 71 |
|
|
together to add ports (BTW, they are NOT hot pluggable). Each ISA
|
| 72 |
|
|
EasyConnection 8/32 board requires two separate I/O address ranges, one two
|
| 73 |
|
|
bytes in size and a secondary region of 32 bytes. Each PCI EasyConnection
|
| 74 |
|
|
8/32 requires two regions of I/O address space, normally these will be
|
| 75 |
|
|
automatically allocated by the system BIOS at power on time. Each MCA
|
| 76 |
|
|
EasyConnection board requires one I/O address region 64 bytes in size. All
|
| 77 |
|
|
board types also require one interrupt. On EISA systems multiple boards can
|
| 78 |
|
|
share one interrupt. The secondary I/O range of the ISA board (the 32 byte
|
| 79 |
|
|
range) can be shared between multiple boards on any bus type.
|
| 80 |
|
|
|
| 81 |
|
|
The EasyConnection 8/64-PCI family is similar to the EasyConnection 8/32-PCI
|
| 82 |
|
|
board, and uses the same external modules. It is supported by the smart
|
| 83 |
|
|
board driver - not the intelligent board driver. It uses 2 regions of I/O
|
| 84 |
|
|
address space, both 64 bytes in size, and 1 interrupt.
|
| 85 |
|
|
|
| 86 |
|
|
|
| 87 |
|
|
|
| 88 |
|
|
1.2 INTELLIGENT MULTIPORT BOARD DRIVER
|
| 89 |
|
|
|
| 90 |
|
|
This driver is for Stallion's range of true intelligent multiport boards.
|
| 91 |
|
|
It supports the EasyConnection 8/64, ONboard and Brumby families of multiport
|
| 92 |
|
|
boards. The EasyConnection 8/64 and ONboard boards come in ISA, EISA and
|
| 93 |
|
|
Microchannel bus versions. The Brumby boards are only available in ISA
|
| 94 |
|
|
versions. This driver can also work with the original Stallion board, but
|
| 95 |
|
|
these are no longer supported by Stallion Technologies.
|
| 96 |
|
|
|
| 97 |
|
|
The EasyConnection 8/64 family of boards is a medium cost, high performance,
|
| 98 |
|
|
modular range of intelligent multiport serial boards. The EasyConnection 8/64
|
| 99 |
|
|
boards can be configured to have from 8 to 64 serial ports by plugging in
|
| 100 |
|
|
external serial port modules that contain either 8 or 16 ports each (these
|
| 101 |
|
|
modules are the same used by the EasyConnection 8/32 board). There is a wide
|
| 102 |
|
|
range of external modules available that offer: DB-25 connectors, RJ-45
|
| 103 |
|
|
connectors (both with RS-232 D and E compatible drivers), and also RS-422 and
|
| 104 |
|
|
RS-485 ports. The board takes the form of a host adapter card, with an external
|
| 105 |
|
|
connector cable that plugs into the external modules. The external modules
|
| 106 |
|
|
just clip together to add ports (BTW, they are NOT hot pluggable). Each
|
| 107 |
|
|
EasyConnection 8/64 board requires 4 bytes of I/O address space and a region
|
| 108 |
|
|
of memory space. The size of the memory region required depends on the exact
|
| 109 |
|
|
board type. The EISA version requires 64 Kbytes of address space (that can
|
| 110 |
|
|
reside anywhere in the 4 Gigabyte physical address space). The ISA and MCA
|
| 111 |
|
|
boards require 4 Kbytes of address space (which must reside in the lower
|
| 112 |
|
|
1 Mbyte of physical address space - typically in the c8000 to e0000 range).
|
| 113 |
|
|
No interrupts are required. The physical memory region of multiple
|
| 114 |
|
|
EasyConnection 8/64 boards can be shared, but each board must have a separate
|
| 115 |
|
|
I/O address.
|
| 116 |
|
|
|
| 117 |
|
|
The ONboard family of boards are traditional intelligent multiport serial
|
| 118 |
|
|
boards. They are Stallion's older range of boards with a limited expansion
|
| 119 |
|
|
capability. They come in 4, 8, 12, 16 and 32 port versions. The board uses
|
| 120 |
|
|
the same base card (which has 4 ports on it) and is expanded to more ports via
|
| 121 |
|
|
a mezzanine board that attaches directly onto the base card. External panels
|
| 122 |
|
|
plug into the ONboard providing RS-232C ports with DB-25 plugs. An RS-422
|
| 123 |
|
|
DB-25 dual interface panel is also available. The ISA and microchannel
|
| 124 |
|
|
ONboards require 16 bytes of I/O address space and 64K bytes of memory
|
| 125 |
|
|
space. The memory space can be anywhere in the 16 Mbyte ISA bus address
|
| 126 |
|
|
range. No interrupt is required. The EISA ONboard requires 64 Kbytes of
|
| 127 |
|
|
memory space that can be anywhere in the 4 Gigabyte physical address space.
|
| 128 |
|
|
All ONboard boards can share their memory region with other ONboards (or
|
| 129 |
|
|
EasyConnection 8/64 boards).
|
| 130 |
|
|
|
| 131 |
|
|
The Brumby family of boards are traditional, low cost intelligent multiport
|
| 132 |
|
|
serial boards. They are non-expandable and come in 4, 8 and 16 port versions.
|
| 133 |
|
|
They are only available for the ISA bus. The serial ports are all on DB-25
|
| 134 |
|
|
"dongle" cables that attach to the rear of the board. Each Brumby board
|
| 135 |
|
|
requires 16 bytes of I/O address space and 16 Kbytes of memory space. No
|
| 136 |
|
|
interrupts are required.
|
| 137 |
|
|
|
| 138 |
|
|
The original Stallion boards are old. They went out of production some years
|
| 139 |
|
|
back and are no longer supported. They offer limited expandability and are
|
| 140 |
|
|
available in 8 or 16 port configurations. An external panel houses 16 RS-232C
|
| 141 |
|
|
ports with DB-9 connectors. They require 16 bytes of I/O address space, and
|
| 142 |
|
|
either 64K or 128K of memory space. No interrupt is required.
|
| 143 |
|
|
|
| 144 |
|
|
That's the boards supported by the second driver. The ONboard, Brumby and
|
| 145 |
|
|
Stallion boards are Stallion's older range of intelligent multiports - so
|
| 146 |
|
|
there are lots of them around. They only support a maximum baud rate of
|
| 147 |
|
|
38400. The EasyConnection 8/64 is a true high performance intelligent
|
| 148 |
|
|
multiport board, having much greater throughput than any of Stallion's
|
| 149 |
|
|
older boards. It also supports speeds up to 460800 baud.
|
| 150 |
|
|
|
| 151 |
|
|
|
| 152 |
|
|
1.3 HOW TO GET BOARDS
|
| 153 |
|
|
|
| 154 |
|
|
Stallion Technologies has offices all over the world, as well as many more
|
| 155 |
|
|
distributors and resellers. To find out about local availability please
|
| 156 |
|
|
contact the nearest Stallion office and they can give you all the information
|
| 157 |
|
|
you need. Look in the "Offices" file in the driver package for a current list
|
| 158 |
|
|
of Stallion Technologies offices.
|
| 159 |
|
|
|
| 160 |
|
|
Another good source of information about the Stallion range of boards and
|
| 161 |
|
|
local availability is on the Stallion Web page. Check it out at
|
| 162 |
|
|
http://www.stallion.com.
|
| 163 |
|
|
|
| 164 |
|
|
|
| 165 |
|
|
|
| 166 |
|
|
2. INSTALLATION
|
| 167 |
|
|
|
| 168 |
|
|
This version of the driver is intended for kernel versions 2.0.0 and later.
|
| 169 |
|
|
It will not work on earlier kernel versions, due to kernel interface changes.
|
| 170 |
|
|
(Note that older versions of these drivers do work on older kernels.)
|
| 171 |
|
|
If you are using a more recent development kernel (versions 2.1.X and
|
| 172 |
|
|
greater) you should use the Stallion drivers supplied with that kernel,
|
| 173 |
|
|
they are more up to date.
|
| 174 |
|
|
|
| 175 |
|
|
The drivers can be used as loadable modules or compiled into the kernel.
|
| 176 |
|
|
Depending on which form of driver loading you decide to use, the installation
|
| 177 |
|
|
procedure will be a little different.
|
| 178 |
|
|
|
| 179 |
|
|
All ISA, EISA and MCA boards that you want to use need to be entered into
|
| 180 |
|
|
the driver(s) configuration structures. PCI boards will be automatically
|
| 181 |
|
|
detected when you load the driver - so they do not need to be entered into
|
| 182 |
|
|
the driver(s) configuration structure. (Note that kernel PCI BIOS32 support
|
| 183 |
|
|
is required to use PCI boards.)
|
| 184 |
|
|
|
| 185 |
|
|
Entering ISA, EISA and MCA boards into the driver(s) configuration structure
|
| 186 |
|
|
involves editing the driver(s) source file. It's pretty easy if you follow
|
| 187 |
|
|
the instructions below. Both drivers can support up to 4 boards. The smart
|
| 188 |
|
|
card driver supports any combination of EasyIO, EasyConnection 8/32 and
|
| 189 |
|
|
EasyConnection 8/64-PCI boards (up to a total of 4). The intelligent driver
|
| 190 |
|
|
supports any combination of ONboards, Brumbys, Stallions and
|
| 191 |
|
|
EasyConnection 8/64 boards (up to a total of 4).
|
| 192 |
|
|
|
| 193 |
|
|
|
| 194 |
|
|
2.1 LOADABLE MODULE DRIVERS
|
| 195 |
|
|
|
| 196 |
|
|
You will need the gcc compiler and make installed on your system to make the
|
| 197 |
|
|
driver modules. You will also need to have the kernel source on the system,
|
| 198 |
|
|
and have at least done a "make config" and "make dep" on it. (If you haven't
|
| 199 |
|
|
done this before then you may want to read the kernel source README file,
|
| 200 |
|
|
usually found in /usr/src/linux.)
|
| 201 |
|
|
|
| 202 |
|
|
To build the driver modules:
|
| 203 |
|
|
1. Setup the driver configuration for the boards. If using EasyIO or
|
| 204 |
|
|
EasyConnection 8/32 ISA or MCA boards, do:
|
| 205 |
|
|
vi stallion.c
|
| 206 |
|
|
- find the definition of the stl_brdconf array (of structures)
|
| 207 |
|
|
near the top of the file
|
| 208 |
|
|
- modify this to match the boards you are going to install
|
| 209 |
|
|
(the comments before this structure should help)
|
| 210 |
|
|
- save and exit
|
| 211 |
|
|
If using ONboard, Brumby, Stallion or EasyConnection 8/64 boards then do:
|
| 212 |
|
|
vi istallion.c
|
| 213 |
|
|
- find the definition of the stli_brdconf array (of structures)
|
| 214 |
|
|
near the top of the file
|
| 215 |
|
|
- modify this to match the boards you are going to install
|
| 216 |
|
|
(the comments before this structure should help)
|
| 217 |
|
|
- save and exit
|
| 218 |
|
|
2. cp stallion.h cd1400.h sc26198.h /usr/include/linux/include/linux
|
| 219 |
|
|
cp istallion.h cdk.h comstats.h /usr/include/linux/include/linux
|
| 220 |
|
|
3. make modules
|
| 221 |
|
|
This will compile the driver modules, as stallion and istallion.
|
| 222 |
|
|
|
| 223 |
|
|
The stallion module is the EasyIO, EasyConnection 8/32 and
|
| 224 |
|
|
EasyConnection 8/64-PCI driver, the istallion module is the ONboard,
|
| 225 |
|
|
Brumby, Stallion and EasyConnection 8/64 driver.
|
| 226 |
|
|
|
| 227 |
|
|
To load up the smart board driver use:
|
| 228 |
|
|
insmod ./stallion
|
| 229 |
|
|
This will load the EasyIO and EasyConnection 8/32 driver. It will output a
|
| 230 |
|
|
message to say that it loaded and print the driver version number. It
|
| 231 |
|
|
will also print out whether it found the configured boards or not. (These
|
| 232 |
|
|
messages may appear in your /var/adm/messages file depending on how the
|
| 233 |
|
|
klogd and syslogd daemons are setup on your system).
|
| 234 |
|
|
|
| 235 |
|
|
To load the intelligent board driver use:
|
| 236 |
|
|
insmod ./istallion
|
| 237 |
|
|
It will output similar messages to the smart board driver.
|
| 238 |
|
|
|
| 239 |
|
|
|
| 240 |
|
|
2.2 STATIC DRIVERS (KERNEL LINKED)
|
| 241 |
|
|
|
| 242 |
|
|
You will need to build a new kernel to link in the Stallion drivers. The first
|
| 243 |
|
|
thing you need is to have the full kernel source. Most people will have this.
|
| 244 |
|
|
The following assumes that the kernel source is in /usr/src/linux.
|
| 245 |
|
|
|
| 246 |
|
|
To install the drivers:
|
| 247 |
|
|
1. cp stallion.c istallion.c /usr/src/linux/drivers/char
|
| 248 |
|
|
cp stallion.h cd1400.h sc26198.h /usr/include/linux/include/linux
|
| 249 |
|
|
cp istallion.h cdk.h comstats.h /usr/include/linux/include/linux
|
| 250 |
|
|
2. cd /usr/src/linux/drivers/char
|
| 251 |
|
|
3. Setup the driver configuration for the boards. If using EasyIO,
|
| 252 |
|
|
EasyConnection 8/32 or EasyConnection 8/64-PCI boards, do:
|
| 253 |
|
|
vi stallion.c
|
| 254 |
|
|
- find the definition of the stl_brdconf array (of structures)
|
| 255 |
|
|
near the top of the file
|
| 256 |
|
|
- modify this to match the boards you are going to install
|
| 257 |
|
|
(the comments before this structure should help)
|
| 258 |
|
|
- save and exit
|
| 259 |
|
|
If using ONboard, Brumby, Stallion or EasyConnection 8/64 boards then do:
|
| 260 |
|
|
vi istallion.c
|
| 261 |
|
|
- find the definition of the stli_brdconf array (of structures)
|
| 262 |
|
|
near the top of the file
|
| 263 |
|
|
- modify this to match the boards you are going to install
|
| 264 |
|
|
(the comments before this structure should help)
|
| 265 |
|
|
- save and exit
|
| 266 |
|
|
4. cd /usr/src/linux
|
| 267 |
|
|
5. build a new kernel - if you haven't done this before you may want to
|
| 268 |
|
|
read the README file in /usr/src/linux.
|
| 269 |
|
|
|
| 270 |
|
|
Once you have a new kernel built, reboot to start it up. On startup the
|
| 271 |
|
|
driver will output a message to say it is operational (with the driver
|
| 272 |
|
|
version number). It will also print out if it could find the boards listed
|
| 273 |
|
|
in its configuration structure or not.
|
| 274 |
|
|
|
| 275 |
|
|
|
| 276 |
|
|
2.3 INTELLIGENT DRIVER OPERATION
|
| 277 |
|
|
|
| 278 |
|
|
The intelligent boards also need to have their "firmware" code downloaded
|
| 279 |
|
|
to them. This is done via a user level application supplied in the driver
|
| 280 |
|
|
package called "stlload". Compile this program where ever you dropped the
|
| 281 |
|
|
package files, by typing "make". In its simplest form you can then type
|
| 282 |
|
|
./stlload -i cdk.sys
|
| 283 |
|
|
in this directory and that will download board 0 (assuming board 0 is an
|
| 284 |
|
|
EasyConnection 8/64 board). To download to an ONboard, Brumby or Stallion do:
|
| 285 |
|
|
./stlload -i 2681.sys
|
| 286 |
|
|
|
| 287 |
|
|
Normally you would want all boards to be downloaded as part of the standard
|
| 288 |
|
|
system startup. To achieve this, add one of the lines above into the
|
| 289 |
|
|
/etc/rc.d/rc.S or /etc/rc.d/rc.serial file. To download each board just add
|
| 290 |
|
|
the "-b " option to the line. You will need to download code for
|
| 291 |
|
|
every board. You should probably move the stlload program into a system
|
| 292 |
|
|
directory, such as /usr/sbin. Also, the default location of the cdk.sys image
|
| 293 |
|
|
file in the stlload down-loader is /usr/lib/stallion. Create that directory
|
| 294 |
|
|
and put the cdk.sys and 2681.sys files in it. (It's a convenient place to put
|
| 295 |
|
|
them anyway). As an example your /etc/rc.d/rc.S file might have the
|
| 296 |
|
|
following lines added to it (if you had 3 boards):
|
| 297 |
|
|
/usr/sbin/stlload -b 0 -i /usr/lib/stallion/cdk.sys
|
| 298 |
|
|
/usr/sbin/stlload -b 1 -i /usr/lib/stallion/2681.sys
|
| 299 |
|
|
/usr/sbin/stlload -b 2 -i /usr/lib/stallion/2681.sys
|
| 300 |
|
|
|
| 301 |
|
|
The image files cdk.sys and 2681.sys are specific to the board types. The
|
| 302 |
|
|
cdk.sys will only function correctly on an EasyConnection 8/64 board. Similarly
|
| 303 |
|
|
the 2681.sys image fill only operate on ONboard, Brumby and Stallion boards.
|
| 304 |
|
|
If you load the wrong image file into a board it will fail to start up, and
|
| 305 |
|
|
of course the ports will not be operational!
|
| 306 |
|
|
|
| 307 |
|
|
If you are using the module version of the driver you might want to put the
|
| 308 |
|
|
insmod calls in the startup script as well (before the download lines
|
| 309 |
|
|
obviously).
|
| 310 |
|
|
|
| 311 |
|
|
|
| 312 |
|
|
2.4 SHARING INTERRUPTS
|
| 313 |
|
|
|
| 314 |
|
|
As mentioned in the introduction, it is possible to share interrupts between
|
| 315 |
|
|
multiple EasyIO and EasyConnection 8/32 boards in an EISA system. To do this
|
| 316 |
|
|
you will need to do a couple of things:
|
| 317 |
|
|
|
| 318 |
|
|
1. When entering the board resources into the stallion.c file you need to
|
| 319 |
|
|
mark the boards as using level triggered interrupts. Do this by replacing
|
| 320 |
|
|
the "0" entry at field position 6 (the last field) in the board
|
| 321 |
|
|
configuration structure with a "1". (This is the structure that defines
|
| 322 |
|
|
the board type, I/O locations, etc. for each board). All boards that are
|
| 323 |
|
|
sharing an interrupt must be set this way, and each board should have the
|
| 324 |
|
|
same interrupt number specified here as well. Now build the module or
|
| 325 |
|
|
kernel as you would normally.
|
| 326 |
|
|
|
| 327 |
|
|
2. When physically installing the boards into the system you must enter
|
| 328 |
|
|
the system EISA configuration utility. You will need to install the EISA
|
| 329 |
|
|
configuration files for *all* the EasyIO and EasyConnection 8/32 boards
|
| 330 |
|
|
that are sharing interrupts. The Stallion EasyIO and EasyConnection 8/32
|
| 331 |
|
|
EISA configuration files required are supplied by Stallion Technologies
|
| 332 |
|
|
on the DOS Utilities floppy (usually supplied in the box with the board
|
| 333 |
|
|
when purchased. If not, you can pick it up from Stallion's FTP site
|
| 334 |
|
|
ftp.stallion.com or web site http://www.stallion.com). You will need to
|
| 335 |
|
|
edit the board resources to choose level triggered interrupts, and make
|
| 336 |
|
|
sure to set each board's interrupt to the same IRQ number.
|
| 337 |
|
|
|
| 338 |
|
|
You must complete both the above steps for this to work. When you reboot
|
| 339 |
|
|
or load the driver your EasyIO and EasyConnection 8/32 boards will be
|
| 340 |
|
|
sharing interrupts.
|
| 341 |
|
|
|
| 342 |
|
|
|
| 343 |
|
|
2.5 USING HIGH SHARED MEMORY
|
| 344 |
|
|
|
| 345 |
|
|
The EasyConnection 8/64-EI, ONboard and Stallion boards are capable of
|
| 346 |
|
|
using shared memory addresses above the usual 640K - 1Mb range. The ONboard
|
| 347 |
|
|
ISA and the Stallion boards can be programmed to use memory addresses up to
|
| 348 |
|
|
16Mb (the ISA bus addressing limit), and the EasyConnection 8/64-EI and
|
| 349 |
|
|
ONboard/E can be programmed for memory addresses up to 4Gb (the EISA bus
|
| 350 |
|
|
addressing limit).
|
| 351 |
|
|
|
| 352 |
|
|
The istallion driver offers direct support for these higher memory regions.
|
| 353 |
|
|
To use them just enter the high memory address as if it were a low memory
|
| 354 |
|
|
address (in the driver board configuration structure).
|
| 355 |
|
|
|
| 356 |
|
|
|
| 357 |
|
|
2.6 LINUX KERNEL VERSIONS 2.1.X
|
| 358 |
|
|
|
| 359 |
|
|
There may be some minor differences between the driver source code in this
|
| 360 |
|
|
package and that in the Linux kernel source. This will be due to changes
|
| 361 |
|
|
needed in the drivers so that they work correctly on newer kernels. The
|
| 362 |
|
|
driver source included in this package is intended for use with 2.0.X
|
| 363 |
|
|
series kernels. If you have a kernel version 2.1.0 or later then use the
|
| 364 |
|
|
source provided with the kernel - it will be more up to date. Stallion
|
| 365 |
|
|
Technologies regularly submits the latest driver source to be included in
|
| 366 |
|
|
the new kernel source releases.
|
| 367 |
|
|
|
| 368 |
|
|
|
| 369 |
|
|
2.7 TROUBLE SHOOTING
|
| 370 |
|
|
|
| 371 |
|
|
If a board is not found by the driver but is actually in the system then the
|
| 372 |
|
|
most likely problem is that the I/O address is wrong. Change it in the driver
|
| 373 |
|
|
stallion.c or istallion.c configuration structure and rebuild the kernel
|
| 374 |
|
|
or modules, or change it on the board. On EasyIO and EasyConnection 8/32
|
| 375 |
|
|
boards the IRQ is software programmable, so if there is a conflict you may
|
| 376 |
|
|
need to change the IRQ used for a board in the stallion.c configuration
|
| 377 |
|
|
structure. There are no interrupts to worry about for ONboard, Brumby,
|
| 378 |
|
|
Stallion or EasyConnection 8/64 boards. The memory region on EasyConnection
|
| 379 |
|
|
8/64 and ONboard boards is software programmable, but not on the Brumbys or
|
| 380 |
|
|
Stallions.
|
| 381 |
|
|
|
| 382 |
|
|
|
| 383 |
|
|
|
| 384 |
|
|
3. USING THE DRIVERS
|
| 385 |
|
|
|
| 386 |
|
|
Once the driver is installed you will need to setup some device nodes to
|
| 387 |
|
|
access the serial ports. Use the supplied "mkdevnods" script to automatically
|
| 388 |
|
|
create all required device entries for one board. This will create the normal
|
| 389 |
|
|
serial port devices as /dev/ttyE# where # is the port number starting from 0.
|
| 390 |
|
|
A set of callout type devices is also created. They are created as the devices
|
| 391 |
|
|
/dev/cue# where # is the same as for the ttyE devices.
|
| 392 |
|
|
|
| 393 |
|
|
A bank of 64 minor device numbers is allocated to each board. To create
|
| 394 |
|
|
device nodes for ports on multiple boards supply a number of boards argument
|
| 395 |
|
|
to the "mkdevnods" script. For example to create nodes for four boards use
|
| 396 |
|
|
"mkdevnods 4". This means that the first port on the second board is port 64,
|
| 397 |
|
|
the first port on the third board is 128, etc.
|
| 398 |
|
|
|
| 399 |
|
|
For the most part the Stallion driver tries to emulate the standard PC system
|
| 400 |
|
|
COM ports and the standard Linux serial driver. The idea is that you should
|
| 401 |
|
|
be able to use Stallion board ports and COM ports interchangeably without
|
| 402 |
|
|
modifying anything but the device name. Anything that doesn't work like that
|
| 403 |
|
|
should be considered a bug in this driver!
|
| 404 |
|
|
|
| 405 |
|
|
If you look at the driver code you will notice that it is fairly closely
|
| 406 |
|
|
based on the Linux serial driver (linux/drivers/char/serial.c). This is
|
| 407 |
|
|
intentional, obviously this is the easiest way to emulate its behavior!
|
| 408 |
|
|
|
| 409 |
|
|
Since this driver tries to emulate the standard serial ports as much as
|
| 410 |
|
|
possible, most system utilities should work as they do for the standard
|
| 411 |
|
|
COM ports. Most importantly "stty" works as expected and "setserial" can be
|
| 412 |
|
|
also be used (excepting the ability to auto-configure the I/O and IRQ
|
| 413 |
|
|
addresses of boards). Higher baud rates are supported in the usual fashion
|
| 414 |
|
|
through setserial or using the CBAUDEX extensions. Note that the EasyIO and
|
| 415 |
|
|
EasyConnection (all types) support 57600 and 115200 baud, and the newer XP
|
| 416 |
|
|
versions also support 230400 and 460800 baud. The older boards including
|
| 417 |
|
|
ONboard, Brumby and the original Stallion support a maximum baud rate of
|
| 418 |
|
|
38400.
|
| 419 |
|
|
|
| 420 |
|
|
This driver should work with anything that works on standard Linux serial
|
| 421 |
|
|
ports. Having said that, it has been used on at least the following types of
|
| 422 |
|
|
"things" under Linux:
|
| 423 |
|
|
a) standard dumb terminals (using agetty, getty)
|
| 424 |
|
|
b) serial mice (under X)
|
| 425 |
|
|
c) modems (using cu, uucp, minicom, seyon, uugetty)
|
| 426 |
|
|
d) slip and ppp connections
|
| 427 |
|
|
|
| 428 |
|
|
If you are unfamiliar with how to use serial ports, then get the Serial-HOWTO
|
| 429 |
|
|
by Greg Hankins. It will explain everything you need to know!
|
| 430 |
|
|
|
| 431 |
|
|
|
| 432 |
|
|
|
| 433 |
|
|
4. NOTES
|
| 434 |
|
|
|
| 435 |
|
|
The major device numbers used by this driver are conformant with the Linux
|
| 436 |
|
|
Device Registry, so they shouldn't clash with any other devices. Also the
|
| 437 |
|
|
device naming scheme is the "standard" used by most Linux serial port
|
| 438 |
|
|
devices.
|
| 439 |
|
|
|
| 440 |
|
|
You can use both drivers at once if you have a mix of board types installed
|
| 441 |
|
|
in a system. However to do this you will need to change the major numbers
|
| 442 |
|
|
used by one of the drivers. Currently both drivers use major numbers 24, 25
|
| 443 |
|
|
and 28 for their devices. Change one driver to use some other major numbers,
|
| 444 |
|
|
and then modify the mkdevnods script to make device nodes based on those new
|
| 445 |
|
|
major numbers. For example, you could change the istallion.c driver to use
|
| 446 |
|
|
major numbers 60, 61 and 62. You will also need to create device nodes with
|
| 447 |
|
|
different names for the ports, for example ttyF# and cuf#.
|
| 448 |
|
|
|
| 449 |
|
|
Finding a free physical memory address range can be a problem. The older
|
| 450 |
|
|
boards like the Stallion and ONboard need large areas (64K or even 128K), so
|
| 451 |
|
|
they can be very difficult to get into a system. If you have 16 Mb of RAM
|
| 452 |
|
|
then you have no choice but to put them somewhere in the 640K -> 1Mb range.
|
| 453 |
|
|
ONboards require 64K, so typically 0xd0000 is good, or 0xe0000 on some
|
| 454 |
|
|
systems. If you have an original Stallion board, "V4.0" or Rev.O,
|
| 455 |
|
|
then you need a 64K memory address space, so again 0xd0000 and 0xe0000 are
|
| 456 |
|
|
good. Older Stallion boards are a much bigger problem. They need 128K of
|
| 457 |
|
|
address space and must be on a 128K boundary. If you don't have a VGA card
|
| 458 |
|
|
then 0xc0000 might be usable - there is really no other place you can put
|
| 459 |
|
|
them below 1Mb.
|
| 460 |
|
|
|
| 461 |
|
|
Both the ONboard and old Stallion boards can use higher memory addresses as
|
| 462 |
|
|
well, but you must have less than 16Mb of RAM to be able to use them. Usual
|
| 463 |
|
|
high memory addresses used include 0xec0000 and 0xf00000.
|
| 464 |
|
|
|
| 465 |
|
|
The Brumby boards only require 16Kb of address space, so you can usually
|
| 466 |
|
|
squeeze them in somewhere. Common addresses are 0xc8000, 0xcc000, or in
|
| 467 |
|
|
the 0xd0000 range. EasyConnection 8/64 boards are even better, they only
|
| 468 |
|
|
require 4Kb of address space, again usually 0xc8000, 0xcc000 or 0xd0000
|
| 469 |
|
|
are good.
|
| 470 |
|
|
|
| 471 |
|
|
If you are using an EasyConnection 8/64-EI or ONboard/E then usually the
|
| 472 |
|
|
0xd0000 or 0xe0000 ranges are the best options below 1Mb. If neither of
|
| 473 |
|
|
them can be used then the high memory support to use the really high address
|
| 474 |
|
|
ranges is the best option. Typically the 2Gb range is convenient for them,
|
| 475 |
|
|
and gets them well out of the way.
|
| 476 |
|
|
|
| 477 |
|
|
There is a new utility program included called "stlstty". Most people
|
| 478 |
|
|
will not need to use this. If you have an ONboard/16 which has partial
|
| 479 |
|
|
signals on the upper 12 ports then this program can be used to set the
|
| 480 |
|
|
upper ports to have modem control instead of hardware flow control. Use
|
| 481 |
|
|
the "mapcts maprts" flag options to this utility on the port(s) that you
|
| 482 |
|
|
wish to do this mapping on, eg
|
| 483 |
|
|
./stlstty maprts mapcts < /dev/cue0
|
| 484 |
|
|
This enables RTS to act like DTR and CTS to act like DCD on the specified
|
| 485 |
|
|
port.
|
| 486 |
|
|
|
| 487 |
|
|
The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
|
| 488 |
|
|
ports cannot be used as real modem devices. Generally when using these
|
| 489 |
|
|
ports you should only use the cueX devices.
|
| 490 |
|
|
|
| 491 |
|
|
There is another new utility in this package that reports statistics on
|
| 492 |
|
|
the serial ports. You will need to have the curses libray installed on
|
| 493 |
|
|
your system to build it.
|
| 494 |
|
|
|
| 495 |
|
|
To build the statistics display program type:
|
| 496 |
|
|
make stlstats
|
| 497 |
|
|
Once compiled simply run it (you will need to be root) and it will display
|
| 498 |
|
|
a port sumary for the first board and panel installed. Use the digits to
|
| 499 |
|
|
select different board numbers, or 'n' to cycle through the panels on a
|
| 500 |
|
|
board. To look at detailed port information then hit 'p', that will display
|
| 501 |
|
|
detailed port 0 information. Use the digits and letters 'a' through 'f' to
|
| 502 |
|
|
select the different ports (on this board and panel).
|
| 503 |
|
|
|
| 504 |
|
|
|
| 505 |
|
|
|
| 506 |
|
|
5. ACKNOWLEDGEMENTS
|
| 507 |
|
|
|
| 508 |
|
|
This driver is loosely based on code written by Theodore T'so, Linus
|
| 509 |
|
|
Torvalds, and others, so a big thanks to them all.
|
| 510 |
|
|
|
| 511 |
|
|
|
| 512 |
|
|
|
| 513 |
|
|
6. DISCLAIMER
|
| 514 |
|
|
|
| 515 |
|
|
The information contained in this document is believed to be accurate and
|
| 516 |
|
|
reliable. However, no responsibility is assumed by Stallion Technologies
|
| 517 |
|
|
Pty. Ltd. for its use, nor any infringements of patents or other rights
|
| 518 |
|
|
of third parties resulting from its use. Stallion Technologies reserves
|
| 519 |
|
|
the right to modify the design of its products and will endeavour to change
|
| 520 |
|
|
the information in manuals and accompanying documentation accordingly.
|
| 521 |
|
|
|