Freigeben über


Architektur und Übersicht für HID über den SPI-Transport

In diesem Abschnitt wird der Treiberstapel für Geräte beschrieben, die HID über den SPI-Transport unterstützen.

Architektur und Übersicht

Der HID SPI-Treiberstapel besteht aus vorhandenen und neuen Komponenten, die von Microsoft bereitgestellt werden, sowie aus Komponenten, die vom SPI-Siliziumhersteller bereitgestellt werden. Die folgende Abbildung zeigt den Stapel und diese Komponenten.

Der HID-über-SPI-Treiberstapel.

Windows bietet eine Schnittstelle für einfache Busse mit geringem Stromverbrauch, um effektiv mit dem Betriebssystem zu kommunizieren. Diese Schnittstelle wird als einfacher Peripheriebus (SPB) bezeichnet und unterstützt Busse wie Inter-Integrated Circuit (I2C) und Serial Peripheral Interface (SPI). Weitere Informationen zu SPB finden Sie im Thema Einfacher Peripheriebus (SPB).

Windows stellt einen KMDF-basierten HID-Miniporttreiber bereit, der Version 1.0 der Protokollspezifikation für HID über SPI implementiert. Dieser Treiber hat den Namen HIDSPI.sys. Windows lädt diesen Treiber basierend auf einer kompatiblen ID-Übereinstimmung, die von advanced Configuration and Power Interface (ACPI) verfügbar gemacht wird. Systemintegratoren können eine Erweiterung INF verwenden, um diesen Treiber basierend auf der Hardware-ID ihres Peripheriegeräts zu laden. Der Treiber stellt sicher, dass Apps, die HID IOCTLs verwenden, kompatibilität auf Anwendungsebene für Software, die die HID-IOCTLs und den API-Satz nutzt. Es wird eine GPIO-Verbindung mit dem Treiber bereitgestellt, die es dem Gerät ermöglicht, einen Interrupt zu bestätigen, wenn es Aufmerksamkeit erfordert oder Daten enthält.

Hinweis

Der HIDSPI.sys Gerätetreiber unterstützt nur den SPI-Bus. I2C, SMBUS oder andere Low-Power-Busse in Windows werden nicht unterstützt.

Der SPI-Controllertreiber

Der SPI-Controllertreiber macht eine SPB-IOCTL-Schnittstelle (Serial Peripheral Bus) verfügbar, um Lese- und Schreibvorgänge auszuführen. Dieser Treiber stellt die tatsächlichen systeminternen Controller (z. B. SPI) bereit. Die SPB-Klassenerweiterung übernimmt im Namen des Controllertreibers die gesamte Interaktion mit dem Ressourcenhub und implementiert die erforderlichen Warteschlangen, um gleichzeitige Ziele zu verwalten.

Hinweis

Der HID SPI-Treiber funktioniert nicht auf Systemen, die nicht über einen SPI-Bus verfügen, der mit der SPB-Plattform kompatibel ist. Wenden Sie sich an Ihren Systemhersteller, um zu ermitteln, ob der SPI-Bus auf Ihrem Gerätesystem mit der SPB-Plattform kompatibel ist.

Der GPIO-Controllertreiber

Der GPIO-Controller (Universell Input/Output) übermittelt Interrupts vom Gerät über GPIO. Dies ist häufig eine einfache untergeordnete Komponente, die GPIO-Pins verwendet, um Windows neue Daten oder andere Ereignisse zu signalisieren. GPIO kann das Gerät auch über andere Ansätze als den SPI-Kanal steuern.

Der Ressourcenhub

Verbindungen auf einer SoC-Plattform sind in der Regel nicht auffindbar, da es keine Standards für die Geräteenumeration für die Busse gibt, die in SoC verwendet werden. Daher müssen diese Geräte statisch im ACPI (Advanced Configuration and Power Interface) definiert werden. Darüber hinaus weisen Komponenten häufig mehrere Abhängigkeiten auf, die sich über mehrere Busse erstrecken, im Gegensatz zu einer strengen Verzweigungsstruktur.

Der Ressourcenhub ist ein Proxy, der die Verbindungen zwischen allen Geräten und Buscontrollern verwaltet. Der HIDSPI-Treiber verwendet den Ressourcenhub, um Geräteöffnungsanforderungen an den entsprechenden Controllertreiber umzuleiten. Weitere Informationen zum Ressourcenhub finden Sie im Thema Verbindungs-IDs für verbundene SPB-Geräte .

HIDSPI-Klassenerweiterung (HIDSPICx)

Für Implementierungen, die eine höhere Leistung oder Integration erfordern, ist es systemherstellern möglich, benutzerdefiniertes Silizium für die Verarbeitung von HIDSPI-Transaktionen zu entwickeln. Dazu wird die HIDSPICx-Klassenerweiterung mit Windows bereitgestellt. HIDSPICx ermöglicht die Entwicklung eines benutzerdefinierten HIDSPI HWA-Controllertreibers ohne SpbCx.

Für HWA-Geräte stellt der Anbieter einen Clienttreiber bereit, der für die Implementierung der durch die Klassenerweiterung definierten Schnittstelle und die Kommunikation mit der Klassenerweiterung verantwortlich ist.

Der HIDSPICx- und HWA-Treiberstapel.