Freigeben über


Problembehandlung häufiger Fehler

In diesem Artikel werden häufig auftretende Probleme behandelt, die von Hardwareanbietern und Treiberentwicklern beim Debuggen ihrer I2C-Firmware oder Treibersoftware auftreten können.

HIDI2C-Treiber wird nicht geladen

Ein Szenario, in dem der I2C-Controllertreiber geladen wurde, das Gerät jedoch nicht im Windows Geräte-Manager angezeigt wird, tritt in der Regel auf, wenn ein ungültiger ACPI Source Language (ASL)-Code für den Host oder das Gerät vorhanden ist. Informationen dazu, ob das Problem auf einen Fehler beim InF zurückzuführen ist, finden Sie in der setupapi.dev.log Datei. Ein weiterer Indikator, dass das Problem auf einen Konflikt zurückzuführen ist, ist Fehlercode 10 in Windows Geräte-Manager.

Um das Problem zu beheben, stellen Sie folgendes sicher:

  • Der wert _CID muss PNP0C50 sein.
  • Der I2C-Controller und die Gerätemerkmale im BIOS müssen genau sein.
  • Die HID-Deskriptoradresse (für das Gerät) im BIOS muss genau sein.
  • Der GPIO-Interrupt muss ordnungsgemäß identifiziert und als exklusiv, Level, ActiveLow gekennzeichnet werden.

Weitere Details finden Sie in Abschnitt 13 der HID I2C-Protokollspezifikation .

Ungültiger Berichtsdeskriptor

Wenn der Host den korrekten Berichtsdeskriptor vom Gerät nicht abrufen konnte, stellen Sie sicher, dass:

  • Die Enumerationssequenz muss abgeschlossen werden, bevor der Berichtsdeskriptor abgerufen wird.
  • Der Byteversatz 4 und 6 im HID-Deskriptor muss gültig sein. (Achten Sie besonders auf die Länge.)

Wenn der richtige Berichtsdeskriptor vom Gerät abgerufen wurde, es aber noch ein verwandtes Problem gibt, stellen Sie sicher, dass:

  • Das Feld "wReportDescLength" ist genau.
  • Der HID-Bericht ist korrekt formatiert. (Um die Ergebnisse zu überprüfen, testen Sie einen alternativen Bus wie USB.)

Häufig gestellte Fragen

In diesem Abschnitt werden Häufig gestellte Fragen von Hardwareanbietern und Treiberentwicklern erläutert.

  • Funktioniert der HiDI2C-Treiber für den Windows 8-Posteingang für HID-Geräte, die über I2C verbunden sind?

    • Ja, es funktioniert, sofern die Firmware mit dieser HID I2C-Protokollspezifikation kompatibel ist.
  • Was ist die Datenstruktur, die zwischen Geräten (z. B. Tastaturen) und Betriebssystemtreibern kommuniziert wird?

    • Die Datenstruktur würde sich in Form eines Eingabeberichts befinden, der durch einen Berichtsdeskriptor gemäß HID-Standard definiert wurde. Das Gerät selbst anstelle von HIDI2C definiert die Eingabeberichtsstruktur. Sie melden die Tastaturverwendungen wie bei einer USB-Tastatur, und stellen dann den Deskriptor und die entsprechenden INPUT-Berichte gemäß der HID I2C-Spezifikation bereit.
  • Wenn mehrere Berichte gleichzeitig gepuffert werden, was sollte das Gerät tun?

    • Wenn mehrere Berichte gepuffert werden, sollte das Gerät den bestätigten Interrupt beibehalten, bis der letzte Bericht gelesen wird (bestätigt). Solange nach einem bestimmten Lesevorgang mehr Daten zu melden sind, sollte das Gerät die Zeile beibehalten, die mithilfe einer GPIO-Einstellung für den Levelauslöser bestätigt wird.
  • Ist es richtig zu sagen, dass wir den gleichen DevicePath für USB- und I2C-Konnektivität erhalten sollten?

    • Nein, der Gerätepfad ist nicht identisch zwischen USB und I2C. Die Unterschiede sind geringfügig, aber bemerkenswert. Weitere Informationen finden Sie im Abschnitt "Hardware-ID" im Windows Driver Kit (WDK).
  • Was ist der erforderliche I2C-Übertragungsgrenzwert, damit HIDI2C-Geräte den HiDI2C-Treiber des Windows-Posteingangs verwenden können?

    • Alle I2C-Controller sind erforderlich, um Übertragungen bis zu 4 KB zu unterstützen. Die maximale LÄNGE des HID-Berichtsdeskriptors beträgt 4 KB.