¿Puede un solo dispositivo USB emular múltiples dispositivos USB? [duplicar]

1

Estoy interesado en la idea de que mi dispositivo USB puede llevar sus propios controladores. Me gustaría que el dispositivo se conectara, enumerara, y si un controlador no se conecta a él en unos pocos segundos y lo inicializa, también se conecta como una unidad USB y proporciona controladores en esa unidad. Una vez que el controlador entra en contacto con el dispositivo, la unidad se desconectará.

¿Tengo que diseñar mi dispositivo para que sea un concentrador USB, con dos dispositivos USB que se conectan y desconectan de ese concentrador virtual, o la especificación USB tiene una forma de permitir este tipo de diseño sin pretender ser un concentrador?

    
pregunta Adam Davis

1 respuesta

1

Sí, hay tales dispositivos. Por ejemplo, el módem UMTS E3131 de Huawei funciona de esa manera. No implementa un concentrador, pero es un dispositivo compuesto USB . En Linux, el comando dispositivos usb devuelve sus descriptores como:

T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1506 Rev=01.02
S:  Manufacturer=HUAWEI
S:  Product=HUAWEI Mobile
C:  #Ifs= 6 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=option
I:  If#= 1 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=16 Driver=cdc_ncm
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=03 Driver=option
I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=02 Driver=option
I:  If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
I:  If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

Ofrece dos dispositivos de almacenamiento usb. El primero emula el CD-ROM con controladores, el segundo es la tarjeta de memoria SD.

No sé, qué herramientas está utilizando para crear el firmware. Si está utilizando LUFA , puede encontrar algunos ejemplos en las fuentes (por ejemplo, dispositivo de almacenamiento masivo / teclado, dispositivo de almacenamiento masivo / serie virtual).

    
respondido por el wzab

Lea otras preguntas en las etiquetas