Freigeben über


Plug & Play Unterstützung für I2C

In diesem Artikel werden Plug-and-Play-Unterstützung für Geräte beschrieben, die HID über den I2C-Transport unterstützen.

Treiberladevorgang

Windows lädt den HID I2C-Klassentreiber basierend auf einer kompatiblen Id-Übereinstimmung zwischen einem Hardwarebezeichner und dem INF. Die erweiterte Konfiguration und Power Interface (ACPI) generiert den Bezeichner. Der Hardwarebezeichner wird für den I2C-Geräteknoten in ACPI generiert. Alle HID I2C-kompatiblen Geräte müssen zusätzlich zu einem eindeutigen Hardwarebezeichner den Kompatibilitätsbezeichner verfügbar machen.

Die ACPI 5.0-Spezifikation enthält Unterstützung für HID-Klassengeräte. Die ACPI-Definitionen für HID I2C sind wie folgt.

Feld Wert ACPI-Objekt Format Kommentare
Kompatible ID PNP0C50 _CID Zeichenfolge im Format von ACPI0C50 oder PNP0C50 CompatibleID
Hardware-ID Herstellerspezifisch _HID Zeichenfolge im Format von VVVVddddd (z. B. NVDA0001) VendorID + DeviceID
Subsystem Herstellerspezifisch _SUB Zeichenfolge im Format von VVVVsss (z. B. INTL1234) SubVendorID + SubSystemID
Hardwarerevision Herstellerspezifisch _HRV 0xRRRRR (Zwei-Byte-Revision) RevisionID
Aktuelle Ressourceneinstellungen Herstellerspezifisch _CRS Bytedatenstrom Muss I2CSerialBus und GPIO_INT für I2C-Controller und GPIO-Unterbrechungen enthalten.
Gerätespezifische Methode GUID {3CDFF6F7-4267-4555-AD05-B30A3D8938DE} _DSM Paket Definiert eine Struktur, die die HID-Beschreibungsadresse enthält.

Jedes HID I2C-Gerät muss die folgenden Pflichtfelder bereitstellen:

  • Kompatible ID
  • Hardware-ID
  • Hardwarerevision
  • Aktuelle Ressourceneinstellungen
  • Gerätespezifische Methode

Weitere Informationen finden Sie in der Advanced Configuration and Power Interface Specification Version 5.0.

Die folgenden Hardware-IDs und kompatiblen IDs stellen ein Beispiel für ein zufälliges HID I2C-Gerät bereit. Diese Details basieren auf einem Beispielgerät, das sich als HID mit einer Sammlung auf oberster Ebene der Klasse "herstellerspezifisch" meldet.

Advanced Configuration and Power Interface (ACPI) generiert die folgenden Hardware-IDs und kompatiblen IDs, um den HID I2C-Transporttreiber zu laden:

Hardwarebezeichner: Kompatible Bezeichner

ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz;: ACPI\PNP0C50

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyy;:

Im vorherigen Beispiel wurde die Hardware-ID mithilfe der Werte generiert, die aus der _HID ACPI-Methode für das Beispielgerät extrahiert wurden. Die kompatible ID wird mithilfe der Werte generiert, die aus der _CID ACPI-Methode für das Beispielgerät extrahiert wurden. Die kompatible ID für eine HID über I2C muss immer für Version 1.0 PNP0C50 werden.

Hinweis Wenn Sie einen INF angeben, sollten Sie nur die Hardwarebezeichner in der linken Spalte der vorherigen Tabelle verwenden. (Verwenden Sie nicht den kompatiblen Bezeichner in der rechten Spalte.)

Die Hardware-ID für den HID-Clientgeräteknoten, der von der komponente HIDClass.sys generiert wird, lautet wie folgt:

Hardwarebezeichner: Kompatibler Bezeichner

HID\VEN_MSFT&DEV_0010&REV_0002&Col01;: N/A

-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01;: N/A

-HID\*MSFT0010Col01: N/A

-HID_DEVICE_UP:FF00_U:0001;: N/A

-HID_DEVICE: N/A

HIDClass.sys generiert die Hardware-ID und ist für alle Transporte identisch. Dieser Bezeichner basiert auf Werten, die an HIDClass.sys von HIDI2C.sys (extrahiert aus ACPI) übergeben werden.

Geräteenumerationssequenz

Sobald ein HID I2C-Gerätetreiber (HIDI2C.sys) geladen wurde, beginnt er mit dem Gerät über den I2C-Bus zu kommunizieren. Der erste Vorgang, den der Treiber ausführt, ist die Geräteaufzählungssequenz.

Die folgende Liste gibt die Enumerationssequenz an. Die Reihenfolge dieser Liste kann sich in zukünftigen Versionen von Windows ändern.

  1. Rufen Sie DEN ACPI Source Language (ASL) -Code für HID I2C-GERÄT aus dem System-BIOS ab.

  2. HiD-Deskriptor vom Gerät abrufen.

    • HID-Beschreibungsadresse schreiben
    • HID-Deskriptor lesen
  3. Ausgeben eines SET_POWER auf das Gerät.

    • Befehl SET_POWER schreiben
  4. Ausgeben eines RESET (Vom Host initiiertes Zurücksetzen) auf das Gerät.

    • Befehl 'ZURÜCKSETZEN schreiben'
    • Device asserts GPIO interrupt
    • Lesewert (0x00 0x00) aus dem Eingaberegister
  5. Abrufen des Berichtsdeskriptors vom Gerät.

    • Schreibberichtdeskriptoradresse
    • Berichtsdeskriptor lesen

Wenn der HOST keine der Schritte 1-5 mit dem GERÄT erfolgreich abgeschlossen hat, kann der HIDI2C-Treiber mit dem Fehlerwert Code 10 geladen werden. Es gibt keine Wiederholungslogik, die in einen dieser Befehle integriert ist.

Hinweis: Die Schritte 4 und 5 können parallel ausgeführt werden, um die Zeit auf I2C zu optimieren. Da Berichtsdeskriptoren (a) statisch und (b) lang sind, kann Windows 8 eine Anforderung für 5 ausgeben, während sie auf eine Antwort vom Gerät auf 4 wartet.

Unterstützte HID I2C-Befehle

HIDI2C.SYS Treiber unterstützt die folgenden Befehle:

Get-Help Wie diese verwendet wird Wann sie verwendet wird
Zurücksetzen Windows unterstützt die vom Host initiierte Zurücksetzung. Windows gibt diesen Befehl in den folgenden Szenarien aus – Geräteinitialisierung – Deaktivieren/Aktivieren – Deinstallieren/erneutes Installieren
Abrufen/Set_Report Windows unterstützt die Befehle "Abrufen/Set_Report". Windows gibt diesen Befehl in den folgenden Szenarien aus – wenn ein HID-Clienttreiber eine Anforderung zum Abrufen/Festlegen eines Featureberichts ausgibt - wenn ein HID-Clienttreiber einen synchronen Eingabe-/Ausgabebericht ausgibt
Set_Power Windows unterstützt den Befehl Set_Power Windows gibt diesen Befehl in den folgenden Szenarien aus – wenn das System in einen Energiesparmodus S3 / angeschlossenen Standbyzustand wechselt – wenn das System ausgeschaltet wird.