Compartir a través de


Arquitectura de pila de controladores de rol dual USB

Los controladores de rol dual USB ahora se admiten en Windows, empezando por Windows 10 para ediciones de escritorio (Home, Pro, Enterprise y Education) y Windows 10 Mobile.

Introducción

La característica de doble rol USB permite que un sistema sea un dispositivo USB o un host USB. La especificación detallada para el rol dual USB se puede encontrar en USB-IF's USB en la página de información de Go.

El punto significativo aquí es que la característica de rol dual permite a un dispositivo móvil, como un teléfono, un phablet o una tableta, designarse como un dispositivo o un host.

Cuando un dispositivo móvil está en modo de función , está conectado a un equipo o a otro dispositivo que actúa como host para el dispositivo móvil conectado.

Cuando un dispositivo móvil está en modo host , los usuarios pueden conectar sus dispositivos, como un mouse o un teclado, a él. En este caso, el dispositivo móvil hospeda los dispositivos conectados.

Al proporcionar compatibilidad con el rol dual USB en Windows 10, proporcionamos las siguientes ventajas:

  • Conectividad con dispositivos periféricos móviles a través de USB, que ofrece un ancho de banda de datos mayor en comparación con protocolos inalámbricos como Bluetooth.
  • La opción de cargar la batería a través de USB mientras se conecta a otros dispositivos USB y se comunica con ellos (siempre que la compatibilidad de hardware necesaria esté presente).
  • Habilite a los clientes que probablemente posean un dispositivo móvil, como un teléfono inteligente para todo su trabajo. Esta característica permitirá mejorar la productividad en un escenario de acoplamiento cableado, donde un dispositivo móvil acopla y, por tanto, hospeda dispositivos periféricos.

En la tabla siguiente se muestra la lista de controladores de clase host que están disponibles en las SKU móviles y de escritorio de Windows.

Controladores de clase host USB Windows 10 Mobile Ediciones de Windows 10 para escritorio
Concentradores USB (USBHUB) Sí (desde Windows 2000)
HID - Teclado/Ratones (HidClass, KBDCLass, MouClass, KBDHid, MouHid) Sí (desde Windows 2000)
Almacenamiento masivo USB (& UASP de forma masiva) Sí (desde Windows 2000)
Controlador de host USB genérico (WinUSB) Sí (desde Windows Vista)
Audio USB de entrada y salida (USBAUDIO) Sí (desde Windows XP)
Dispositivos serie (USBSER) Sí (desde Windows 10)
Bluetooth (BTHUSB) Sí (desde Windows XP)
Imprimir (usbprint) No Sí (desde Windows XP)
Examen (USBSCAN) No Sí (desde Windows 2000)
WebCam (USBVIDEO) No Sí (desde Windows Vista)
Protocolo de transferencia de medios (iniciador MTP) No Sí (desde Windows Vista)
NDIS remotos (RNDIS) No Sí (desde Windows XP)
IP a través de USB (IPoverUSB) No Sí (nuevo para Windows 10)

Los controladores de clase de la tabla se seleccionaron en función de la telemetría de la clase de dispositivo y en función de escenarios clave seleccionados para Windows 10. Tenemos previsto incluir un número limitado de controladores host de terceros para admitir dispositivos clave en Windows 10 Mobile. Y para Windows 10 para las ediciones de escritorio, estos controladores estarán disponibles en el sitio web del OEM o a través de Windows Update (WU).

Por Windows 10 Mobile, los controladores de terceros que no están incluidos en la bandeja de entrada no estarán disponibles en WU. La superficie de disco de la pila del host USB + HID se ha mantenido pequeña. Por eso no todos los controladores de clase, y muy pocos controladores de terceros están incluidos en la bandeja de entrada para Windows 10 Mobile. Un OEM que desee hacer que los controladores de terceros estén disponibles pueden usar un paquete de soporte de placa (BSP) para agregarlos a imágenes del sistema operativo para sus dispositivos móviles.

En la tabla siguiente se muestran los controladores de clase de función que están disponibles en las SKU móviles de Windows.

Nota

Los controladores de función no están disponibles en Windows 10 para las ediciones de escritorio.

Controladores de clase de función USB Windows 10 Mobile Ediciones de Windows 10 para escritorio Notas
Protocolo de transferencia de medios (respondedor MTP) No No hay ningún escenario para el respondedor mtP en el escritorio. Los escenarios P2P entre los sistemas de escritorio se habilitaron a través de Easy-MigCable a través de WinUSB.
Visualización de vídeo (vidstream) No
Controlador de función USB genérico (GenericUSBFn) No IPoverUSB lo necesitará y otros escenarios de flashing de escritorio.

Supervisaremos los datos adjuntos del dispositivo para informarnos si necesitamos proporcionar compatibilidad adicional con controladores de clase, ya que la lista de popularidad de la clase de dispositivo cambia con el tiempo.

Implementación del controlador

El controlador microsoft USB Role Switch (URS) permite que un implementador del sistema aproveche la funcionalidad USB de doble rol de su plataforma.

El controlador URS está pensado para proporcionar funcionalidad de doble rol para plataformas que usan un único controlador USB que puede funcionar en roles host y periféricos a través de un único puerto. El rol periférico también se conoce como rol de función. El controlador URS administra el rol actual del puerto y la carga y descarga de las pilas de software adecuadas, en función de los eventos de hardware de la plataforma.

En un sistema que tiene un conector micro-AB USB, el controlador usa interrupciones de hardware que indica el estado del pin de identificador en el conector. Este pin se usa para detectar si el controlador debe asumir el rol de host o el rol de función en una conexión. Para obtener más información, consulte la especificación USB On-The-Go. En los sistemas con un conector USB Type-C, se espera que el implementador oem proporcione un controlador de cliente del conector mediante las interfaces de programación del controlador del conector USB Type-C. El controlador cliente se comunica con la extensión de clase del Administrador de conectores USB (UcmCx) proporcionada por Microsoft para administrar todos los aspectos del conector USB Type-C, como la detección de CC, la mensajería pd y otros. Para el cambio de roles, el controlador cliente comunica el estado del conector USB Type-C al controlador URS.

En el diagrama siguiente se muestra la pila de controladores de software USB para un controlador de doble rol que usa el controlador URS.

Arquitectura de pila de controladores de conmutador de rol usb.

Tenga en cuenta que el controlador URS nunca cargará las pilas de funciones y hosts que se muestran en el diagrama anterior simultáneamente. El controlador URS cargará la pila de funciones o la pila del host, según el rol del controlador USB.

Requisitos de hardware

Si está desarrollando una plataforma que aprovechará el controlador URS, para proporcionar funcionalidad USB de doble rol, deben cumplirse los siguientes requisitos de hardware:

  • Controlador USB

    Microsoft proporciona estos controladores como controladores en la caja.

    Controlador Synopsys DesignWare Core USB 3.0. INF de la bandeja de entrada: UrsSynopsys.inf.

    Chipidea High-Speed controlador OTG USB. Bandeja de entrada INF: UrsChipidea.inf.

  • Interrupciones de patillas de identificador

    Las interrupciones de patillas de identificador para sistemas de tipo C que no son USB se pueden implementar de una de estas dos maneras:

    Dos interrupciones desencadenadas por el borde: una que se activa cuando la patilla de identificador del conector está en tierra y otra que se activa cuando el pin de identificador está flotante.

    Una sola interrupción activa que se encuentra en el nivel activo cuando el pin id. está en tierra.

  • Enumeración del controlador USB

    El controlador de doble rol USB debe estar enumerado en ACPI.

  • Soporte técnico de software

    El controlador URS espera una interfaz de software que permita el control de VBus sobre el conector. Esta interfaz es específica de SoC. Póngase en contacto con su proveedor de SoC para obtener más detalles.

Estas características de OTG USB no se admiten en Windows:

  • Detección del adaptador de cargador de accesorios (ACA).
  • Protocolo de solicitud de sesión (SRP).
  • Protocolo de negociación de host (HNP).
  • Attach Detection Protocol (ADP).

Configuración del sistema ACPI

Para poder usar el controlador URS, debe crear un archivo de definición ACPI para el sistema. Además, hay algunas consideraciones relacionadas con el controlador que debe tener en cuenta.

Esta es una definición ACPI de ejemplo para un controlador de doble rol USB.

//
// You may name the device whatever you want; we don't depend on it being called 'URS0'.
//
Device(URS0)
{
    //
    // Replace with your own hardware ID. Microsoft will add it to the inbox INF,
    // or you may choose to author a custom INF that uses Needs & Includes directives
    // to include sections from the inbox INF.
    //
    Name(_HID, "ABCD1234")

    Name(_CRS, ResourceTemplate() {
        //
        // The register space for the controller must be defined here.
        //
        Memory32Fixed(ReadWrite, 0xf1000000, 0xfffff)


        //
        // The ID pin interrupts, if you are using two edge-triggered interrupts.
        //
        GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.GPI0", 0, ResourceConsumer, , ){0x1001}
        GpioInt(Edge, ActiveHigh, Exclusive, PullUp, 0, "\\_SB.GPI0", 0, ResourceConsumer, , ){0x1002}

        //
        // Following is an example of a single active-both interrupt.
        //
        // GpioInt(Edge, ActiveBoth, Exclusive, PullUp, 0, "\\_SB.GPI0", 0, ResourceConsumer, , ){0x12}
        //

        //
        // For a Type-C platform, you do not need to specify any interrupts here.
        //
    })

    //
    // This child device represents the USB host controller. This device node is in effect
    // when the controller is in host mode.
    // You may name the device whatever you want; we don't depend on it being called 'USB0'.
    //
    Device(USB0)
    {
        //
        // The host controller device node needs to have an address of '0'
        //
        Name(_ADR, 0)
        Name(_CRS, ResourceTemplate() {

            //
            // The controller interrupt.
            //
            Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive, , , ){0x10}
        })
    }

    //
    // This child device represents the USB function controller. This device node is in effect
    // when the controller is in device/function/peripheral mode.
    // You may name the device whatever you want; we don't depend on it being called 'UFN0'.
    //
    Device(UFN0)
    {
        //
        // The function controller device node needs to have an address of '1'
        //
        Name(_ADR, 1)
        Name(_CRS, ResourceTemplate() {

            //
            // The controller interrupt (this could be the same as the one defined in
            // the host controller).
            //
            Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive, , , ){0x11}
        })
    }
}

Estas son algunas explicaciones para las secciones principales del archivo ACPI:

  • URS0 es la definición ACPI para el controlador de doble rol USB. Este es el dispositivo ACPI en el que se cargará el controlador URS.

  • USB0 y UFN0 son dispositivos secundarios dentro del ámbito de URS0. USB0 y UFN0 representan las dos pilas secundarias que enumerará el controlador URS y las pilas de host y función, respectivamente. Tenga en cuenta que _ADR es el medio por el que ACPI coincide con estas definiciones de dispositivo con los objetos de dispositivo que crea el controlador URS.

  • Si el controlador usa la misma interrupción para ambos roles, se puede describir la misma interrupción del controlador en ambos dispositivos secundarios. Incluso en ese caso, la interrupción todavía se puede describir como "Exclusiva".

  • Puede realizar adiciones a este archivo de definición ACPI según sea necesario. Por ejemplo, puede establecer cualquier otro método o propiedades necesarios en cualquiera de los dispositivos del archivo de definición ACPI. Estas adiciones no interferirán con el funcionamiento del controlador URS. Los recursos adicionales necesarios en cualquiera de las pilas también se pueden describir en el _CRS del dispositivo adecuado.

El controlador URS asigna identificadores de hardware a las pilas de host y función. Estos identificadores de hardware se derivan del identificador de hardware del dispositivo URS. Por ejemplo, si tiene un dispositivo URS cuyo identificador de hardware es ACPI\ABCD1234, el controlador URS crea identificadores de hardware para el host y las pilas de funciones de la siguiente manera:

  • Pila de hosts: URS\ABCD1234&HOST

  • Pila de funciones: URS\ABCD1234&FUNCTION

Paquetes de instalación del controlador INF

Los paquetes de controladores de terceros pueden depender de este esquema, si es necesario.

Si es un IHV o un OEM y está pensando en proporcionar su propio paquete de controladores, estas son algunas cosas que se deben tener en cuenta:

  • Paquete de controladores URS

    Se espera que el identificador de hardware del controlador de doble rol en cada plataforma se agregue al INF de la bandeja de entrada para URS. Sin embargo, si por alguna razón no se puede agregar el identificador, el IHV/OEM puede proporcionar un paquete de controladores con un INF que necesita o incluye el INF de la bandeja de entrada y coincide con su identificador de hardware.

    Esto es necesario en caso de que el IHV/OEM requiera que un controlador de filtro esté presente en la pila de controladores.

  • Paquete de controladores de host.

    Un paquete de controladores proporcionado por IHV/OEM que necesita o incluye la bandeja de entrada usbxhci.inf y coincide con el identificador de hardware del dispositivo host es necesario. La coincidencia de id. de hardware se basaría en el esquema descrito en la sección anterior.

    Esto es necesario en caso de que el IHV/OEM requiera que un controlador de filtro esté presente en la pila de controladores.

    Hay trabajo en curso para que el controlador URS asigne el identificador compatible XHCI para el dispositivo host.

  • Paquete de controladores de función

    Un paquete de controladores proporcionado por IHV/OEM que necesita o incluye la bandeja de entrada Ufxsynopsys.inf y coincide con el identificador de hardware del dispositivo periférico es necesario. La coincidencia de id. de hardware se basaría en el esquema descrito en la sección anterior.

    El IHV/OEM también puede incluir un controlador de filtro en el paquete de controladores.

Consulte también

Referencia del controlador de controlador de rol dual