PCI with QNX


We have a computer system installed with QNX 4.25. We have installed 2 non-intelligent PCI serial cards on the same. We have developed a source code which detects presence of serial cards in the system and finds out base address and interrupt assigned to each card. Our program starts an instance of Dev.ser with detected base address and irq as command line arguments. This works fine and our serial communication application program adrresses the serial ports without any problem. We have observed that system assigned interrupt 9 to card 1 and 11 to card2.

If we disconnect ps/2 mouse from our computer, we observed that the card 1 is assigned IRQ 12 and card 2 is assigned IRQ11. Our utility for detecting the setting works fine and is able to detect the setting configured for the cards. After running Dev.ser with new configuration, our serial communication software is also found working fine. But we observed that keyboard responds slowly with this new IRQ assignment.

Is there any way of assigning fixed IRQs (9 & 11) for our PCI serial
communication cards? Since serial communication is critical function of our
system, we do not want presence/absence of other devices like keyboard and mouse to affect the serial communication software. Please help…


You will need to play with your BIOS options. or even move the card to different PCI slots.

To follow up what noc said, the pci server in qnx4 and qnx6 (on x86) basically uses the pci bios to do everything. The IRQ routing is set by the bios, so if you can’t set the IRQ’s the way you want (allow only one IRQ per slot and assign which IRQ it is), you may want to choose a different PC/BIOS.

What I don’t understand is why it should matter which IRQ your serial card gets. The driver can figure out which one you got and attach to it. The problem should be to solve why the keyboard is slow when you have a certain IRQ assignment.

There are several threads lately about IRQ handling and determinism which don’t directly help you, but they are interesting reading and generally apply to both QNX4 and QNX6.