Freigeben über


Designhandbuch für einfachen Peripheriebus (SPB)

In diesem Abschnitt wird beschrieben, wie Sie einen Treiber für ein einfaches Peripheriebus-Controllergerät (SPB) oder für ein Peripheriegerät schreiben, das mit einem SPB verbunden ist. Die SPB-Kategorie umfasst Busse wie beispielsweise I²C und SPI. Der Hardwareanbieter für ein SPB-Controllergerät bietet einen SPB-Controllertreiber zum Verwalten der Hardwarefunktionen im Controller. Dieser Treiber unterstützt möglicherweise eine Familie ähnlicher Controllergeräte. Der Hardwareanbieter für ein MIT SPB verbundenes Peripheriegerät bietet einen SPB-Peripherietreiber zum Verwalten der Hardwarefunktionen im Peripheriegerät. Dieser Treiber unterstützt möglicherweise eine Familie von Peripheriegeräten auf einer Vielzahl von Hardwareplattformen, die kompatible SPBs bereitstellen.

In Versionen von Windows vor Windows 8 erhielt das Betriebssystem Informationen von SPB-verbundenen Geräten auf einer PC-Hauptplatine nur indirekt über die Plattformfirmware. Ab Windows 8 können Hardwareanbieter Windows-Treiber bereitstellen, um ihre SPB-Controller und ihre SPB-verbundenen Peripheriegeräte direkt zu steuern und diese Geräte für die Verwendung durch das Betriebssystem und von Anwendungen verfügbar zu machen. Weitere Informationen finden Sie unter SPB-Controllertreiber und SPB-Peripheriegerätetreiber.

SPBs werden häufig verwendet, um periphere Geräte mit niedriger Geschwindigkeit mit Hauptplatinen-Chipsätzen und System-on-Chip (SoC)-Modulen zu verbinden. Ein integrierter Schaltkreis erfordert weniger Pins, um eine Verbindung mit einem seriellen Bus herzustellen als mit einem parallelen Bus, der mehrere Bits von Daten pro Taktzyklus überträgt. In der Regel werden SPBs in kostensensiblen Anwendungen verwendet, bei denen niedrige Pinanzahlen und einfache Verbindungen wichtiger sind als die Datenübertragungsgeschwindigkeit. Da SPBs mit geringen Geschwindigkeiten ausgeführt werden und nur wenige elektrische Verbindungen erfordern, werden sie häufig in Anwendungen verwendet, in denen Akkuleistung gespart werden muss.

Die PC-Hauptplatine in einem Laptopcomputer kann z. B. einen I²C-Bus verwenden, um mit einem Gerät mit niedriger Geschwindigkeit zu kommunizieren, das den Akkustand überwacht. Ebenso kann das SoC-Modul auf einem Smartphone oder einem anderen mobilen Gerät einen I²C-Bus verwenden, um eine Verbindung mit einem Sensorgerät herzustellen, z. B. einem Beschleunigungsmesser, einem GPS-Gerät oder einem Temperatursensor.

Ein SPB ist kein Plug- und Play-Bus. Peripheriegeräte verfügen in der Regel über feste Verbindungen mit einem SPB und können nicht entfernt werden. Selbst wenn ein Peripheriegerät von einem Steckplatz auf einem SPB getrennt werden kann, ist der Steckplatz in der Regel diesem Gerät zugeordnet. Während des Systemstarts listet die ACPI-Firmware auf der Hardwareplattform die SPB-verbundenen Peripheriegeräte für den Plug and Play-Manager auf und gibt die Hardwareressourcen an, die für jedes Gerät vorgesehen sind.

In diesen Ressourcen ist eine Verbindungs-ID enthalten, die die Verbindung des Geräts mit dem SPB identifiziert. Die Verbindungs-ID kapselt die Informationen (z. B. eine Busadresse und eine Busuhrfrequenz), die ein SPB-Controller zum Herstellen einer Verbindung mit dem Gerät benötigt. Andere Hardwareressourcen können einen Interrupt enthalten, mit dem der Treiber seinen ISR verbindet. Die Hardwareressourcen für das Gerät enthalten jedoch keinen Arbeitsspeicher für Geräteregister. Ein mit SPB verbundenes Peripheriegerät ist nicht speichergebunden und kann nur über den SPB aufgerufen werden. Weitere Informationen finden Sie unter Verbindungs-IDs für SPB-Connected Peripheriegeräte.

Ein SPB bietet keine busspezifischen Mittel, um Unterbrechungsanforderungen von Peripheriegeräten an den Prozessor zu übermitteln. Stattdessen signalisiert ein SPB-verbundenes Peripheriegerät eine Unterbrechung durch einen separaten Hardwarepfad, der sich außerhalb des SPB- und des SPB-Controllers befindet. Die Interrupt-Dienstroutine (ISR) für ein SPB-verbundenes Peripheriegerät muss unter IRQL = PASSIVE_LEVEL ausgeführt werden, damit E/A-Anforderungen synchron gesendet werden können, um serial auf die Hardwareregister des Geräts über den SPB zuzugreifen. Weitere Informationen finden Sie im Abschnitt Interrupts von SPB-Connected Peripheriegeräten.