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 |