Sdílet prostřednictvím


Ovladač systémového softwarového rozhraní konektoru USB Type-C® (UCSI)

Společnost Microsoft poskytuje ovladač kompatibilní se specifikací USB Type-C® Connector System Interface (UCSI) pro přenos rozhraní ACPI (Advanced Configuration and Power Interface). Pokud váš návrh obsahuje integrovaný řadič s přenosem ACPI, implementujte UCSI do systému BIOS/EC a načtěte integrovaný ovladač UCSI (UcmUcsiCx.sys a UcmUcsiAcpiClient.sys).

Pokud váš hardware kompatibilní s UCSI používá jiný přenos než ACPI, musíte napsat klientský ovladač UCSI.

Ovladače pro podporu komponent Type-C USB pro systémy s vloženými řadiči

Tady je příklad systému s vloženým kontrolerem.

Diagram softwarových komponent USB Type-C

V předchozím příkladu se přepínání rolí USB řeší ve firmwaru systému, takže zásobník ovladačů pro přepínání rolí USB není načten. V jiném systému se zásobník ovladačů nemusí načíst, protože duální funkce není podporována.

Na předchozím obrázku:

  • ovladače USB na straně zařízení

    Ovladače USB na straně zařízení obsluhují funkci, zařízení/periferní zařízení. Rozšíření třídy kontroleru funkce USB podporuje MTP (Media Transfer Protocol) a nabíjení pomocí nabíječek BC 1.2. Microsoft poskytuje klientské ovladače in-box pro řadiče Synopsys USB 3.0 a ChipIdea USB 2.0. Vlastní klientský ovladač pro váš řadič funkce můžete napsat pomocí rozhraní klientského ovladače ovladače funkce USB. Další informace naleznete v tématu Vývoj ovladačů systému Windows pro řadiče funkcí USB.

    Výrobce SoC vám může poskytnout dolní filtr ovladače USB pro detekci nabíječky. Pokud používáte klientský ovladač Synopsys USB 3.0 nebo ChipIdea USB 2.0, můžete implementovat vlastní ovladač filtru.

  • ovladače USB na straně hostitele

    Ovladače na straně hostitele USB jsou sada ovladačů, které pracují s hostitelskými řadiči USB kompatibilními s rozhraním EHCI nebo XHCI. Ovladače se načtou, pokud ovladač přepínače role vyčíslí roli hostitele. Pokud váš hostitelský kontroler nedodržuje specifikaci, můžete napsat vlastní ovladač pomocí programovacího rozhraní rozšíření hostitelského adaptéru USB (UCX). Informace naleznete v tématu Vývoj ovladačů systému Windows pro řadiče hostitele USB.

    Ve Windows 10 Mobile se nepodporují všechny třídy zařízení USB.

  • správce konektoru USB

    Microsoft poskytuje ovladač UCSI in-box s Windows (UcmUcsiCx.sys), který implementuje funkce definované v USB Type-C Connector System Software Interface Specification. Specifikace popisuje možnosti UCSI a vysvětluje registry a datové struktury pro návrháře hardwarových komponent, tvůrce systémů a vývojáře ovladačů zařízení.

    Tento ovladač je určený pro systémy s vloženými řadiči. Tento ovladač je klientem rozšíření třídy správce USB konektorů od Microsoftu (Ucmcx.sys). Ovladač zpracovává úlohy, jako je zahájení požadavku na firmware, aby změnil data nebo role napájení a získal informace potřebné k poskytování zpráv o řešení potíží uživateli.

Příkazy UCSI vyžadované systémem Windows

Viz specifikace UCSI pro příkazy, které jsou vyžadovány ve všech implementacích UCSI.

Kromě příkazů označených jako Povinnévyžaduje systém Windows tyto příkazy:

  • ZÍSKAT_ALTERNATIVNÍ_REŽIMY
  • ZÍSKEJ_PODPOROVANÉ_KAMERY
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: Systém nebo kontroler musí podporovat následující oznámení v rámci SET_NOTIFICATION_ENABLE:
    • Změna podporovaných možností poskytovatele
    • Vyjednaná změna úrovně napájení
  • GET_CONNECTOR_STATUS: Systém nebo kontroler musí podporovat tyto změny stavu konektoru v rámci GET_CONNECTOR_STATUS:
    • Změna podporovaných možností poskytovatele
    • Vyjednaná změna úrovně napájení

Informace o úlohách potřebných k implementaci UCSI v systému BIOS naleznete v tématu Intel BIOS Implementace UCSI.

UCM-UCSI zařízení ACPI pro UCSI 2.0 a novější

Od Windows 11, verze 22H2 zářijová aktualizace, ovladače zařízení Windows UCM-UCSI ACPI podporují specifikaci UCSI verze 2.0 a 2.1. Specifikace UCSI 2.0 má zásadní změny v mapování paměti svých datových struktur, jak je definováno ve specifikaci UCSI tabulka 3-1 datové struktury. Aby systém Windows zachoval zpětnou kompatibilitu, vyžaduje, aby PPM UCSI specifikace verze 2.0 nebo vyšší implementoval následující funkci _DSM pod zařízením ACPI UCM-UCSI ve firmwaru ACPI a vrátil nenulovou hodnotu, která indikuje, že UCSI OPM by měl postupovat podle hlášené verze specifikace UCSI.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: ID revize = 0
  • Arg2: Index funkce = 5
  • Arg3: Prázdný balíček (nepoužívá se)

Návratová hodnota:

Element Typ objektu Popis
UsePpmReportedUcsiVersion Celé číslo (32bitová verze) 0x00000000 (Výchozí): Pokud má struktura VERSION, jak je definována v tabulce 3-1 datových struktur ve specifikaci UCSI , hodnotu 2,0 nebo vyšší, UCSI OPM stále dodržuje specifikaci UCSI 1.2. V opačném případě se UCSI OPM řídí specifikací UCSI podle hodnoty ve struktuře VERSION.

Poznámka

U UCM-UCSI zařízení ACPI se jedná o novou funkci v existující metodě _DSM. Další funkce této metody _DSM by měly být implementovány podle implementace systému Intel BIOS dokumentu UCSI. Funkce 0, která vrací bitovou masku všech podporovaných funkcí, by se měla odpovídajícím způsobem aktualizovat.

Příklad toku pro UCSI

Příklady uvedené v této části popisují interakci mezi usb Type-C hardwarem/firmwarem, ovladačem UCSI a operačním systémem.

Detekce rolí DRP

  1. USB Type-C hardware/firmware detekuje událost připojení zařízení a systém Windows 10 DRP zpočátku přejde do role UFP.
    1. Firmware odešle oznámení o změně konektoru.
    2. Ovladač UCSI odešle žádost o GET_CONNECTOR_STATUS.
    3. Firmware reaguje na stav připojení = 1 a typ partnera konektoru = DFP. ​
  2. Ovladače v zásobníku funkcí USB reagují na enumeraci.
  3. Rozšíření třídy správce konektoru USB rozpozná, že je načten zásobník funkcí USB, a systém je tedy ve špatném stavu. Říká ovladači UCSI, aby odeslal žádosti Nastavit roli operace USB a Nastavit roli směru napájení firmwaru.
  4. Hardware/firmware USB Type-C zahajuje operaci změny rolí s DFP.

Zjištění chybového stavu neshody nabíječky

  1. USB Type-C hardware/firmware zjistí, že je nabíječka připojená a vyjednává výchozí kontrakt napájení. Také je vidět, že nabíječka neposkytuje dostatek energie systému.

  2. USB Type-C hardware/firmware nastaví bit pro pomalé nabíjení.

    1. Firmware odešle oznámení o změně konektoru.
    2. Ovladač UCSI odešle žádost o GET_CONNECTOR_STATUS.
    3. Firmware reaguje stavem připojení = 1, typem partnera konektoru =DFP a stavem nabíjení baterie = slow/Trickle.
  3. Rozšíření třídy správce konektoru USB odešle oznámení do uživatelského rozhraní, aby se zobrazila zpráva pro řešení problémů s nesouladem nabíječky.

Testování UCSI

Existuje mnoho způsobů, jak otestovat implementaci UCSI. Pokud chcete testovat jednotlivé příkazy v implementaci UCSI BIOS/EC, použijte UCSIControl.exe, který je k dispozici v MUTT Software Pack. Pro otestování úplné implementace UCSI použijte testy UCSI, které lze najít v sadě Windows Hardware Lab Kit (HLK), a kroky v Type-C Ručním interoperačním postupu.

UCSIControl.exe

Jednotlivé příkazy v implementaci UCSI BIOS/EC můžete otestovat pomocí UCSIControl.exe. Tento nástroj umožňuje odesílat příkazy UCSI do firmwaru prostřednictvím ovladače UCSI. Vyžaduje, aby byl ovladač načtený a spuštěný a má také povolené testovací rozhraní pro ovladač. Ve výchozím nastavení není toto rozhraní povolené, aby se zabránilo jeho zpřístupnění neoprávněným uživatelům v maloobchodním systému.

  1. Vyhledejte uzel zařízení ve Správci zařízení (devmgmt.msc) s názvem UCSI USB Connector Manager. Uzel je v kategorii řadičů univerzální sériové sběrnice.

  2. Vyberte a podržte (nebo klikněte pravým tlačítkem) na zařízení a vyberte Vlastnosti a otevřete kartu Podrobnosti.

  3. V rozevíracím seznamu vyberte cestu k instanci zařízení a poznamenejte si hodnotu vlastnosti.

  4. Otevřete Editor registru (regedit.exe).

  5. Přejděte na cestu instance zařízení nacházející se pod tímto klíčem.

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<cesta instance zařízení>\Parametry zařízení

  6. Vytvořte hodnotu DWORD s názvem TestInterfaceEnabled a nastavte hodnotu na 0x1.

  7. Restartujte zařízení tak, že na uzlu zařízení ve Správci zařízení vyberete možnost Zakázat a pak vyberete Povolit. Případně můžete počítač restartovat.

Nápovědu můžete zobrazit spuštěním příkazu UcsiControl.exe /?.

Tady jsou běžné příkazy:

Příkaz UCSI příkaz UcsiControl.exe
Resetování PPM UcsiControl.exe Odeslat 0 1
Resetování konektoru Obnovitelné resetování: UcsiControl.exe Odeslat 0 10003

Pevné resetování: UcsiControl.exe Odeslat 0 810003
Nastavit povolení oznámení Všechna oznámení: UcsiControl.exe Odeslat 0 ffff0005

Pouze dokončení příkazu: UcsiControl.exe Odeslat 0 00010005

Bez oznámení: UcsiControl.exe Odeslat 0 00000005
Získání schopností UcsiControl.exe Odeslat 0 6
Získání funkce konektoru UcsiControl.exe Odeslat 0 10007
Nastavení UOM DFP: UcsiControl.exe Odeslat 0 810008

UFP: UcsiControl.exe Odeslat 0 1010008

DRP: UcsiControl.exe Odeslat 0 2010008
Nastavit UOR DFP: UcsiControl.exe Odeslat 0 810009

UFP: UcsiControl.exe Odeslat 0 1010009

Přijmout: UcsiControl.exe Odeslat 0 2010009
Nastavit PDR Poskytovatel: UcsiControl.exe Odeslat 0 81000B

Spotřebitel: UcsiControl.exe Odeslat 0 101000B

Přijmout: UcsiControl.exe Odeslat 0 201000B
Získání PDOs Místní zdroj: UcsiControl.exe Odeslat 7 00010010

Místní jímka: UcsiControl.exe Odeslat 3 00010010

Vzdálený zdroj: UcsiControl.exe Odeslat 7 00810010

Vzdálená jímka: UcsiControl.exe Odeslat 3 00810010
Získání stavu konektoru UcsiControl.exe Odeslat 0 010012
Získání stavu chyby UcsiControl.exe Odeslat 0 13