Installing LAVA Multiport Serial PCI cards under QNX 4.25

1. With the power turned off, insert the LAVA Multiport Serial card into any free PCI slot in your computer. Refer to the computer and card manuals for details on how to install PCI cards.

2. Turn on your computer, boot into the QNX 4.25 operating system and log in as "root".

3. Run the "show_pci" utility with the "-v" option.

4. Look through sections starting with the string "Vendor ID = 1407h" in the output of the "show_pci" utility.

5. Write down the base addresses and interrupt lines used by installed ports. Note that for some LAVA devices there are a few addresses in a single line "Base Address = ..." of the "show_pci" utility. All serial ports installed on a single PCI card share the same interrupt line. The number of any given interrupt line can be found in strings beginning "Interrupt Line = ...".

6. Slay the "Dev.ser" driver. Simply type "slay Dev32.ser" in the shell prompt (or "slay Dev16.ser" if you are using a 16 bit driver).

7. Start the serial driver again with the appropriate command line options. Check out the usage message of Dev.ser or refer to the operating system documentation for the command line options of the serial driver.

8. If everything works as expected, edit the file /etc/config/sysinit.<node> to add command line options for "Dev.ser". Everything will be in place after rebooting your system.

Note 1: The master device manager "Dev" has the maximum number of devices set to 64 by default. By installing additional LAVA serial ports, you can easily run over this maximum. In this case you need to pass the appropriate option to "Dev" manager (for example: "Dev -n100").

Note 2: The serial device driver in QNX 4.25 has an internal limitation on the maximum number of serviced devices. This limit is 64 devices per driver instance. If you are going to install more than 64 serial ports into your system you need to run several instances of "Dev.ser" (You need to use the "-Nname" option of the "Dev.ser" driver) or contact QNX technical support for a custom driver.

Note 3: After moving a LAVA Multiport Serial PCI card into another PCI slot of your computer, you likely have to repeat the steps described above because the BIOS could assign other addresses and interrupt lines for your serial ports.

	Example: Installing 12 additional serial ports into computer

1. Two LAVA Multiport Serial boards were installed into PCI slots. Slot 1: "Octopus-550" [eight-port serial PCI board] and slot 2: "Quattro-PCI" [four-port serial PCI board].

2.
Login: root
#

3.
# show_pci | more
...
Vendor ID      = 1407h
Device ID      = 180h
PCI index      = 0h
Class Code     = 70002h Communication (Serial Controller) ProgIF=2
Revision ID    = 0h
Bus number     = 0
Device number  = 9
Function num   = 0
Status Reg     = 480h
Command Reg    = 1h
Header type    = 0h Multi-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 0h
Base Address   = IO@ec00h length 8 bytes IO@e800h length 8 bytes IO@e400h length 8 bytes IO@e000h length 8 bytes
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = 1
PCI Int Pin    = INT A
Interrupt line = 10

Vendor ID      = 1407h
Device ID      = 181h
PCI index      = 0h
Class Code     = 70002h Communication (Serial Controller) ProgIF=2
Revision ID    = 0h
Bus number     = 0
Device number  = 9
Function num   = 1
Status Reg     = 480h
Command Reg    = 1h
Header type    = 0h Multi-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 0h
Base Address   = IO@dc00h length 8 bytes IO@d800h length 8 bytes IO@d400h length 8 bytes IO@d000h length 8 bytes
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = 1
PCI Int Pin    = INT A
Interrupt line = 10

Vendor ID      = 1407h
Device ID      = 120h
PCI index      = 0h
Class Code     = 70002h Communication (Serial Controller) ProgIF=2
Revision ID    = 0h
Bus number     = 0
Device number  = 10
Function num   = 0
Status Reg     = 480h
Command Reg    = 1h
Header type    = 0h Multi-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 0h
Base Address   = IO@cc00h length 8 bytes IO@c800h length 8 bytes
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = 1
PCI Int Pin    = INT A
Interrupt line = 11

Vendor ID      = 1407h
Device ID      = 121h
PCI index      = 0h
Class Code     = 70002h Communication (Serial Controller) ProgIF=2
Revision ID    = 0h
Bus number     = 0
Device number  = 10
Function num   = 1
Status Reg     = 480h
Command Reg    = 1h
Header type    = 0h Multi-function
BIST           = 0h Build-in-self-test not supported
Latency Timer  = 0h
Cache Line Size= 0h
Base Address   = IO@c400h length 8 bytes IO@c000h length 8 bytes
Max Lat        = 0ns
Min Gnt        = 0ns
PCI Int Pin    = 1
PCI Int Pin    = INT A
Interrupt line = 11
...

3.
# slay Dev32.ser

4.
# Dev.ser 3f8,4 2f8,3 cc00,11 c800,11 c400,11 c000,11 ec00,10 e800,10 e400,10 e000,10 dc00,10 d800,10 d400,10 d000,10 &

Note: The numbering of devices under /dev is in accordance with the order of options for Dev.ser. For example, if you want port A on the Quattro-PCI four-port serial board to be /dev/ser1 and port B to be /dev/ser2 you should start the 'Dev.ser' driver like this:
# Dev.ser cc00,11 c800,11 c400,11 c000,11 dc00,10 d800,10 d400,10 d000,10 ec00,10 e800,10 e400,10 e000,10 3f8,4 2f8,3 &

The resulting port assigment will be as follows:

/dev/ser1	-> Quattro PCI Port A
/dev/ser2	-> Quattro PCI Port B
/dev/ser3	-> Quattro PCI Port C
/dev/ser4	-> Quattro PCI Port D
/dev/ser5	-> Octopus PCI Port 5
/dev/ser6	-> Octopus PCI Port 6
/dev/ser7	-> Octopus PCI Port 7
/dev/ser8	-> Octopus PCI Port 8
/dev/ser9	-> Octopus PCI Port 1
/dev/ser10	-> Octopus PCI Port 2
/dev/ser11	-> Octopus PCI Port 3
/dev/ser12	-> Octopus PCI Port 4
/dev/ser13	-> PC port Com 1
/dev/ser14	-> PC port Com 2

5.
# ls /dev
...
ser1
ser10
ser11
ser12
ser13
ser14
ser2
ser3
ser4
ser5
ser6
ser7
ser8
ser9
...

# stty </dev/ser2
Name:  //1/dev/ser2
Type:  serial
Opens: 1 (R-)
Sigint Grp: 0, Sighup pid: 0
+raw
+ihflow +ohflow +lkhflow
start=^Q   stop=^S   min=01   time=00
par=none bits=8 stopb=1 baud=9600 rows=0,0
+DTR +RTS -BRK +cts +dsr -ri +cd ioport=C800 irq=11
#

========================================
Lava Computer MFG Inc.
Technical Support
www.lavalink.com
E-mail: tech@lavalink.com