Architektur: USB-Typ-C-Design für ein Windows-System
Beschreibt ein typisches Hardwaredesign eines USB-Typ-C-Systems und die von Microsoft bereitgestellten Treiber, die die Hardwarekomponenten unterstützen. Dieser Artikel gilt für OEMs, die Systeme mit USB-Typ-C-Anschlüssen entwickeln.
- USB-Dual-Role-Funktionen mithilfe von USB Type-C
- Schnelleres Aufladen mit USB Typ-C-Stromstärken und Power Delivery 2.0
- Display-Out Funktionen mithilfe alternativer Modi und kabelgebundener Dockingfunktionen.
Treiber für die Unterstützung von USB-Typ-C-Komponenten
In der obigen Abbildung
GERÄTESEITIGE USB-Treiber
Die geräteseitigen USB-Treiber bedienen die Funktion/das Gerät/Peripheriegerät. Die Erweiterung der USB-Funktionscontrollerklasse unterstützt MTP (Media Transfer Protocol) und das Laden mit BC 1.2-Ladegeräten. Microsoft bietet im Lieferumfang enthaltene Clienttreiber für Synopsys USB 3.0- und ChipIdea USB 2.0-Controller. Sie können einen benutzerdefinierten Clienttreiber für Ihren Funktionscontroller schreiben, indem Sie die Programmierschnittstellen des USB-Funktionscontroller-Clienttreibers verwenden. Weitere Informationen finden Sie unter Entwickeln von Windows-Treibern für USB-Funktionscontroller.
Der SoC-Anbieter stellt Ihnen möglicherweise den USB-Funktionsuntergrenzer-Filtertreiber für die Erkennung von Legacy-proprietären Ladegeräten zur Verfügung. Sie können Einen eigenen Filtertreiber implementieren, wenn der Funktionscontroller Synopsys USB 3.0- oder ChipIdea USB 2.0-Controller ist.
USB-hostseitige Treiber
Die hostseitigen USB-Treiber sind eine Reihe von Treibern, die mit EHCI- oder XHCI-kompatiblen USB-Hostcontrollern funktionieren. Die Treiber werden geladen, wenn der Rollenwechseltreiber die Hostrolle aufzählt. Wenn Ihr Hostcontroller nicht spezifikationskonform ist, können Sie mithilfe der UCX-Programmierschnittstelle (USB Host Controller Extension) einen benutzerdefinierten Treiber schreiben. Weitere Informationen finden Sie unter Entwickeln von Windows-Treibern für USB-Hostcontroller.
Hinweis
Nicht alle USB-Geräteklassen werden auf Windows 10 Mobile unterstützt.
USB-Rollenschaltertreiber (URS)
Systeme können so entworfen werden, dass der USB-Anschluss mit zwei Rollen Windows benötigt, um ihn entweder im Host- oder Funktionsmodus zu konfigurieren. Diese Designs müssen den USB Role Switch (URS)-Treiberstapel verwenden.
Der URS-Treiber verwaltet die aktuelle Rolle des Connectors, Des Hosts oder der Funktion sowie das Laden und Entladen der entsprechenden Geräte- oder Hosttreiber basierend auf Hardwareereignissen von der Plattform. Microsoft bietet im Lieferumfang enthaltene Clienttreiber für Synopsys USB 3.0- und ChipIdea USB 2.0-Controller. Sie können Ihren Rollenwechsel-Clienttreiber mithilfe der Programmierschnittstelle des USB-Dual-Role-Controllertreibers schreiben. Um die Rollenwechseltreiber zu aktivieren, müssen Sie Änderungen an den ACPI-Tabellen vornehmen. Weitere Informationen finden Sie unter USB Dual Role Driver Stack Architecture.
Bei Systemen mit USB-Micro-AB-Anschlüssen wird diese Entscheidung basierend auf dem ID-Pin im Anschluss getroffen. Die ERKENNUNG von ID-Pins wird vom Clienttreiber mithilfe von Interruptressourcen ausgeführt, die ihm zugewiesen sind.
Bei Systemen mit USB-Typ-C-Anschlüssen wird die Entscheidung anhand der CC-Pins getroffen. Der Clienttreiber für den Connector führt die CC-Erkennung durch und leitet diese Informationen an den Rollenwechseltreiber weiter.
USB-Connector-Manager (UCM)
Dieser Satz von Treibern verwaltet alle Aspekte des USB-Typ-C-Anschlusses. Wenn Ihr System einen UCSI-konformen eingebetteten Controller über ACPI implementiert, verwenden Sie den von Microsoft bereitgestellten UCSI-Treiber. Schreiben Sie andernfalls einen UCSI-Clienttreiber für Nicht-ACPI-Transporte.
Wenn Ihre Hardware nicht UCSI-kompatibel ist, wird erwartet, dass Sie einen USB-Typ-C-Connectortreiber, der ein Client ist, in die UCM-Klassenerweiterung schreiben. Gemeinsam verwalten sie einen USB Typ-C-Anschluss und das erwartete Verhalten eines Connectortreibers.
Wenn Sie einen Treiber schreiben, folgt die USB-Connector-Manager-Klassenerweiterung dem WDF-Klassenerweiterungs-Clienttreibermodell. Ihr Clienttreiber kommuniziert mit der Hardware und der Klassenerweiterung, um Aufgaben wie CC-Erkennung, PD-Messaging, Muxing und VBus/VConn-Steuerung zu verarbeiten und eine Richtlinie für die Energiebereitstellung und den alternativen Modus auszuwählen. Die Klassenerweiterung kommuniziert die vom Clienttreiber gemeldeten Informationen an das Betriebssystem. Beispielsweise wird das CC-Erkennungsergebnis verwendet, um die Rollenwechseltreiber zu konfigurieren. Usb-Typ-C/PD-Energieinformationen werden verwendet, um die Ebene zu bestimmen, auf der das System aufgeladen werden soll. Der Clienttreiber verwaltet USB-Typ-C- und PD-Zustandscomputer. Der Clienttreiber kann einige Aufgaben an andere Treiber delegieren, z. B. kann Mux von einem anderen Treiber gesteuert werden. Verwenden Sie zum Schreiben des Clienttreibers die Programmierschnittstellen des USB-Typ-C-Connectors.
USB-Typ-C-Portcontroller
Die Typ-C Port Controller Interface Class Extension (UcmTcpciCx.sys) ist eine Erweiterung des VON Microsoft bereitgestellten USB-Connector-Managers, mit dem sich das Betriebssystem als Typ-C-Port-Manager (TCPM) für einen Connector verhalten kann, der die PD-Zustandscomputer nicht implementiert. Ein UcmTcpciCx-Clienttreiber ermöglicht es der Software TCPM, die Hardware zu steuern und ihre status in Echtzeit abzurufen.
Informationen zum Schreiben des Clienttreibers finden Sie unter Schreiben eines USB-Typ-C-Portcontrollertreibers.
Abrechnung des Schlichtungstreibers
Dieser Treiber wird von Microsoft für Windows 10 Mobile bereitgestellt. Der Treiber fungiert als Arbiter für mehrere Ladequellen. Der USB-Connector-Manager meldet USB-Typ-C- und PD-Ladequelleninformationen an CAD, wodurch eine Auswahl aus diesen Informationen und bc1.2-Ladegeräterkennung getroffen wird, die von den USB-geräteseitigen Treibern (falls zutreffend) durchgeführt wird. CAD meldet dann die am besten geeignete Ladequelle für die Verwendung an das Batteriesubsystem.
Akkutreiber
Der Klassentreiber definiert die Gesamtfunktionalität der Batterien im System und interagiert mit dem Energie-Manager. Der Miniklassentreiber übernimmt gerätespezifische Funktionen wie das Hinzufügen und Entfernen eines Akkus sowie das Nachverfolgen von Kapazität und Ladung. Der Miniklassentreiber exportiert Routinen, die der Klassentreiber aufruft, um Informationen zu den geräten zu erhalten, die er steuert.