Home
Developer Resources
QNX RTOS v4
QNX RTOS v4 Knowledge Base

QNX RTOS v4 Knowledge Base

Foundry27
Foundry27
QNX RTOS v4 project
Resources

QNX RTOS v4 Knowledge Base

Title Adaptec SCSI controller for QNX2
Ref. No. QNX.000009457
Category(ies) Filesystem
Issue Trying to get the disk.ahascsi to work on fast Pentium II/III computers.

We are using the Adaptec 1542CP scsi controller, which works on a Pentium 100.

adaptec_test returns error code fffc i.e. Unable to setup interrupt.

We are using Int 12 (PS2 mouse has been disabled in setup) IO base address 330, DMA channel 5, and default BIOS address DC000 (QNX ArcNet card is set at CC000).


Solution The problem you are experiencing is most likely due to the fact that QNX2 was not designed for Faster PII and PIII machines.  Try the troubleshooting tips contained later in this document, and if you still have problems, then see the article on "Problems booting QNX2.21 on Pentium II/III machines".

Notes on the Adaptec SCSI host adapter driver -- disk.ahascsi

Getting Started
---------------
The hard disk driver disk.ahascsi is a SCSI hard disk  driver which  works  with  the Adaptec line of SCSI host adapters.  The host adapter models currently supported are:
        AHA-1540A/1542A (ISA bus)
        AHA-1540B/1542B (ISA bus)
        AHA-1640/1642  (MCA bus)
        AHA-1740/1742  (EISA bus)

This incarnation of the driver supports up to seven  physical SCSI devices  (targets). Direct-Access Devices (including removable media  drives), Winchesters, WORMs, CD-ROMs and magneto-optical  (erasable optical) drives are all currently supported.
When  the  driver  is  mounted  it  performs auto sensing to determine the base port address, IRQ level, and DMA channel.  After setting up the interrupt service routine the driver is ready to mount physical SCSI devices.  A SCSI device is installed by mounting it using its target ID. The target ID is passed to the mount command by the "p=" option, the number specified is the target ID plus one.
For example, target 3 is a CD-ROM and targets 0 and 1 are SCSI  hard  disk  drives; to mount the first QNX partition of target 1 as drive 3 you would issue:

mount disk 3 /drivers/disk.ahascsi p=2 pa=qnx

(Note how the physical drive number given to mount with "p=2" is the SCSI target ID plus one)
To mount the CD-ROM as drive 6 you could use:

mount disk 6 d=3 p=4

Since  SCSI  drives  are addressed by block number and not by head, cylinder, and sector; you should NOT specify the  h=, t=, n= parameters when mounting the device as this will confuse the driver.  The driver automatically sets the heads to 64, the number of sectors per track to 32 and calculates the appropriate number of cylinders.
The disk.ahascsi driver is a caching driver and therefore can make use of the a1, a2, and a3 parameters of mount.  The default settings are 8 buffers of 8 blocks each (a1=8 a2=8).

To gain a fairly significant increase in sequential read/write performance without affecting random access performance too much, the driver can be mounted with 8 buffers of 16 blocks each:

mount disk 3 /drivers/disk.ahascsi p=2 pa=qnx a1=8 a2=16

If the auto sensing is causing a problem when attempting to mount the driver, it can be over-ridden by specifying the correct base port address:

mount disk 3 /drivers/disk.ahascsi p=2 pa=qnx c=330

In  order to boot from hard disk the BIOS ROM must be enabled and the base port address must be set to 330 hex (this is a restriction of the BIOS, not the driver).

A Note on CD-ROMs and WORMs
---------------------------

This version of the AHA-154xA driver supports Read-Only(CD-ROM) and Write-Once(WORM) devices.  As neither of these types of devices allow the media to be erased, a QNX file system cannot be placed onto these devices. These devices can only be accessed with the low-level disk routines:  disk_open(),  disk_close(), disk_read_blk(), and disk_write_blk().  For specialized applications which may need greater functionality than this, there is a method to send a SCSI command through the file system.
For example source on how to do this please see the source on the update system in the "/nfree/disk/scsi/control" directory.
You will also need the libraries from the "/nfree/disk/libs" directory.

Using the AHA-154xA with a standard hard disk controller
--------------------------------------------------------

The Adaptec AHA-154xA can be used in conjunction with a standard AT  compatible hard disk controller.  The two possible areas of conflict which must be resolved are the BIOS address space of the cards in your system and in the case of the AHA-1542A, which card is to control the floppy drives.  If cards in your system have over-lapping BIOS address spaces you will experience unpredictable behavior from the system and it will usually become catatonic.

By default the QNXnet networking cards are shipped with their BIOS address space starting at segment DC00 as it happens the Adaptec AHA-154xA is also shipped with this address range selected.  In order for these cards to get along one of them will have to move to a new address.  One possibility is to move the AHA-154xA's address space to start at segment D800.  This is accomplished by placing a jumper over the left hand pair of pins of J10 on the Adaptec card and removing any jumper from the right hand pair of pins of J10.

If you are installing an AHA-1542A which has a floppy controller built into it and you also have a standard hard disk/floppy disk controller in the system the floppy controller of one of the cards will have to be disabled.  To do this you can use the floppy controller on the 1542A and disable the other floppy controller by moving it's base port address to the secondary address range 370-377 (hex).

A system with a standard hard disk controller, an  AHA-154xA, a QNXnet card and a VGA video card installed in it, may have it's BIOS addresses arranged like this:

    VGA video card            C000
    Hard disk controller      C800
    Adaptec AHA-154xA        D800
    QNXnet network card      DC00

Trouble Shooting
----------------
If you are having problems getting started with your AHA-154xA card here is a check list you can review.

- Are all the jumpers except those which need to be changed in their default positions?

- Is the card's BIOS in conflict with any other BIOS in the system?

- Do all devices on the SCSI bus (including the AHA-154xA) have parity uniformly enabled or disabled?

- If you have both internal and external SCSI devices attached to the card have you removed the termination resistors from the AHA-154xA?

- Are you sure you are specifying the proper target ID to the mount command (p=target_id + 1 ) ? Is the target ID set correctly on the device?

- If you mount the device with the "+v" option what error code is returned?

        Possible Error Codes
        0xEF  (-17)        Unable to locate SCSI Host Adapter
        0xEE  (-18)        SCSI Host Adapter failed diagnostics
        0xED  (-19)        Unable to attach to free port
        0xEC  (-20)        Unable to initialize interrupt vector
        0xEB  (-21)
        0xEA  (-22)        Error initializing mail-boxes
        0xE9  (-23)        Error executing AHA-154xA command
        0xE8  (-24)        Card installed is not supported by this version
        0xE7  (-25)        Device not ready
        0xE6  (-26)        Unable to start device
        0xE5  (-27)        Error during SCSI Inquiry
        0xE4  (-28)        Error during SCSI Request Capacity
        0xE3  (-29)        Error during SCSI Request Partial Capacity
        0xE2  (-30)        No SCSI devices found
        0xE1  (-31)
        0xE0  (-32)
        0xDF  (-33)        Unexpected event type
        0xDE  (-34)        Unsupported SCSI version
        0xDD  (-35)        Unsupported SCSI device
        0xDC  (-36)        Unsupported user command

For more details on configuring the Adaptec AHA-154xA card please refer to the appropriate installation guide:

            AHA-1540A/1542A Installation Guide
            AHA-1540B/1542B Installation Guide
            AHA-1740/1742 Installation Guide