Создание контроллера с двойной ролью для системы Windows USB Type-C
Сводка
- Oem выводит задачи для контроллера с двумя ролями, который имеет соединитель USB Type-C
Применяется к
- Windows 10 Mobile
Важные API
Usb role-switch drivers (URS) — это набор расширений класса WDF и клиентского драйвера, которые обрабатывают возможность переключения ролей контроллера с двумя ролями. Если в системе есть контроллер с двумя ролями, можно переключить роль системы в зависимости от устройства, подключенного к порту партнера соединителя USB-C системы. Это позволяет использовать интересные сценарии, такие как проводная стыковка.
Системы можно спроектировать таким образом, чтобы контроллеру USB с двойной ролью требуется Windows для настройки режима узла или функции. В этих конструкциях используется стек коммутаторов ролей USB. Если система не использует контроллер с двумя ролями Synopsys или ChipIdea, необходимо написать драйвер клиента переключения ролей USB для контроллера с двумя ролями системы.
Примечание
Системы можно сконструировать таким образом, чтобы для usb-порта с двойной ролью windows была настроена в режиме узла или функции. В этих конструкциях используется стек коммутаторов ролей USB. Если в системе не используется контроллер с двумя ролями Synopsys, необходимо написать драйвер клиента коммутатора ролей USB для контроллера с двойной ролью системы.
Драйвер клиента обрабатывает события оборудования и передает их в расширение класса. В случае аппаратных событий переключения ролей URS определяет роль и, следовательно, загружает драйверы для этой роли. Если контроллер находится в роли узла, загружаются драйверы USB на стороне узла ; для роли функции загружаются драйверы на стороне устройства .
В системах с usb micro-AB connectors драйвер клиента для контроллера с двумя ролями принимает это решение на основе пин-кода в соединителе, используя назначенные ему ресурсы прерывания. В системах с соединителями USB Type-C это решение принимает драйвер клиента для соединителя. Этот драйвер определяет роль на основе контактов CC и передает результаты диспетчеру USB-соединителей (UCM), который затем отправляет результаты в драйверы переключателя ролей.
1. Включите драйвер URS в системном ACPI
Чтобы использовать URS, необходимо внести изменения ACPI. Замените устройство, на котором загружают драйверы USB-устройства , устройством, на которое необходимо загрузить URS. Дополнительные сведения об изменении определения ACPI см. в примере, приведенном в статье Архитектура стека драйвера двойной роли USB. Убедитесь, что ресурс прерывания удален. Это не требуется для USB Type-C.
2. Загрузка драйверов ролей USB-коммутатора для драйвера контроллера с двумя ролями
Если в вашей системе используются контроллеры ChipIdea и Synopsys, загрузите предоставленные корпорацией Майкрософт встроенные клиентские драйверы для контроллеров ChipIdea и Synopsys.
Чтобы загрузить драйвер, необходимо создать пакет установки драйвера. INF-файл должен иметь директиву Include-Needs , которая ссылается на встроенный INF-файл для поддерживаемых контроллеров. Встроенный INF-файл уже содержит идентификаторы оборудования других контроллеров. Этот шаг является обязательным, если идентификатор оборудования контроллера с двумя ролями не является идентификатором оборудования в встроенном INF-файле. Обратитесь к поставщику SoC.
Дополнительные сведения см. в разделе "Пакет драйвера URS" в разделе Пакеты установки драйверов.
Если в системе используется пользовательский контроллер, напишите драйвер клиента для переключения ролей. Дополнительные сведения см. в разделе:
Справочник по программированию драйвера контроллера USB для двух ролей