Драйвер системного программного интерфейса соединителя USB Type-C® (UCSI)
Корпорация Майкрософт предоставляет драйвер, совместимый со спецификацией интерфейса программного обеспечения разъема USB Type-C® (UCSI), для транспорта интерфейса расширенной конфигурации и питания (ACPI). Если проект включает встроенный контроллер с транспортом ACPI, реализуйте UCSI в BIOS/EC системы и загрузите встроенный драйвер UCSI (UcmUcsiCx.sys и UcmUcsiAcpiClient.sys).
Если оборудование, совместимое с UCSI, использует транспорт, отличный от ACPI, необходимо написать драйвер клиента UCSI.
Драйверы для поддержки компонентов USB-Type-C для систем с внедренными контроллерами
Ниже приведен пример системы с внедренным контроллером.
В предыдущем примере переключение ролей USB обрабатывается в встроенном ПО системы, и стек драйверов для переключения ролей USB не загружается. В другой системе стек драйверов может не загружаться, так как двойная роль не поддерживается.
На предыдущем изображении
драйверы USB на стороне устройства
Драйверы на стороне устройства USB обслуживают функцию, устройство или периферийное устройство. Расширение класса контроллера функции USB поддерживает MTP (протокол передачи мультимедиа) и зарядку с помощью зарядных устройств BC 1.2. Корпорация Майкрософт предоставляет встроенные клиентские драйверы для контроллеров Synopsys USB 3.0 и ChipIdea USB 2.0. Вы можете написать пользовательский драйвер клиента для контроллера функции с помощью интерфейсов программирования драйвера драйвера usb-функций. Дополнительные сведения см. в статье Разработка драйверов Windows для контроллеров функций USB.
Поставщик SoC может предоставить вам драйвер нижнего фильтра функции USB для обнаружения зарядного устройства. Вы можете реализовать собственный драйвер фильтра, если вы используете встроенный драйвер Synopsys USB 3.0 или ChipIdea USB 2.0.
драйверы хост-системы USB
Драйверы на стороне USB — это набор драйверов, работающих с контроллерами USB-узла, совместимыми с EHCI или XHCI. Драйверы загружаются, если драйвер переключения ролей перечисляет роль хоста. Если контроллер узла не соответствует спецификации, вы можете написать пользовательский драйвер с помощью программного интерфейса расширения UCX для USB-контроллера узла. Дополнительные сведения см. в статье Разработка драйверов Windows для контроллеров USB-узлов.
Не все классы USB-устройств поддерживаются на Windows 10 Mobile.
диспетчер USB разъёма
Корпорация Майкрософт с помощью Windows (UcmUcsiCx.sys) предоставляет встроенный драйвер UCSI, который реализует функции, определенные в спецификации программного интерфейса системы коннекторов USB () Type-C. Спецификация описывает возможности UCSI и объясняет регистры и структуры данных для конструкторов компонентов оборудования, системных построителей и разработчиков драйверов устройств.
Этот драйвер предназначен для систем с внедренными контроллерами. Этот драйвер является клиентом драйвера расширения класса диспетчера USB-соединителей, предоставленного Microsoft (Ucmcx.sys). Драйвер обрабатывает такие задачи, как инициирование запроса встроенного ПО для изменения данных или ролей питания и получения сведений, необходимых для предоставления сообщений об устранении неполадок пользователю.
Команды UCSI, необходимые Для Windows
См. спецификацию UCSI для команд, необходимых во всех реализациях UCSI.
В дополнение к командам, помеченным как обязательные, Windows требует следующие команды:
- ПОЛУЧИТЬ_АЛЬТЕРНАТИВНЫЕ_РЕЖИМЫ
- GET_CAM_SUPPORTED
- GET_PDOS
- SET_NOTIFICATION_ENABLE: система или контроллер должны поддерживать следующие уведомления в SET_NOTIFICATION_ENABLE:
- Изменение поддерживаемых возможностей поставщика
- Согласование изменений уровня мощности
- GET_CONNECTOR_STATUS: система или контроллер должны поддерживать следующие изменения состояния соединителя в GET_CONNECTOR_STATUS:
- Изменение поддерживаемых возможностей поставщика
- Согласование изменений уровня мощности
Сведения о задачах, необходимых для реализации UCSI в BIOS, см. в разделе Intel BIOS Implementation of UCSI.
UCM-UCSI устройство ACPI для UCSI 2.0 и выше
Начиная с Windows 11 версии 22H2 с обновлением сентября драйверы устройств Windows UCM-UCSI ACPI поддерживают спецификацию UCSI версии 2.0 и 2.1. Спецификация UCSI 2.0 имеет критические изменения в сопоставлении памяти своих структур данных, как определено в спецификации UCSI таблица 3-1 Структуры данных. Для поддержания обратной совместимости Windows требует, чтобы UCSI PPM версии спецификации 2.0 или новее реализовала следующую функцию _DSM под устройством ACPI UCM-UCSI в прошивке ACPI и возвращала ненулевое значение, чтобы указать, что UCSI OPM должна следовать указанной версии спецификации UCSI.
- Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
- Arg1: идентификатор версии = 0
- Arg2: индекс функции = 5
- Arg3: пустой пакет (не используется)
Возвращаемое значение:
Элемент | Тип объекта | Описание |
---|---|---|
UsePpmReportedUcsiVersion | Целое число (32-разрядная версия) | 0x00000000 (по умолчанию): если структура VERSION , как определено в таблице 3-1 структуры данных спецификации UCSI, имеет значение 2.0 или более, UCSI OPM по-прежнему соответствует спецификации UCSI 1.2. В противном случае UCSI OPM следует спецификации UCSI согласно значению в структуре VERSION . |
Заметка
Для устройств ACPI UCM-UCSI это новая функция в существующем методе _DSM. Другие функции этого метода _DSM должны были быть реализованы в реализации Intel BIOS документа UCSI. Функция 0, которая возвращает битовую маску всех поддерживаемых функций, также должна быть обновлена соответствующим образом.
Пример потока для UCSI
В примерах, приведенных в этом разделе, описано взаимодействие между USB-Type-C оборудованием и встроенного ПО, драйвером UCSI и операционной системой.
Обнаружение ролей DRP
- USB-Type-C аппаратное или встроенное ПО обнаруживает событие подключения устройства, а система DRP Windows 10 изначально принимает роль UFP.
- Встроенное ПО отправляет уведомление, указывающее на изменение соединителя.
- Драйвер UCSI отправляет запрос GET_CONNECTOR_STATUS.
- Прошивка отвечает, что ее состояние подключения: 1 и тип партнера соединителя: DFP.
- Драйверы в стеке функций USB реагируют на перечисление.
- Расширение класса диспетчера USB-соединителей распознает загрузку стека функций USB, поэтому система находится в неправильном состоянии. Он указывает драйверу UCSI отправить в встроенное ПО запросы для установки роли USB-операции и для установки роли направления питания.
- USB-Type-C оборудование или встроенное ПО инициирует операцию переключения ролей с помощью DFP.
Обнаружение ошибки несоответствия зарядного устройства
USB-Type-C оборудование или встроенное ПО обнаруживает, что зарядное устройство подключено и согласовывает контракт питания по умолчанию. Он также отмечает, что зарядное устройство не обеспечивает достаточную мощность для системы.
USB-Type-C оборудование или встроенное ПО задает медленный зарядный бит.
- Встроенное ПО отправляет уведомление, указывающее на изменение соединителя.
- Драйвер UCSI отправляет запрос GET_CONNECTOR_STATUS.
- Встроенное ПО отвечает: состояние подключения = 1, тип партнера соединителя = DFP, состояние зарядки батареи = медленное/трickle.
Расширение класса диспетчера USB-соединителей отправляет уведомление в пользовательский интерфейс, чтобы отобразить сообщение об устранении неполадок с зарядным устройством.
Тестирование UCSI
Существует множество способов тестирования реализации UCSI. Чтобы протестировать отдельные команды в реализации BIOS/EC UCSI, используйте UCSIControl.exe, которое предоставляется в пакете программного обеспечения MUTT. Чтобы проверить полную реализацию UCSI, используйте тесты UCSI, которые можно найти в комплекте лабораторий оборудования Windows (HLK), а также шаги в процедурах ручного взаимодействия Type-C.
UCSIControl.exe
Вы можете протестировать отдельные команды в реализации BIOS/EC UCSI с помощью UCSIControl.exe. Это средство позволяет отправлять команды UCSI встроенному ПО через драйвер UCSI. Для этого требуется, чтобы драйвер загружался и запущен, а также был включен тестовый интерфейс для драйвера. По умолчанию этот интерфейс не включен, чтобы предотвратить его доступность для несанкционированных пользователей в розничной системе.
Найдите узел устройства в диспетчере устройств (devmgmt.msc) с именем UCSI USB Connector Manager. Узел находится в категории контроллеров универсальной последовательной шины.
Выберите и удерживайте (или щелкните правой кнопкой мыши) устройство, выберите Свойства и откройте вкладку Сведения.
Выберите путь экземпляра устройства из раскрывающегося списка и отметьте значение свойства.
Откройте редактор реестра (regedit.exe).
Перейдите к пути экземпляра устройства под этим ключом.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<путь к экземпляру устройства>\Параметры устройства
Создайте значение DWORD с именем TestInterfaceEnabled и задайте значение 0x1.
Перезапустите устройство, выбрав параметр Отключить на узле устройства в Диспетчере устройств, а затем выберите Включить. Кроме того, можно перезапустить компьютер.
Вы можете получить справочную информацию, выполнив UcsiControl.exe /?.
Ниже приведены распространенные команды:
Команда UCSI | команда UcsiControl.exe |
---|---|
Сброс PPM | UcsiControl.exe отправить 0 1 |
Сброс коннектора | Мягкая перезагрузка: UcsiControl.exe Отправить 0 10003 Жесткий сброс: UcsiControl.exe Отправить 0 810003 |
Настройка включения уведомлений | Все уведомления: UcsiControl.exe Отправить 0 ffff0005 Только завершение команды: UcsiControl.exe Отправить 0 00010005 Нет уведомления: UcsiControl.exe Отправить 0 00000005 |
Получение возможностей | UcsiControl.exe отправить 0 6 |
Получение возможностей соединителя | UcsiControl.exe Отправить 0 10007 |
Настройка UOM | DFP: UcsiControl.exe отправить 0 810008 UFP: UcsiControl.exe Отправь 0 1010008 DRP: UcsiControl.exe Отправить 0 2010008 |
Настройка UOR | DFP: UcsiControl.exe Отправить 0 810009 UFP: UcsiControl.exe отправить 0 1010009 Принять: UcsiControl.exe отправить 0 2010009 |
Настройка PDR | Поставщик: UcsiControl.exe Отправить 0 81000B Потребитель: UcsiControl.exe Отправить 0 101000B Принять: UcsiControl.exe Отправить 0 201000B |
Получить PDO | Локальный источник: UcsiControl.exe отправить 7 00010010 Локальный приемник: UcsiControl.exe отправить 3 00010010 Удаленный источник: UcsiControl.exe отправить 7 00810010 Удаленный приемник: UcsiControl.exe отправить 3 00810010 |
Получение состояния соединителя | UcsiControl.exe Отправьте 0 010012 |
Узнать статус ошибки | UcsiControl.exe отправь 0 13 |
Связанные разделы
- Архитектура : дизайн USB Type-C для Windows-системы
- Реализация BIOS от Intel UCSI
-
спецификация интерфейса программного интерфейса соединителя USB Type-C - проектирование оборудования: компоненты USB-Type-C для систем с встроенными контроллерами