Skip to end of banner
Go to start of banner

INtime - Using Interrupt Mode

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 5 Next »

Introduction

Using Interrupt Mode, IRQ resource limitations must be considered.

As INtime does not support sharing IRQ lines with Windows devices, the interrupt line which INtime uses must be available for exclusive use.
 

Finding an exclusive IRQ often requires physically moving hardware around in the system or disabling other Windows devices.

This Application Note explaines, how the Interrupt Number is assigned by the System and how to search for a free interrupt number in case of shared IRQ.

Physical Interrupt Number

With PCI / PCIE hardware, interrupt numbers are distributed to the hardware either by the BIOS or the operating system.

By default, our PCI / PCIE cards always request an interrupt and therefore should get one assigned.

In Windows, this is visible in the hardware resources:

By changing the view in the device manager to "ressources by type", the assigned IRQ number for each device is shown:



Interrupte Exclusive Zuordnen

Da es Sache des BIOS und des Betriebssystems ist Hardware-Resourcen zu verteilen gibt es hier, soweit uns bekannt ist, keine Möglichkeit dies manuell zu machen.

Suchen eine freien Interrupts

Das Wechsel von Karten-Slots kann bedingt funktionieren. Generell gibt es 4 Legacy Interrupt-Leitungen (A/B/C/D), die abwechseln den PCI Geräten und auch den PCI-Slot auf einem Main-Board zu geordnet sind.

Zu diesen generellen Leitungen gibt es dann eine Mapping-Matrix auf der Hardware, wo diesen Leitungen einer Interrupt-Nummer zugeordnet werden.

Sollte sich nun ein Karten-Slot mit anderen PCI Geräte in einem Rechner den Interrupt teilen, dann kann versucht werden die anderen Geräte zu deaktivieren.

Dies funktioniert natürlich nur insoweit, wie die Geräte die zu deaktivieren sind nicht vom System benötigt werden.

In diesem Beispiel könnte man versuchen das "Intel Active Management" Gerät zu deaktivieren.

Aber es kann dann auch passieren, das beim nächsten Start, das System einen anderes Gerät so umkonfiguriert das es dann wieder ein Interrupt-sharing gibt.

Interrupt and CIFX Device Driver (INtime)

If the driver identifies a CIFX Card, the CIFX Card will be integrated to its administrative structure.

At the end of the initialisation, the settings from the registry are requested.


The Registry Entry with the requested settings is saved in the following path:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cifXDrv\DeviceConfig\(Article_Number)\(Serial_Number)

or: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cifXDrv\DeviceConfig\Slot\(Slot_Number)

Activate Interrupt Mode

For the interrupt to be enabled, there must be an Interrupt assigned to the Hardware.

the following applies here:

  • Interrupt Number 0 = no Interrupt
  • Interrupt Number > 0 => Phsical Interrupt Number (Legacy Interrupt : 1 - 19)
  • Interrupt Number < 0 => Message based Interrupt Number (MSI)

MSI is not supported by Hilscher CIFX Cards.

Due to the configuration and the information from the INF files for installing the hardware, the operating system is informed that the hardware does not support MSI and therefore does not receive an MSI interrupt number.

Therefore only 0 or interrupt numbers from 1 to 19 are important here.

 

Zu den Informationen von der Hardware liest der Treiber auch noch die User-Settings zu jeder Karte aus der Registry aus, um zu entscheiden ob der Interrupt eingeschaltet werden soll oder nicht.


For the Handling of the Interrupt, a so called Interrupt Thread is needed and the Interrupt needs to be registered to the system.

If an error occurs during this process, although the interrupt was "endabled" in the registry, the internal interrupt flag is deleted and the interrupt handling is "disabled".

The result can be seen in the "Board information" structure, in which "bIrqEnabled" is set to 0.

For more informations about the "Board information" structure, please see page 18 of the following manual: cifX API (Revision 9)


  • No labels