1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
Stallion Multiport Serial Driver Readme
|
|
|
|
---------------------------------------
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
Version: 0.0.5 alpha
|
|
|
|
Date: 20MAR96
|
1996-05-04 06:03:59 +00:00
|
|
|
Author: Greg Ungerer (gerg@stallion.oz.au)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. INTRODUCTION
|
|
|
|
|
|
|
|
This is a FreeBSD driver for some of the Stallion Technologies range of
|
1996-05-04 06:09:47 +00:00
|
|
|
multiport serial boards. This driver is still very new, so it should be
|
|
|
|
considered to be of very alpha quality.
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
This driver has not been developed by Stallion Technologies. I developed it
|
|
|
|
in my spare time in the hope that it would be useful. As such there is no
|
1996-05-04 06:31:39 +00:00
|
|
|
warranty or support of any form. What this means is that this driver is not
|
|
|
|
officially supported by Stallion Technologies, so don't ring their support
|
|
|
|
if you can't get it working. They will probably not be able to help you.
|
|
|
|
Instead email me if you have problems or bug reports and I will do what I
|
|
|
|
can... (Sorry to sound so heavy handed, but I need to stress that this driver
|
|
|
|
is not officially supported in any way.)
|
1996-05-04 06:03:59 +00:00
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
This package actually contains two drivers. One is for the true Stallion
|
|
|
|
intelligent multiport boards, and the other is for the smart range of boards.
|
|
|
|
|
|
|
|
All host driver source is included in this package, and is copyrighted under
|
|
|
|
a BSD style copyright. The board "firmware" code in this package is copyright
|
|
|
|
Stallion Technologies (the files cdk.sys and 2681.sys).
|
|
|
|
|
|
|
|
|
|
|
|
1.1 SMART MULTIPORT BOARD DRIVER
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
This driver supports the EasyIO and EasyConnection 8/32 range of boards.
|
1996-05-04 06:31:39 +00:00
|
|
|
These boards are not classic intelligent multiport boards, but are host
|
|
|
|
based multiport boards that use high performance Cirrus Logic CL-CD1400 RISC
|
|
|
|
UART's (they have built in FIFO's, automatic flow control and some other
|
|
|
|
good stuff).
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
The EasyIO range of cards comes in 3 forms, the EasyIO-4, EasyIO-8 and the
|
|
|
|
EasyIO-8M. All of these are non-expandable, low cost, ISA, multiport boards
|
1996-05-04 06:13:22 +00:00
|
|
|
with 4, 8 and 8 RS-232C ports respectively. Each EasyIO board requires 8
|
1996-05-04 06:31:39 +00:00
|
|
|
bytes of I/O address space and 1 interrupt. On an EISA system it is possible
|
1996-05-04 06:13:22 +00:00
|
|
|
to share 1 interrupt between multiple boards. The EasyIO-4 has 10 pin RJ
|
1996-05-04 06:31:39 +00:00
|
|
|
connectors, and the EasyIO-8 comes with a dongle cable with either 10 pin RJ
|
|
|
|
connectors or DB-25 connectors. The EasyIO-8M has 6 pin RJ connectors.
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
The EasyConnection 8/32 family of boards is a relatively low cost modular
|
|
|
|
range of multiport serial boards. The EasyConnection 8/32 boards can be
|
|
|
|
configured to have from 8 to 32 serial ports by plugging in external serial
|
1996-05-04 06:31:39 +00:00
|
|
|
port modules that contain either 8 or 16 ports each. There is a wide range
|
|
|
|
of external modules available that offer: DB-25 connectors, RJ-45 connectors
|
|
|
|
(both with RS-232 D and E compatible drivers), and also RS-422 and RS-485
|
|
|
|
ports. The EasyConnection 8/32 boards come in ISA, PCI and MCA bus versions.
|
|
|
|
The board takes the form of a host adapter card, with an external connector
|
|
|
|
cable that plugs into the external modules. The external modules just clip
|
|
|
|
together to add ports (BTW, they are NOT hot pluggable). Each ISA
|
|
|
|
EasyConnection 8/32 board requires two separate I/O address ranges, one two
|
|
|
|
bytes in size and a secondary region of 32 bytes. Each PCI EasyConnection
|
|
|
|
8/32 requires two regions of I/O address space, normally these will be
|
|
|
|
automatically allocated by the system BIOS at system power on time. Each MCA
|
|
|
|
EasyConnection board requires one I/O address region 64 bytes in size. All
|
|
|
|
board types also require one interrupt. On EISA systems multiple boards can
|
|
|
|
share one interrupt. The secondary I/O range of the ISA board (the 32 byte
|
1996-05-04 06:03:59 +00:00
|
|
|
range) can be shared between multiple boards on any bus type.
|
|
|
|
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
1.2 INTELLIGENT MULTIPORT BOARD DRIVER
|
|
|
|
|
|
|
|
This driver is for Stallion's range of true intelligent multiport boards.
|
|
|
|
It supports the EasyConnection 8/64, ONboard, Brumby and original Stallion
|
|
|
|
families of multiport boards. The EasyConnection 8/64 and ONboard boards come
|
|
|
|
in ISA, EISA and Microchannel bus versions. The Brumby and Stallion boards
|
|
|
|
are only available in ISA versions.
|
|
|
|
|
|
|
|
The EasyConnection 8/64 family of boards is a medium cost, high performance,
|
|
|
|
modular range of intelligent multiport serial boards. The EasyConnection 8/64
|
|
|
|
boards can be configured to have from 8 to 64 serial ports by plugging in
|
|
|
|
external serial port modules that contain either 8 or 16 ports each (these
|
|
|
|
modules are the same used by the EasyConnection 8/32 board). There is a wide
|
|
|
|
range of external modules available that offer: DB-25 connectors, RJ-45
|
|
|
|
connectors (both with RS-232 D and E compatible drivers), and also RS-422 and
|
|
|
|
RS-485 ports. The board takes the form of a host adapter card, with an external
|
|
|
|
connector cable that plugs into the external modules. The external modules
|
|
|
|
just clip together to add ports (BTW, they are NOT hot pluggable). Each
|
|
|
|
EasyConnection 8/64 board requires 4 bytes of I/O address space and a region
|
|
|
|
of memory space. The size of the memory region required depends on the exact
|
|
|
|
board type. The EISA version requires 64 Kbytes of address space (that can
|
|
|
|
reside anywhere in the 4 Gigabyte physical address space). The ISA and MCA
|
|
|
|
boards require 4 Kbytes of address space (which must reside in the lower
|
|
|
|
1 Mbyte of physical address space - typically in the c8000 to e0000 range).
|
|
|
|
No interrupts are required. The physical memory region of multiple
|
|
|
|
EasyConnection 8/64 boards can be shared, but each board must have a separate
|
|
|
|
I/O address space.
|
|
|
|
|
|
|
|
The ONboard family of boards are traditional intelligent multiport serial
|
|
|
|
boards. They are Stallion's older range of boards with a limited expansion
|
|
|
|
capability. They come in 4, 8, 12, 16 and 32 port versions. The board uses
|
|
|
|
the same base card (which has 4 ports on it) and is expanded to more ports
|
|
|
|
via a mezzanine board that attaches directly onto the board. External panels
|
|
|
|
plug into the ONboard providing RS-232C ports with DB-25 plugs. An RS-422
|
|
|
|
DB-25 dual interface panel is also available. The ISA and microchannel
|
|
|
|
ONboards require 16 bytes of I/O address space and 64K bytes of memory
|
|
|
|
space. The memory space can be anywhere in the 16 Mbyte ISA bus address
|
|
|
|
range. No interrupt is required. The EISA ONboard requires 64 Kbytes of
|
|
|
|
memory space that can be anywhere in the 4 Gigabyte physical address space.
|
|
|
|
All ONboard boards can share their memory region with other ONboards (or
|
|
|
|
EasyConnection 8/64 boards).
|
|
|
|
|
|
|
|
The Brumby family of boards are traditional, low cost intelligent multiport
|
|
|
|
serial boards. They are non-expandable and come in 4, 8 and 16 port versions.
|
|
|
|
They are only available for the ISA bus. The serial ports are all on DB-25
|
|
|
|
"dongle" cables that attach to the rear of the board. Each Brumby board
|
|
|
|
requires 16 bytes of I/O address space and 16 Kbytes of memory space. No
|
|
|
|
interrupts are required.
|
|
|
|
|
|
|
|
The original Stallion boards are old. They went out of production some years
|
|
|
|
back. They offer limited expandability and are available in 8 or 16 port
|
|
|
|
configurations. An external panel houses 16 RS-232C ports with DB-9
|
|
|
|
connectors. They require 16 bytes of I/O address space, and either 64K or
|
|
|
|
128K of memory space. No interrupt is required. I will not actively support
|
|
|
|
these boards, although they will work with the driver.
|
|
|
|
|
|
|
|
That's the boards supported by the second driver. The ONboard, Brumby and
|
|
|
|
Stallion boards are Stallion's older range of intelligent multiports - so
|
|
|
|
there are lots of them around. They only support a maximum baud rate of
|
|
|
|
38400. The EasyConnection 8/64 is a true high performance intelligent
|
|
|
|
multiport board, having much greater throughput than any of Stallion's
|
|
|
|
older boards. It also supports speeds up to 115200 baud.
|
|
|
|
|
|
|
|
|
|
|
|
1.3 HOW TO GET BOARDS
|
1996-05-04 06:13:22 +00:00
|
|
|
|
|
|
|
Stallion Technologies has offices all over the world, as well as many more
|
|
|
|
distributors and resellers. To find out about local availability please
|
|
|
|
contact the nearest Stallion office and they can give you all the information
|
1996-05-04 08:51:42 +00:00
|
|
|
you need.
|
|
|
|
|
|
|
|
Stallion Technologies Sales and Support Offices
|
|
|
|
===============================================
|
|
|
|
|
|
|
|
Stallion Technologies Pty. Ltd.
|
|
|
|
P.O. Box 954
|
|
|
|
Toowong, QLD 4066, Australia
|
|
|
|
Tel. +61 7 3270 4242
|
|
|
|
Fax. +61 7 3270 4245
|
|
|
|
Email: support@stallion.oz.au
|
|
|
|
|
|
|
|
Stallion Technologies Inc.
|
|
|
|
2880 Research Park Drive,
|
|
|
|
Soquel, CA 95073, USA.
|
|
|
|
Tel. +1 408 477 0440
|
|
|
|
Fax. +1 408 477 0444
|
|
|
|
Email: support@staltec.com
|
|
|
|
|
|
|
|
Stallion Technologies Deutschland GmbH.
|
|
|
|
Martin-Behaim-Strasse 12
|
|
|
|
63263 Neu-Isenburg
|
|
|
|
Germany
|
|
|
|
Tel. +49 6102 73970
|
|
|
|
Fax. +49 6102 739710
|
1996-05-04 06:13:22 +00:00
|
|
|
|
|
|
|
Another good source of information about the Stallion range of boards and
|
|
|
|
local availability is on the Stallion Web page. Check it out at
|
|
|
|
http://www.stallion.com.
|
|
|
|
|
|
|
|
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
2. INSTALLATION
|
|
|
|
|
1996-05-04 06:09:47 +00:00
|
|
|
This driver, as is, will work on a FreeBSD 2.1 system. It will run on
|
|
|
|
a 2.0.5 system, or -current version systems by changing a define in the
|
|
|
|
driver source.
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
You will need to build a new kernel to use this driver. So the first thing
|
|
|
|
you need is to have the full kernel source. Most people will have this
|
|
|
|
(I hope!). The following assumes that the kernel source is in /usr/src/sys.
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
The drivers can support up to 8 boards. For the smart board driver any
|
|
|
|
combination of EasyIO and EasyConnection 8/32 boards can be installed. For
|
|
|
|
the intelligent any combination of EasyConnection 8/64, ONboard, Brumby or
|
|
|
|
original Stallion. So there is a theoretical maximum of 512 ports.
|
1996-05-04 06:03:59 +00:00
|
|
|
(Off-course I have not tested a system with this many!)
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
|
1996-05-04 08:51:42 +00:00
|
|
|
[[[ The install instructions are obsolete, it is now standard ]]]
|
|
|
|
[[[ Skip forward to item 4, editing your kernel config file ]]]
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
2.1 Instructions to install:
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
1. Copy the driver source files into the kernel source tree.
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
cp stallion.c istallion.c cdk.h comstats.h /usr/src/sys/i386/isa
|
|
|
|
cp scd1400.h /usr/src/sys/i386/isa/ic
|
1996-05-04 06:03:59 +00:00
|
|
|
|
1996-05-04 06:13:22 +00:00
|
|
|
Note: if you are NOT using FreeBSD 2.1.0 then you will need to edit the
|
1996-05-04 06:31:39 +00:00
|
|
|
stallion.c and istallion.c files and change the VFREEBSD define to match
|
|
|
|
your version.
|
1996-05-04 06:09:47 +00:00
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
2. Skip to next step if on a FreeBSD kernel later than 2.1.0.
|
|
|
|
Add a character device switch table entry for the driver that you which
|
|
|
|
to use into the cdevsw table structure. This involves adding some code
|
|
|
|
into the kernel conf.c file.
|
|
|
|
|
|
|
|
If you are using an EasyIO or EasyConnection 8/32 then you need to use
|
|
|
|
the stallion.c driver. All other board types (EasyConnection 8/64,
|
|
|
|
ONboard, Brumby, Stallion) use the istallion.c driver. You can also have
|
|
|
|
a mix of boards using both drivers. You will need to use a different
|
|
|
|
major device number for the second driver though (not the default 72 -
|
|
|
|
see below for more details on this).
|
|
|
|
|
|
|
|
2.1. If using the stallion.c driver then do:
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
cd /usr/src/sys/i386/i386
|
|
|
|
vi conf.c
|
1996-05-04 06:09:47 +00:00
|
|
|
- add the following lines (in 2.1 I put them at line 729):
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
/* Stallion Multiport Serial Driver */
|
|
|
|
#include "stl.h"
|
|
|
|
#if NSTL > 0
|
|
|
|
d_open_t stlopen;
|
|
|
|
d_close_t stlclose;
|
|
|
|
d_read_t stlread;
|
|
|
|
d_write_t stlwrite;
|
|
|
|
d_ioctl_t stlioctl;
|
|
|
|
d_stop_t stlstop;
|
|
|
|
d_ttycv_t stldevtotty;
|
|
|
|
#define stlreset nxreset
|
|
|
|
#define stlmmap nxmmap
|
|
|
|
#define stlstrategy nxstrategy
|
|
|
|
#else
|
|
|
|
#define stlopen nxopen
|
|
|
|
#define stlclose nxclose
|
|
|
|
#define stlread nxread
|
|
|
|
#define stlwrite nxwrite
|
|
|
|
#define stlioctl nxioctl
|
|
|
|
#define stlstop nxstop
|
|
|
|
#define stlreset nxreset
|
|
|
|
#define stlmmap nxmmap
|
|
|
|
#define stlstrategy nxstrategy
|
|
|
|
#define stldevtotty nxdevtotty
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
- and then inside the actual cdevsw structure definition, at the
|
1996-05-04 06:09:47 +00:00
|
|
|
last entry add (this is now line 1384 in the 2.1 conf.c):
|
1996-05-04 06:03:59 +00:00
|
|
|
|
1996-05-04 06:09:47 +00:00
|
|
|
{ stlopen, stlclose, stlread, stlwrite, /*72*/
|
1996-05-04 06:03:59 +00:00
|
|
|
stlioctl, stlstop, stlreset, stldevtotty,/*stallion*/
|
|
|
|
ttselect, stlmmap, stlstrategy },
|
|
|
|
|
1996-05-04 06:09:47 +00:00
|
|
|
- the line above used major number 72, but this may be different
|
1996-05-04 06:03:59 +00:00
|
|
|
on your system. Take note of what major number you are using.
|
|
|
|
|
|
|
|
- save the file and exit vi.
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
|
|
|
|
2.2. If using the istallion.c driver then do:
|
|
|
|
|
|
|
|
cd /usr/src/sys/i386/i386
|
|
|
|
vi conf.c
|
|
|
|
- add the following lines (in 2.1 I put them at line 729):
|
|
|
|
|
|
|
|
/* Stallion Intelligent Multiport Serial Driver */
|
|
|
|
#include "stl.h"
|
|
|
|
#if NSTL > 0
|
|
|
|
d_open_t stliopen;
|
|
|
|
d_close_t stliclose;
|
|
|
|
d_read_t stliread;
|
|
|
|
d_write_t stliwrite;
|
|
|
|
d_ioctl_t stliioctl;
|
|
|
|
d_stop_t stlistop;
|
|
|
|
d_ttycv_t stlidevtotty;
|
|
|
|
#define stlireset nxreset
|
|
|
|
#define stlimmap nxmmap
|
|
|
|
#define stlistrategy nxstrategy
|
|
|
|
#else
|
|
|
|
#define stliopen nxopen
|
|
|
|
#define stliclose nxclose
|
|
|
|
#define stliread nxread
|
|
|
|
#define stliwrite nxwrite
|
|
|
|
#define stliioctl nxioctl
|
|
|
|
#define stlistop nxstop
|
|
|
|
#define stlireset nxreset
|
|
|
|
#define stlimmap nxmmap
|
|
|
|
#define stlistrategy nxstrategy
|
|
|
|
#define stlidevtotty nxdevtotty
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
- and then inside the actual cdevsw structure definition, at the
|
|
|
|
last entry add (this is now line 1384 in the 2.1 conf.c):
|
|
|
|
|
|
|
|
{ stliopen, stliclose, stliread, stliwrite, /*72*/
|
|
|
|
stliioctl, stlistop, stlireset, stlidevtotty,/*istallion*/
|
|
|
|
ttselect, stlimmap, stlistrategy },
|
|
|
|
|
|
|
|
- the line above used major number 72, but this may be different
|
|
|
|
on your system. Take note of what major number you are using.
|
|
|
|
|
|
|
|
- save the file and exit vi.
|
|
|
|
|
1996-05-04 06:03:59 +00:00
|
|
|
3. Add the driver source files to the kernel files list:
|
|
|
|
|
|
|
|
cd /usr/src/sys/i386/conf
|
|
|
|
vi files.i386
|
1996-05-04 06:31:39 +00:00
|
|
|
- add the following definition lines into the list (it is stored
|
|
|
|
alphabetically, so insert them appropriately):
|
|
|
|
|
|
|
|
i386/isa/istallion.c optional stli device-driver
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
i386/isa/stallion.c optional stl device-driver
|
|
|
|
|
|
|
|
- save the file and exit vi.
|
|
|
|
|
|
|
|
4. Add board probe entries into the kernel configuration file:
|
|
|
|
|
|
|
|
cd /usr/src/sys/i386/conf
|
|
|
|
cp GENERIC MYKERNEL
|
|
|
|
- if you already have a kernel config that you use then you
|
|
|
|
could just use that (instead of MYKERNEL)
|
|
|
|
vi MYKERNEL
|
1996-05-04 06:13:22 +00:00
|
|
|
- if only using ECH-PCI boards then you don't need to enter a
|
|
|
|
configuration line, the kernel will automatically detect
|
|
|
|
the board at boot up, so skip to step 5.
|
1996-05-04 06:31:39 +00:00
|
|
|
- enter a line for each board that you want to use. For stallion.c
|
|
|
|
boards entries should look like:
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
device stl0 at isa? port 0x2a0 tty irq 10 vector stlintr
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
For istallion.c boards, the entries should look like:
|
|
|
|
|
|
|
|
device stli0 at isa? port 0x2a0 tty iomem 0xcc000 iosiz 0x1000 flags 23
|
|
|
|
|
1996-05-04 06:13:22 +00:00
|
|
|
(I suggest you put them after the sio? entries)
|
|
|
|
(Don't enter lines for ECH-PCI boards)
|
1996-05-04 06:31:39 +00:00
|
|
|
- change the entry resources as required. For the Stallion.c
|
|
|
|
entries this may involve changing the port address or irq.
|
|
|
|
For the istallion.c entries this may involve changing the port
|
|
|
|
address, iomem address, iosiz value and the flags. Select from
|
|
|
|
the following table for appropriate flags and iosiz values for
|
|
|
|
your board type:
|
|
|
|
|
|
|
|
EasyConnection 8/64 ISA: flags 23 iosiz 0x1000
|
|
|
|
EasyConnection 8/64 EISA: flags 24 iosiz 0x10000
|
|
|
|
EasyConnection 8/64 MCA: flags 25 iosiz 0x1000
|
|
|
|
ONboard ISA: flags 4 iosiz 0x10000
|
|
|
|
ONboard EISA: flags 7 iosiz 0x10000
|
|
|
|
ONboard MCA: flags 3 iosiz 0x10000
|
|
|
|
Brumby: flags 2 iosiz 0x4000
|
|
|
|
Stallion: flags 1 iosiz 0x10000
|
|
|
|
|
1996-05-04 06:03:59 +00:00
|
|
|
- save the file and exit
|
|
|
|
|
|
|
|
5. Build a new kernel using this configuration.
|
|
|
|
|
|
|
|
cd /usr/src/sys/i386/conf
|
|
|
|
config MYKERNEL
|
|
|
|
cd ../../compile/MYKERNEL
|
|
|
|
make depend
|
|
|
|
make all
|
|
|
|
make install
|
|
|
|
|
|
|
|
|
|
|
|
And there you have it! It is a little bit of effort to get it in there...
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
Once you have a new kernel built reboot to start it up. On startup the
|
1996-05-04 06:03:59 +00:00
|
|
|
Stallion board probes will report on whether the boards were found or not.
|
|
|
|
For each board found the driver will print out the type of board found,
|
|
|
|
and how many panels and ports it has.
|
|
|
|
|
|
|
|
If a board is not found by the driver but is actually in the system then the
|
1996-05-04 06:31:39 +00:00
|
|
|
most likely problem is that the IO address is incorrect. The easiest thing to
|
|
|
|
do is change the DIP switches on the board to the desired address and reboot.
|
|
|
|
|
1996-05-04 06:03:59 +00:00
|
|
|
On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable,
|
|
|
|
so if there is a conflict you may need to change the IRQ used for a board in
|
|
|
|
the MYKERNEL configuration file and rebuild the kernel.
|
|
|
|
|
|
|
|
Note that the secondary IO address of the EasyConnection 8/32 boards is hard
|
1996-05-04 06:31:39 +00:00
|
|
|
coded into the stallion.c driver code. It is currently set to IO address
|
1996-05-04 06:03:59 +00:00
|
|
|
0x280. If you need to use a different address then you will need to edit this
|
|
|
|
file and change the variable named stl_ioshared.
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
On intelligent boards it is possible that the board shared memory region is
|
|
|
|
clashing with that of some other device. Check for this and change the device
|
|
|
|
or kernel configuration as required.
|
|
|
|
|
|
|
|
|
|
|
|
2.2 INTELLIGENT DRIVER OPERATION
|
|
|
|
|
|
|
|
The intelligent boards also need to have their "firmware" code downloaded
|
|
|
|
to them. This is done via a user level application supplied in the driver
|
|
|
|
package called "stlload". Compile this program where ever you dropped the
|
|
|
|
package files, by typing "make". In its simplest form you can then type
|
|
|
|
./stlload -i cdk.sys
|
|
|
|
in this directory and that will download board 0 (assuming board 0 is an
|
|
|
|
EasyConnection 8/64 board). To download to an ONboard, Brumby or Stallion do:
|
|
|
|
./stlload -i 2681.sys
|
|
|
|
|
|
|
|
Normally you would want all boards to be downloaded as part of the standard
|
|
|
|
system startup. To achieve this, add one of the lines above into the
|
|
|
|
/etc/rc.serial file. To download each board just add the "-b <brd-number>"
|
|
|
|
option to the line. You will need to download code for every board. You should
|
|
|
|
probably move the stlload program into a system directory, such as /usr/sbin.
|
|
|
|
Also, the default location of the cdk.sys image file in the stlload
|
|
|
|
down-loader is /usr/lib/stallion. Create that directory and put the cdk.sys
|
|
|
|
and 2681.sys files in it. (It's a convenient place to put them anyway). As an
|
|
|
|
example your /etc/rc.serial file might have the following lines added to it
|
|
|
|
(if you had 3 boards):
|
|
|
|
/usr/sbin/stlload -b 0 -i /usr/lib/stallion/cdk.sys
|
|
|
|
/usr/sbin/stlload -b 1 -i /usr/lib/stallion/2681.sys
|
|
|
|
/usr/sbin/stlload -b 2 -i /usr/lib/stallion/2681.sys
|
|
|
|
|
|
|
|
The image files cdk.sys and 2681.sys are specific to the board types. The
|
|
|
|
cdk.sys will only function correctly on an EasyConnection 8/64 board. Similarly
|
|
|
|
the 2681.sys image will only operate on ONboard, Brumby and Stallion boards.
|
|
|
|
If you load the wrong image file into a board it will fail to start up, and
|
|
|
|
of course the ports will not be operational!
|
|
|
|
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
3. USING THE DRIVER
|
|
|
|
|
|
|
|
Once the driver is installed you will need to setup some device nodes to
|
|
|
|
access the serial ports. Use the supplied "mkdevnods" script to automatically
|
|
|
|
create all required device entries for your boards. To make device nodes for
|
|
|
|
more than 1 board then just supply the number of boards you are using as a
|
|
|
|
command line parameter to mkdevnods and it will create nodes for that number
|
|
|
|
of boards. By default it will create device nodes for 1 board only.
|
|
|
|
|
1996-05-04 06:09:47 +00:00
|
|
|
Note that if the driver is not installed at character major number 72 then
|
1996-05-04 06:03:59 +00:00
|
|
|
you will need to edit the mkdevnods script and modify the STL_SERIALMAJOR
|
|
|
|
variable to the major number you are using.
|
|
|
|
|
|
|
|
Device nodes created for the normal serial port devices are named /dev/ttyEX
|
1996-05-04 06:31:39 +00:00
|
|
|
where X is the port number. (The second boards ports will start from ttyE64,
|
|
|
|
the third boards from ttyE128, etc). It will also create a set of modem call
|
1996-05-04 06:03:59 +00:00
|
|
|
out devices named cueX where again X is the port number.
|
|
|
|
|
|
|
|
For the most part the Stallion driver tries to emulate the standard PC system
|
|
|
|
com ports and the standard sio serial driver. The idea is that you should
|
|
|
|
be able to use Stallion board ports and com ports inter-changeably without
|
|
|
|
modifying anything but the device name. Anything that doesn't work like that
|
|
|
|
should be considered a bug in this driver!
|
|
|
|
|
|
|
|
Since this driver tries to emulate the standard serial ports as much as
|
|
|
|
possible then most system utilities should work as they do for the standard
|
|
|
|
com ports. Most importantly "stty" works as expected and "comcontrol" can be
|
|
|
|
used just like for the serial ports.
|
|
|
|
|
|
|
|
This driver should work with anything that works on standard com serial ports.
|
|
|
|
Having said that, I have used it on at least the following types of "things"
|
|
|
|
under FreeBSD:
|
|
|
|
a) standard dumb terminals (using getty)
|
|
|
|
b) modems (using cu, etc)
|
1996-05-04 06:16:23 +00:00
|
|
|
c) ppp (through pppd, kernel ppp)
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. NOTES
|
|
|
|
|
1996-05-04 06:31:39 +00:00
|
|
|
Be aware that these drivers are still very new, so there is sure to be some
|
|
|
|
bugs in them. Please email me any feedback on bugs, problems, or even good
|
|
|
|
experiences with these drivers!
|
|
|
|
|
|
|
|
You can use both drivers at once if you have a mix of board types installed
|
|
|
|
in a system. However to do this you will need to change the major number used
|
|
|
|
by one of the drivers. Currently both drivers use default major number 72 for
|
|
|
|
their devices. Change one driver to use some other major number (how this is
|
|
|
|
achieved will depend on the kernel version you are using), and then modify the
|
|
|
|
mkdevnods script to make device nodes based on those new major numbers. For
|
|
|
|
example, you could change the stallion.c driver to use major number 73. You
|
|
|
|
will also need to create device nodes with different names for the ports, for
|
|
|
|
eg ttyFXXX.
|
|
|
|
|
|
|
|
Currently the intelligent board driver (istallion.c) does not have the
|
|
|
|
ability to share a boards memory region with other boards (you can only do
|
|
|
|
this on EasyConnection 8/64 and ONboards normally anyway). It also does
|
|
|
|
not currently support any memory address ranges above the low 1Mb region.
|
|
|
|
These will be fixed in a future release of the driver.
|
|
|
|
|
|
|
|
Finding a free physical memory address range can be a problem. The older
|
|
|
|
boards like the Stallion and ONboard need large areas (64K or even 128K), so
|
|
|
|
they can be very difficult to get into a system. If you have 16 Mb of RAM
|
|
|
|
then you have no choice but to put them somewhere in the 640K -> 1Mb range.
|
|
|
|
ONboards require 64K, so typically 0xd0000 is good, or 0xe0000 on some
|
|
|
|
systems. If you have an original Stallion board, "V4.0" or Rev.O, then you
|
|
|
|
need a 64K memory address space, so again 0xd0000 and 0xe0000 are good. Older
|
|
|
|
Stallion boards are a much bigger problem. They need 128K of address space and
|
|
|
|
must be on a 128K boundary. If you don't have a VGA card then 0xc0000 might be
|
|
|
|
usable - there is really no other place you can put them below 1Mb.
|
|
|
|
|
|
|
|
Both the ONboard and old Stallion boards can use higher memory addresses as
|
|
|
|
well, but you must have less than 16Mb of RAM to be able to use them. Usual
|
|
|
|
high memory addresses used include 0xec0000 and 0xf00000.
|
|
|
|
|
|
|
|
The Brumby boards only require 16Kb of address space, so you can usually
|
|
|
|
squeeze them in somewhere. Common addresses are 0xc8000, 0xcc000, or in
|
|
|
|
the 0xd0000 range. EasyConnection 8/64 boards are even better, they only
|
|
|
|
require 4Kb of address space, again usually 0xc8000, 0xcc000 or 0xd0000
|
|
|
|
are good.
|
|
|
|
|
|
|
|
If you are using an EasyConnection 8/64-EI or ONboard/E then usually the
|
|
|
|
0xd0000 or 0xe0000 ranges are the best options below 1Mb. If neither of
|
|
|
|
them can be used then the high memory support to use the really high address
|
|
|
|
ranges is the best option. Typically the 2Gb range is convenient for them,
|
|
|
|
and gets them well out of the way.
|
|
|
|
|
|
|
|
The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
|
|
|
|
ports cannot be used as real modem devices. Generally when using these
|
|
|
|
ports you should only use the cueX devices.
|
|
|
|
|
|
|
|
There is a new utility in this package that reports statistics on the
|
|
|
|
serial ports. You will need to have the ncurses library installed on your
|
|
|
|
system to build it.
|
|
|
|
|
|
|
|
To build the statistics display program type:
|
|
|
|
make stlstats
|
|
|
|
Once compiled simply run it (you will need to be root) and it will display
|
|
|
|
a port summary for the first board and panel installed. Use the digits to
|
|
|
|
select different board numbers, or 'n' to cycle through the panels on a
|
|
|
|
board. To look at detailed port information then hit 'p', that will display
|
|
|
|
detailed port 0 information. Use the digits and letters 'a' through 'f' to
|
|
|
|
select the different ports (on this board and panel).
|
1996-05-04 06:03:59 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5. ACKNOWLEDGEMENTS
|
|
|
|
|
|
|
|
This driver is loosely based on the code of the FreeBSD sio serial driver.
|
|
|
|
A big thanks to Stallion Technologies for the use of their equipment.
|
|
|
|
|