Yannick Dadji
|
start up behaviour of Qnx, Interrupt handling
|
Yannick Dadji
06/20/2008 4:16 AM
post9452
|
start up behaviour of Qnx, Interrupt handling
Hello,
we have written a driver application for a PCI extender card and notice a strange behaviour in the interrupt handling.
When we start the driver application immediatly after new booting of the PC, we notice that the interrupt handling is
not working properly: some interrupts are not registered by the system.
The system we use is a PC with Gygabyte 8knxp and pentium 4 processor running QNX 6.3.0 sp 2 (we had other difficulties
with 6.3.2)
We use interruptAttach() to attach a ISR to the interrupt line. When the system registers an interrupt, the ISR sends
and event to a Int_Thread that handle the interrupt at a lower priority. Since the card generates an interrupt every 125
µs, we measure the time distance (by generating a pulse to the parallel port and sending the signal to a scope) between
two successive interrupts that the Int_Thread receives. At this point we notice that some Interrupt are failing
(distance 250 and 375 µs).
After further debug operation, we noticed that the ISR a times sends the event to the Int_Thread with a delay of up to
200µs. furthermore we notice that execution of the Interruptunmask() function int the Int_Thread also occurs with delay
(ca. 300µs) at times. This leads the system to remain in an interruptmask state for some 100 µs and no further
interrupt can be registered.
This behaviour is not common, since it just happen immediatly after the new booting of the OS. if we wait 10 minutes,
then every interrupt handling is ok.
Does someone have an explanation for this phenomenon?
Thank
Dadji
|
|
|