Udostępnij przez


Sterownik oprogramowania interfejsu systemowego łącznika USB typu C® (UCSI)

Firma Microsoft udostępnia sterownik zgodny ze specyfikacją interfejsu UCSI (USB Type-C® Connector System Software Interface) na potrzeby transportu Advanced Configuration and Power Interface (ACPI). Jeśli projekt zawiera kontroler osadzony z transportem ACPI, zaimplementuj UCSI w systemie BIOS/EC i załaduj standardowy sterownik UCSI (UcmUcsiCx.sys i UcmUcsiAcpiClient.sys).

Jeśli sprzęt zgodny ze standardem UCSI korzysta z transportu innego niż ACPI, musisz napisać sterownik klienta interfejsu użytkownika.

Sterowniki do obsługi komponentów USB Type-C dla systemów z osadzonymi kontrolerami

Oto przykład systemu z osadzonym kontrolerem.

Diagram składników oprogramowania Type-C USB.

Przełączanie roli USB jest obsługiwane w oprogramowaniu układowym systemu. Stos sterowników sterujących przełącznikiem ról USB nie został załadowany. W innym systemie stos sterowników może nie zostać załadowany, ponieważ funkcja podwójna nie jest obsługiwana.

  • Sterowniki po stronie urządzenia USB

    Sterowniki po stronie urządzenia USB obsługują funkcję/urządzenie/sprzęt peryferyjny. Rozszerzenie klasy kontrolera funkcji USB obsługuje protokół MTP (Media Transfer Protocol) i ładowanie przy użyciu ładowarki BC 1.2. Firma Microsoft udostępnia wbudowane sterowniki klienta dla kontrolerów Synopsys USB 3.0 i ChipIdea USB 2.0. Niestandardowy sterownik klienta dla kontrolera funkcji można napisać przy użyciu interfejsów programowania sterowników klienta kontrolera funkcji USB. Aby uzyskać więcej informacji, zobacz Tworzenie sterowników systemu Windows dla kontrolerów funkcji USB.

    Dostawca SoC może zapewnić niższy sterownik filtru funkcji USB do wykrywania ładowarki. Jeśli używasz wbudowanego sterownika klienta Synopsys USB 3.0 lub ChipIdea USB 2.0, możesz zaimplementować własny sterownik filtru.

  • Sterowniki po stronie hosta USB

    Sterowniki po stronie hosta USB to zestaw sterowników współpracujących z kontrolerami hosta USB zgodnymi ze standardami EHCI lub XHCI. Jeśli sterownik przełącznika ról wylicza rolę hosta, sterowniki są ładowane. Jeśli kontroler hosta nie jest zgodny ze specyfikacją, możesz napisać sterownik niestandardowy przy użyciu interfejsu programowania rozszerzenia kontrolera hosta USB. Aby uzyskać więcej informacji, zobacz Tworzenie sterowników systemu Windows dla kontrolerów hosta USB.

  • Menedżer łącznika USB

    Firma Microsoft udostępnia wbudowany sterownik UCSI z systemem Windows (UcmUcsiCx.sys), który implementuje funkcje zdefiniowane w specyfikacji interfejsu programowego systemu łącznika USB Type-C. W specyfikacji opisano możliwości UCSI. Wyjaśniono w nim rejestry i struktury danych dla projektantów składników sprzętu, konstruktorów systemów i deweloperów sterowników urządzeń.

    Ten sterownik jest przeznaczony dla systemów z kontrolerami osadzonymi. Ten sterownik jest klientem sterownika rozszerzenia klasy łącznika USB dostarczonego przez firmę Microsoft (Ucmcx.sys). Sterownik obsługuje zadania, takie jak inicjowanie żądania do oprogramowania układowego w celu zmiany danych lub ról zasilania oraz uzyskiwanie informacji potrzebnych do dostarczania komunikatów dotyczących rozwiązywania problemów użytkownikowi.

Polecenia UCSI wymagane przez system Windows

Zobacz specyfikację UCSI dla poleceń wymaganych we wszystkich implementacjach UCSI.

Oprócz poleceń oznaczonych jako Wymagane system Windows wymaga następujących poleceń:

  • GET_ALTERNATE_MODES
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: System lub kontroler musi obsługiwać następujące powiadomienia w SET_NOTIFICATION_ENABLE:
    • Zmiana obsługiwanych możliwości dostawcy
    • Wynegocjowana zmiana poziomu zasilania
  • GET_CONNECTOR_STATUS: system lub kontroler musi obsługiwać te zmiany stanu łącznika w GET_CONNECTOR_STATUS:
    • Zmiana obsługiwanych możliwości dostawcy
    • Wynegocjowana zmiana poziomu zasilania

Aby uzyskać więcej informacji, zobacz Implementacja UCSI w systemie BIOS firmy Intel.

UCM-UCSI urządzenie ACPI dla UCSI 2.0 lub nowszego

Począwszy od aktualizacji wrześniowej systemu Windows 11, wersja 22H2, sterowniki urządzeń UCM-UCSI ACPI obsługują specyfikację UCSI w wersjach 2.0 i 2.1. Specyfikacja UCSI 2.0 zawiera zmiany powodujące niekompatybilność w mapowaniu pamięci jej struktur danych, jak zdefiniowano w Tabeli 3-1 Specyfikacji UCSI Struktury danych.

Aby zachować zgodność wsteczną, system Windows wymaga, aby UCSI PPM wersji specyfikacji 2.0 lub wyższej zaimplementował następującą funkcję _DSM w urządzeniu ACPIUCM-UCSI w oprogramowaniu układowym ACPI i zwrócił wartość niezerową, aby wskazać, że UCSI OPM powinien postępować zgodnie ze zgłoszoną wersją specyfikacji UCSI.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: Identyfikator poprawki = 0
  • Arg2: Indeks funkcji = 5
  • Arg3: Pusty pakiet (nie jest używany)

Wartość zwracana:

Składnik Typ obiektu Opis
UsePpmReportedUcsiVersion Liczba całkowita (32-bitowa) 0x00000000 (ustawienie domyślne): jeśli VERSION struktura zdefiniowana w specyfikacji interfejsu użytkownika Table 3-1 Data Structures ma wartość 2.0 lub nowszą, funkcja OPM interfejsu użytkownika nadal jest zgodna ze specyfikacją interfejsu użytkownika 1.2. W przeciwnym razie UCSI OPM postępuje zgodnie ze specyfikacją UCSI, zgodnie z wartością VERSION w strukturze.

Uwaga / Notatka

W przypadku urządzeń UCM-UCSI ACPI ta funkcja jest nowa w istniejącej metodzie _DSM. Inne funkcje tej metody _DSM powinny zostać zaimplementowane zgodnie z dokumentem implementacji systemu BIOS Intel dotyczącym UCSI. Funkcja 0, która zwraca maskę bitową wszystkich obsługiwanych funkcji, powinna zostać odpowiednio zaktualizowana.

Przykładowy przepływ dla UCSI

W przykładach w tej sekcji opisano interakcję między sprzętem i oprogramowaniem układowym USB Type-C, sterownikiem UCSI oraz systemem operacyjnym.

Wykrywanie ról DRP

  1. USB Type-C sprzęt lub oprogramowanie układowe wykrywa zdarzenie podłączenia urządzenia. System DRP systemu Windows 10 początkowo staje się rolą UFP.

    1. Oprogramowanie układowe wysyła powiadomienie wskazujące zmianę łącznika.
    2. Sterownik UCSI wysyła żądanie GET_CONNECTOR_STATUS.
    3. Oprogramowanie układowe odpowiada, że jego stan połączenia = 1 i typ partnera łącznika = DFP.
  2. Sterowniki w stosie funkcji USB odpowiadają na enumerację.

  3. Rozszerzenie klasy menedżera łącznika USB rozpoznaje, że stos funkcji USB jest załadowany, więc system jest w nieprawidłowym stanie. Informuje sterownik UCSI, aby wysłał żądania „Set USB Operation Role” oraz „Set Power Direction Role” do oprogramowania układowego.

  4. Sprzęt/oprogramowanie układowe USB Type-C inicjuje operację zamiany ról za pomocą programu DFP.

Wykrywanie stanu błędu niezgodności ładowarki

  1. USB Type-C sprzęt/firmware wykrywa podłączenie ładowarki oraz negocjuje domyślny kontrakt zasilania. Zauważa również, że ładowarka nie zapewnia wystarczającej mocy dla systemu.

  2. USB Type-C sprzęt/oprogramowanie układowe ustawia bit wolnego ładowania.

    1. Oprogramowanie układowe wysyła powiadomienie wskazujące zmianę łącznika.
    2. Sterownik UCSI wysyła żądanie GET_CONNECTOR_STATUS.
    3. Oprogramowanie układowe odpowiada stanem połączenia = 1, typ partnera łącznika = DFP, i stan ładowania baterii = Slow/Trickle.
  3. Rozszerzenie klasy menedżera złącza USB wysyła powiadomienie do interfejsu użytkownika, aby wyświetlić komunikat o niezgodności ładowarki.

Jak przetestować UCSI

Istnieje wiele sposobów testowania implementacji UCSI. Aby przetestować poszczególne polecenia w implementacji UCSI BIOS/EC, użyj programu UCSIControl.exe, który jest dostarczany w pakiecie oprogramowania Microsoft USB Test Tool (MUTT). Aby przetestować kompletną implementację UCSI, należy użyć zarówno testów UCSI, które można znaleźć w zestawie Windows Hardware Lab Kit (HLK), jak i kroków w Type-C Ręczne procedury interoperacyjne.

UCSIControl.exe

Poszczególne polecenia można przetestować w implementacji BIOS/EC UCSI przy użyciu UCSIControl.exe. To narzędzie umożliwia wysyłanie poleceń UCSI do oprogramowania układowego za pośrednictwem sterownika UCSI. Wymaga to załadowania i uruchomienia sterownika. Masz również włączony interfejs testowy do sterownika. Domyślnie ten interfejs nie jest włączony, aby uniemożliwić dostęp do nieautoryzowanych użytkowników w systemie detalicznym.

  1. Znajdź węzeł urządzenia w Menedżerze urządzeń (devmgmt.msc) o nazwie Menedżer złącza USB UCSI. Węzeł znajduje się w kategorii Kontrolery uniwersalnej magistrali szeregowej .

  2. Wybierz i przytrzymaj lub kliknij prawym przyciskiem myszy urządzenie. Wybierz pozycję Właściwości i otwórz kartę Szczegóły .

  3. Wybierz Ścieżka instancji urządzenia z menu rozwijanego i zapisz wartość właściwości.

  4. Otwórz Edytor rejestru (regedit.exe).

  5. Przejdź do ścieżki instancji urządzenia pod tym kluczem.

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<device-instance-path>\Device Parameters

  6. Utwórz wartość DWORD o nazwie TestInterfaceEnabled i ustaw wartość na 0x1.

  7. Aby ponownie uruchomić urządzenie, w węźle urządzenia w Menedżerze urządzeń wybierz pozycję Wyłącz, a następnie wybierz pozycję Włącz. Alternatywnie można ponownie uruchomić komputer.

Pomoc można wyświetlić, uruchamiając UcsiControl.exe /?.

Oto typowe polecenia:

Polecenie UCSI UcsiControl.exe polecenie
Resetowanie aplikacji PPM UcsiControl.exe Wyślij 0 1
Resetowanie łącznika Resetowanie nietrwałe: UcsiControl.exe Wyślij 0 10003

Twarde resetowanie: UcsiControl.exe Wyślij 0 810003
Włącz powiadomienia Wszystkie powiadomienia: UcsiControl.exe Wyślij 0 ffff0005

Tylko uzupełnianie poleceń: UcsiControl.exe Wyślij 0 00010005

Brak powiadomienia: UcsiControl.exe Wyślij 0 00000005
Uzyskiwanie możliwości UcsiControl.exe Wyślij 0 6
Pobierz możliwości łącznika UcsiControl.exe Wyślij 0 10007
Ustaw UOM DFP: UcsiControl.exe Wyślij 0 810008

UFP: UcsiControl.exe Wyślij 0 1010008

DRP: UcsiControl.exe Wyślij 0 2010008
Ustaw UOR DFP: UcsiControl.exe Wyślij 0 810009

UFP: UcsiControl.exe Wyślij 0 1010009

Zaakceptuj: UcsiControl.exe Wyślij 0 2010009
Ustaw PDR Dostawca: UcsiControl.exe Wysłać 0 81000B

Odbiorca: UcsiControl.exe wyślij 0 101000B

Zaakceptuj: UcsiControl.exe Wyślij 0 201000B
Pobierz PDO Źródło lokalne: UcsiControl.exe Send 7 00010010

Ujście lokalne: UcsiControl.exe Wyślij 3 00010010

Zdalne źródło: UcsiControl.exe wyślij 7 00810010

Zdalny odbiornik: UcsiControl.exe Wyślij 3 00810010
Uzyskiwanie stanu łącznika UcsiControl.exe Wyślij 0 010012
Pobierz stan błędu UcsiControl.exe Wyślij 0 13