Freigeben über


Simple Peripheral Bus (SPB)

Hinweis

Dieser Artikel enthält Verweise auf den Begriff Slave, einen Begriff, den Microsoft nicht mehr verwendet. Sobald der Begriff aus der Software entfernt wird, wird er auch aus diesem Artikel entfernt.

Dieses Thema behandelt Empfehlungen für den einfachen peripheren Bus in Windows 10. Windows bietet Unterstützung für einfache Busse mit geringem Stromverbrauch wie Inter Integrated Circuit (I²C) und (I²C) und Simple Peripheral Interface (SPI) unter Verwendung von Frameworkerweiterungen des Kernelmodus Driver Framework (KMDF)-Architektur. Controllertreiber sind nicht im Lieferumfang enthalten. Chipsatz-Hersteller, OEMs oder IHVs müssen einen in KMDF implementierten Controller-Treiber entwickeln. Die Architektur bietet flexible Gerätekonfigurationstopologien, die die gleichzeitige Verwendung von Bussen für Steuerungs- und Datentransaktionen sowie GPIO für Signalisierung und Interrupts unterstützen. Die vollständige Gerätedefinition wird durch Advanced Configuration and Power Interface (ACPI) definiert.

Unter Windows werden Busse durch KMDF-Controller-Treiber unterstützt. Mit Hilfe der KMDF-Plattform wird der Controller-Treiber überwiegend dazu verwendet, die hardwarespezifischen Schnittstellen zu definieren, die zur Ermöglichung der Controller-Funktion notwendig sind.

Die Windows-Infrastruktur unterstützt Geräte, die Busse gemeinsam nutzen, Busse, die auf derselben Leitung gemultiplext sind, und Gerätekonfiguration über ACPI. Windows verwendet ACPI als primäres Mittel zur Geräteidentifikation, -konfiguration und -steuerung.

Die folgende Tabelle fasst die Unterstützung für den Simple Peripheral Bus zusammen.

Bus Eingangsunterstützung Framework-Erweiterung bereitgestellt Zulässiger Drittanbieter Weitere Details zur Unterstützung
Drittanbieter erlaubt Nein Ja Ja, mit SPB Framework-Erweiterung

Nur Master

„Allgemeiner Aufruf“ wird nicht unterstützt

Direct Memory Access (DMA) wird unterstützt

SPI Nein Ja Ja, mit SPB Framework-Erweiterung

Nur Master, „Allgemeiner Aufruf“ wird nicht unterstützt

Vollduplex wird unterstützt

DMA wird unterstützt

MIPI-HSI No No Ja, mit Windows Driver Foundation (WDF)
MIPI-SLIMbus No No Ja, mit WDF
MIPI-CSI No No Ja, mit WDF
UART Nein Ja Ja, mit Serial Framework-Erweiterung (SerCx2)

DMA wird unterstützt

Benutzerdefinierte Übertragungsmodi, die mit SerCx2 unterstützt werden

Überlegungen zum Design für SPB

Im Folgenden finden Sie einige allgemeine Überlegungen zu SPB:

  • SPB ist kein Plug-and-Play-Bus. Peripheriegeräte haben typischerweise feste Verbindungen zu einem SPB und können nicht entfernt werden. Systemhersteller müssen genaue Informationen in ACPI sicherstellen, um die mit SPB verknüpften Peripheriegeräte für den Plug-and-Play-Manager aufzulisten, und die Hardwareressourcen angeben, die jedem Gerät zugeordnet sind.

  • Es gibt keine In-Band-Interrupt-Unterstützung für SPB. Die meisten Peripheriegeräte unterstützen die Gerätesignalisierung über einen separaten Interrupt-Mechanismus (häufig GPIO-basiert) und werden in ACPI genau abgebildet.

  • Windows bietet Unterstützung für die SPB-Klassenerweiterung (spbcx.sys) in Windows 8 und höher. SoC-Partner sind für die Entwicklung und Weiterverteilung ihres entsprechenden SPB-Controller-Treibers verantwortlich.

  • Peripherietreiber für SPB-Geräte werden im Allgemeinen von SPB-Gerätepartnern bereitgestellt. Microsoft bietet einen Klassentreiber für SPB-Geräte für HID über I²C (hidi2c.sys).

  • Geräteklassen können HLK-Anforderungen oder WEG-Anleitungen zu den folgenden Themen im Zusammenhang mit I²C bereitstellen:

    • Teilen des I²C-Controllers mit anderen Geräten
    • Bevorzugte Signalgeschwindigkeit von I²C
    • Energieverwaltung und Aktivierungsszenarien über I²C und GPIO.
  • Inter Integrated Circuit (I²C): I²C ist der primäre Bus, der als Teil von SPB validiert ist und auf SoC-Systemen dringend empfohlen wird.

    Microsoft stellt „Windows Hardware Compatibility Program Anforderungen für I²C bereit. Verwenden Sie das Windows Hardware Lab Kit (HLK), um Geräte anhand dieser Anforderungen zu testen.

  • Simple Peripheral Interface (SPI): Die Unterstützung für SPI ist optional und hängt vom SoC-Partner ab. Das Windows Hardware Compatibility Program enthält keine spezifischen Anforderungen für den SPI-Bus.

Systemübergreifende Unterstützung für SPB

Microsoft unterstützt SPB auf Arm-Systemen und x86/x64-Plattformen (die in S3-Konfigurationen ausgeführt werden). Microsoft unterstützt SPB auf Plattformen, die sowohl in Connected Standby (CS)- als auch in S3-Konfigurationen ausgeführt werden.

Bitte kontaktieren Sie Ihren Plattformanbieter für Treiber und Support.

Es gibt eine Reihe von Geräteszenarien, die SPB für Konnektivität nutzen. I²C ist bei den traditionellen Leistungsmodellen CS und S3 verfügbar. Moderne SoCs mit Low-Power-Kernen auf dem SoC-Sensor können bei Bedarf Nicht-I²C-Lösungen implementieren.

Geräte an abnehmbaren Docks/Anschlüssen sollten auch die Anleitungen zu Docking-Szenarien befolgen, die ebenfalls im WEG enthalten sind. Einige dieser Geräte sind möglicherweise sinnvoller über Busse wie USB als über I²C.

SPB-Framework-Erweiterung

Die SPB-Framework-Erweiterungsbibliothek erweitert das Windows Driver Framework, um SPB-Treiber zu unterstützen. Das SPB-Framework vereinfacht die Entwicklung eines SPB-Controller-Treibers und verbessert die Kompatibilität zwischen Peripherietreibern und dem Controller-Treiber, indem es eine gemeinsame Implementierung der „oberen Hälfte“ des Treibers bereitstellt, der E/A-Anforderungen verarbeitet (im Vergleich zur „unteren Hälfte“, das von der oberen Hälfte angetrieben wird und die Hardware steuert). Die SPB Framework-Erweiterung ist eine KMDF-Erweiterungsbibliothek. Es handhabt die Vorabverarbeitung von SPB-Anforderungen und die Reihenfolge, in der sie an den Steuerungstreiber übergeben werden. Die SPB-Framework-Erweiterung wurde entwickelt, um I²C- und SPI-Busse zu unterstützen, und kann für andere Busse mit ähnlicher Semantik geeignet sein.

Serielle Framework-Erweiterung

Die serielle Framework-Erweiterungsbibliothek erweitert das Windows Driver Framework, um Treiber für serielle Controller zu unterstützen. Ähnlich wie das SPB-Framework vereinfacht das serielle Framework die Entwicklung eines seriellen Controller-Treibers und verbessert die Kompatibilität zwischen Peripherietreibern und dem Controller-Treiber, indem es eine gemeinsame Implementierung der "oberen Hälfte" des Treibers bereitstellt, der E/A-Anforderungen verarbeitet. Die serielle Framework-Erweiterung ist eine KMDF-Erweiterungsbibliothek. Es übernimmt die Vorabverarbeitung der Aufrufe an die seriellen APIs und die Reihenfolge, in der sie an den Controller-Treiber übergeben werden. Die serielle Framework-Erweiterung wurde entwickelt, um die modernen UART-Controller zu unterstützen und die Implementierung und Diagnose von Controller-Treibern zu vereinfachen.

I²C- und UART-HLK-Anforderungen

Es gibt Anforderungen für das Hardwarekompatibilitätsprogramm für I²C- und UART-Controller. Anforderungen für SPI werden auch für die Zukunft in Betracht gezogen. Die Logo-Anforderungen richten sich in erster Linie an SoC-Siliziumanbieter für die Busschnittstellenhardware und die zugehörigen Controller-Treiber. OEMs und ODMs müssen die Hardware oder den Controller-Treiber nicht erneut validieren, können die Tests jedoch auf Wunsch gerne durchführen. Zur Validierung dieser Anforderungen sind spezielle Einrichtungsschritte erforderlich. Die Einrichtung umfasst Folgendes:

  • Ein offenes System mit zugänglichen I²C/UART-Pins/Ports
  • Änderungen in ACPI, um das I²C/UART-Testgerät für Software verfügbar zu machen
  • Ein spezifisches Testgerät (WITT), das an das zu validierende System angeschlossen ist

Weitere Informationen zur Einrichtung finden Sie in der Dokumentation zum Hardware Lab Kit (HLK).

Peripherietreiber

Peripheriegeräte werden von ACPI aufgelistet und sind im Allgemeinen statisch. Periphere Funktionstreiber bestimmen ihre geeigneten Busressourcen, indem sie mit den Rahmenerweiterungen interagieren. Peripheriegeräte und Controller sind nicht hierarchisch, und Peripheriegeräte können mehrere SPB, GPIO, Serial und andere Hochgeschwindigkeitsbusse verwenden. Peripherietreiber, die auf eingebettete Geräte wie Sensoren, Eingabegeräte, Modems und Funkgeräte zugreifen, können im Kernelmodus oder im Benutzermodus geschrieben werden. Diese Treiber können in verschiedenen ODM- oder OEM-Board-Konfigurationen portierbar sein, solange ACPI entsprechend aktualisiert wird.

Firmware

Controller-ACPI-Einstellungen und Busparameter sind herstellerspezifisch und vom jeweiligen Controller abhängig. Die folgende Tabelle fasst die ACPI-Einstellungen für den Controller und den Peripheriebus zusammen.

Bus Controller ACPI-Einstellungen Periphere ACPI-Einstellungen
Drittanbieter erlaubt

Controller-Adressen

Pin-Konfiguration

Bus-Adressen

Taktfrequenz

Slave-Modus

Adressierungsmodus

SPI

Controller-Adressen

Pin-Konfiguration

Chipauswahllinie

Taktfrequenz

Taktpolarität

Taktphase

Wire-Modus

Geräteauswahl

Polarität der Geräteauswahl

Slave-Modus

UART

Controller-Adresse / Pin

Konfigurieren Sie die anfängliche Baudrate

Anfangsbaudrate

Parität

Start-Bit und Stop-Bit Länge

Flusssteuerungsmethode (Hardware/Software/Keine)

Linien im Einsatz

Puffergröße empfangen

Puffergröße übertragen

Endian-ness

Ein ACPI-Beispiel finden Sie unter Abrufen der Verbindungseinstellungen für ein Gerät. Weitere Informationen zum Integrieren von Geräten in Low-Power-Busse finden Sie unter Zugreifen auf GPIO-, I2C- und UART-Geräte.

Tools und technische Referenz

Ressourcentitel Inhaltstyp Beschreibung Link
Verwenden des Windows Driver Framework zum Erstellen besserer Treiber Video Erläutert, wie das WDF die Treiberzuverlässigkeit verbessern kann und wie Energieeinsparungen besser realisiert und Treiber auf mehreren Windows-Versionen bereitgestellt werden können. Channel 9
Verständnis von Low-Power Bussen Video Demonstriert, wie ein Gerät in die neuen Busse integriert und ein Treiber erstellt wird. Sie lernen, wie Sie ACPI schreiben, um Ihr Peripheriegerät aufzuzählen, und beginnen mit dem Schreiben und Testen eines Peripherietreibers. Channel 9
Designleitfaden für das Kernelmodus-Treiber-Framework Artikel Führt Kernel-Mode Driver Framework (KMDF) ein. MSDN
UMDF 1.x-Designleitfaden Artikel Führt User-Mode Driver Framework (UMDF) ein. MSDN
Windows-Hardware-Kompatibilitätsprogramm Artikel Enthält Informationen zum Windows-Zertifizierungsprogramm. MSDN