Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einige allgemeine I/O-Controllergeräte (GPIO) können ihre GPIO-Pins so konfigurieren, dass sie als Interrupt-Anforderungseingaben funktionieren. Diese Interruptanforderungseingaben werden von Peripheriegeräten gesteuert, die physisch mit den GPIO-Pins verbunden sind. Die Treiber für diese GPIO-Controller können Unterbrechungsanforderungen für einzelne GPIO-Pins aktivieren, deaktivieren, maskieren, entsperren und löschen.
Die Unterstützung für GPIO-Unterbrechungen ist optional. Die GPIO-Frameworkerweiterung (GpioClx) erfordert keine GPIO-Controller, um GPIO-Unterbrechungen zu unterstützen.
In diesem Abschnitt
| Thema | BESCHREIBUNG |
|---|---|
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. |
|
Treiber für Peripheriegeräte, die Unterbrechungen an allgemeine I/O-GPIO-Pins senden, erwerben GPIO-Interrupts als abstrakte Interrupt-Ressourcen von Windows. Kernelmodustreiberframework (KMDF)- Treiber erhalten diese Ressourcen über ihre EvtDevicePrepareHardware-Ereignisrückruffunktionen . |
|
Ab Windows 8 können Kernelmodustreiber-Framework (Kernel-Mode Driver Framework, KMDF) und Benutzermodustreiber-Framework (User-Mode Driver Framework, UMDF) als Option ihre Interruptdienstroutinen (Interrupt Service Routines, ISRs) registrieren, um auf passiver Stufe ausgeführt zu werden. |
|
Als Option kann der Treiber für einen allgemeinen I/O-Controller (GPIO) Unterstützung für GPIO-Unterbrechungen bereitstellen. Zur Unterstützung von GPIO-Unterbrechungen implementiert ein GPIO-Controllertreiber eine Reihe von Rückruffunktionen, um diese Unterbrechungen zu verwalten. Der Treiber enthält Zeiger auf diese Rückruffunktionen im Registrierungspaket, das der Treiber bereitstellt, wenn er sich als Client der GPIO-Framework-Erweiterung (GpioClx) registriert. |
|
Unterbrechen der Synchronisierung für GPIO-Controllertreiber |
GPIO-Controllertreiber können die GPIO_CLX_AcquireInterruptLock - und GPIO_CLX_ReleaseInterruptLock Methoden aufrufen, um Sperrungen abzurufen und freizugeben, die intern durch die GPIO-Frameworkerweiterung (GpioClx) implementiert werden. Treiber-Code, der unter IRQL = PASSIVE_LEVEL ausgeführt wird, kann diese Methoden aufrufen, um mit der Interrupt-Dienstroutine (ISR) in GpioClx zu synchronisieren. GpioClx widmet eine separate Interrupt-Sperre jeder Bank von Pins im GPIO-Controller. |
Aktivieren und Deaktivieren freigegebener GPIO-Unterbrechungen |
In einigen Fällen können Interrupt-Anforderungsleitungen von zwei oder mehr Peripheriegeräten an dasselbe physische Universal-I/O-Pin (GPIO) angeschlossen werden. Der GPIO-Pin für eine gemeinsame Interrupt-Leitung ist in der Regel für pegelausgelöste Interrupts konfiguriert. |
Allgemeine I/O(GPIO)-Pins, die als Interrupteingaben konfiguriert sind, können zusätzlich zur Aktivierung und Deaktivierung maskiert und entmasket werden. |