Freigeben über


Primäre und sekundäre Unterbrechungen

GPIO-Unterbrechungsbehandlung ist inhärent ein zweistufiger Prozess. Der Interrupt des General-Purpose-IO-Controllers (GPIO), der bewirkt, dass die GPIO-Framework-Erweiterung (GpioClx) die Interrupt-Serviceroutine (ISR) ausführt, wird als primärer Interrupt bezeichnet. Dieser ISR ordnet den unterbrechenden GPIO-Pin einem globalen Systeminterrupt (GSI) zu und übergibt diesen GSI an die Hardware-Abstraktionsebene (HAL). Die HAL generiert einen sekundären Interrupt , um einen zweiten ISR auszuführen, der logisch mit dem GPIO-Pin über diese GSI verbunden ist. Dieser Prozess wird im Diagramm in der GPIO-Treiberunterstützungsübersicht angezeigt.

GpioClx implementiert eine ISR zur Bearbeitung von Unterbrechungsanforderungen, die der GPIO-Controller über GPIO-Pins erhält, welche als Interrupteingaben konfiguriert sind. Wenn ein Peripheriegerät einen Interrupt auf einem GPIO-Pin bestätigt und der Interrupt im GPIO-Controller aktiviert und entmasket wird, bestätigt die GPIO-Controllerhardware einen Interrupt für den Prozessor. Als Reaktion auf diesen Interrupt fragt der ISR in GpioClx den GPIO-Controller ab, um den GPIO-Pin zu identifizieren, der den Interrupt generiert hat, und bestimmt dann, welcher GSI diesem Pin zugewiesen ist. Die GpioClx ISR übergibt diese GSI an die HAL, und die HAL ruft den ISR auf, der logisch mit der GSI verbunden ist.

In der Regel gehört dieser zweite ISR zum Treiber für das Peripheriegerät, das den Interrupt auf dem GPIO-Pin bestätigt hat. Informationen dazu, wie ein Peripheriegerätetreiber seinen ISR logisch mit einem GPIO-Interrupt-Pin verbindet, finden Sie unter GPIO-Based InterruptRessourcen.