Checkliste für GPIO-Controlleranforderungen
In diesem Thema werden die Hardware-, Firmware- und Softwareanforderungen für gpio-Controllergeräte (Universell IO) zusammengefasst, die für Windows verfügbar gemacht werden.
Hardwareanforderungen für GPIO-Controller
Der GPIO-Controller ist in den SoC integriert (nicht durch einen SPB-Bus verbunden).
Erhöht die Zuverlässigkeit von emuliertem ActiveBoth.
Interrupts im Pegelmodus werden unterstützt.
Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.
Sowohl hohe als auch niedrige Unterbrechungspolaritäten werden unterstützt.
Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.
Die Unterbrechungspolarität kann zur Laufzeit neu programmiert werden.
Erforderlich für emulierte ActiveBoth- und Debounce-Emulationsfeatures.
Firmwareanforderungen für GPIO-Controller
GPIO-Controller_CRS enthält alle Ressourcen für alle Pinbanken im Controller.
GPIO-Controller _CRS Ressourcenreihenfolge ermöglicht die Interruptzuordnung zwischen Bank und System.
_AEI Methode und Ereignismethoden (_Exx, _Lxx oder _EVT) sind für alle GPIO-signalierten ACPI-Ereignisse vorhanden.
GPIO-Controller _DSM enthalten, wenn activeBoth-Unterbrechungen, die mit dem Controller verbunden sind, logikhoch anstelle von Logik niedrig festgelegt sind.
Implementieren Sie _REG Methoden für jeden GPIO-Controller, und verhindern Sie die Verwendung von GeneralPurposeIO OpRegions, wenn _REG angibt, dass der Regionshandler nicht verfügbar ist.
Das Debounce-Timeout ist im GPIOInt-Ressourcendeskriptor für alle Interrupts enthalten, die debouncing erfordern.
GPIO-Controllertreiberanforderungen
Unterstützt Version 2 der Schnittstelle zwischen GpioClx und dem GPIO-Controllertreiber:
Implementieren Sie die rückruffunktion CLIENT_QueryEnabledInterrupts . Dies hilft erheblich bei der Diagnose von Unterbrechungsstürmen.
Wenn das Flag BankIdlePowerMgmtSupported in der CONTROLLER_BASIC_INFORMATION-Struktur festgelegt ist, muss der GPIO-Controllertreiber die CLIENT_SaveBankHardwareContext und CLIENT_RestoreBankHardwareContext Rückruffunktionen implementieren, und diese Funktionen müssen den Bankkontext entsprechend speichern/wiederherstellen, einschließlich des maskierten/nicht maskierten Zustands der Interrupts. Beachten Sie, dass interrupts zum Zeitpunkt des Aufrufs dieser Funktion nicht garantiert getrennt werden, aber wenn sie noch verbunden sind, werden sie garantiert maskiert.
Wenn das DeviceIdlePowerMgmtSupported-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur festgelegt ist, müssen die CLIENT_StartController - und CLIENT_StopController-Rückruffunktionen den Kontext für alle Banken entsprechend speichern/wiederherstellen, einschließlich des maskierten/nicht maskierten Zustands der Interrupts. Beachten Sie, dass interrupts zum Zeitpunkt des Aufrufs dieser Funktion nicht garantiert getrennt werden, aber wenn sie noch verbunden sind, werden sie garantiert maskiert.
Legen Sie das EmulateDebouncing-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur fest. Dies erhöht die Rauschimmunität für Geräte, deren Interrupts einer elektrostatischen Entladung unterliegen (z. B. Tasten, Stecker usw.).
Legen Sie das EmulateActiveBoth-Flag in der CONTROLLER_BASIC_INFORMATION-Struktur fest, und implementieren Sie die rückruffunktion CLIENT_ReconfigureInterrupt . Dadurch wird eine zuverlässige Edgeerkennung für ActiveBoth-Interrupts sichergestellt.