Title: USB en Windows
1USB en Windows
2Propósito
- Tratamos aquí la relación de la interfaz USB con
el Sistema Operativo. Para ello vamos a observar
todos los pasos que tienen lugar desde que se
inserta un dispositivo en el bus hasta que una
aplicación de usuario puede acceder al
dispositivo.
3Enumeración de los dispositivos
- La enumeración es el proceso por medio del cual
el dispositivo es integrado en el sistema.
41.- El usuario inserta el dispositivo en el
enchufe usb.2.- El hub detecta el dispositivo.
53.- El host conoce la existencia del nuevo
dispositivo. - Get_port-status request
- (Todo dispositivo tiene que responder a un
conjunto de peticiones por medio de las cuales el
sistema es capaz de identificar las
características del dispositivo)
6Comandos que debe admitir el dispositivo USB
desde el driver
7Drivers en el S.O.
- En el host existe una pila de drivers que
gestionan el uso y la configuración de USB. - Los Bus Drivers son los encargados de el trabajo
administrativo - -root-hub driver (se encarga de las
inicializaciones) - -bus-class driver (se encarga de la enumeración
y las transacciones) - -host-controller driver (se encarga del acceso
al medio)
8Llamadas a funciones API de Win32
APLICACIONES
ENTORNO DE USUARIO
Aplicaciones
Paquetes de solicitud de I/O
SUBSISTEMA WIN32
Aplicaciones
Paquetes de solicitud de I/O
DRIVERS DE FUNCION
NUCLEO DEL S.O.
Aplicaciones
DRIVERS DE BUS
Interfaz específica con el hardware
Aplicaciones
HARDWARE
9APLICACIONES
DRIVER DEFINIDO POR EL USUARIO PARA MANEJAR
HARDWARE ESPECÍFICO
FILTRO SUPERIOR Añaden características
específicas A la clase
DRIVER DE CLASE DEFINIDOS PARA CLASES ESTÁNDARES
FILTRO INFERIOR Añaden características
específicas A la clase
USB HUB DRIVER (USBHUB.SYS) (inicializa los
puertos)
USB BUS-CLASS DRIVER (USBD.SYS) (gestiona
transacciones, alimentación, enumeración)
HOST CONTROLLER DRIVER (UHCI.SYS, OPENHCI.SYS,
EHCI.SYS) (se comunican con el hardware
104.- El hub detecta si un dispositivo es de baja o
alta velocidad
- Actualmente se soportan tres velocidades
- baja 1.5 Mb por segundo
- full, 12Mb por segundo
- High (2.0) 480Mb. (IEEE-1394 400 Mbps y
3.2Gbps)
11- 5 el hub resetea el dispositivo
- Set_Port_Feature
- 6 el host identifica la velocidad del
dispositivo. - Low
- Full
- High
12- 7.-El hub establece una vía entre el dispositivo
y el bus. - 8.- El host envía un Get_Descriptor
- Máximo tamaño de paquete por el default pipe
13Descriptores
- Los dispositivos organizan la información en
torno a descriptores jerárquicos. - Estos descriptores informan de características
sobre el dispositivo, y luego más específicamente
sobre las funciones que este ofrece
14Jerarquía de descriptores
15- 9.- El host asigna una dirección.
- Set_Address
- (a partir de este momento el dispositivo responde
a su dirección) - 10.- El host se informa acerca de las capacidades
del dispositivo. - Get_Descriptor
16Descriptor del dispositivo
1711.- El host asigna y carga el driver del
dispositivo.12.- El driver del dispositivo
selecciona una configuración. Set_Configuration.
- El device driver o Function Driver es una
interfaz de cara a la aplicación. - Ofrece a las aplicaciones un formato estándar de
acceso a los dispositivos CreateFile, ReadFile,
WriteFile.
18Selección del driver
- Con los datos del Descriptor del driver
- Vendedor
- Producto
- Clase
- Subclase
- Explora los archivo .inf del sistema
(C\WINDOWS\inf) - que describen los drivers existentes. Si coincide
alguno, lo selecciona.
19Acceso al driver por la aplicación
- La aplicación accede al driver por medio de las
API de Windows (???) - CreateFile (abre un dispositivo de comunicación)
- ReadFile (lee del dispositivo)
- WriteFile (Escribe en el dispositivo)
20fin
- USB Complete 2º Ed.
- Everything you need to develop custom USB
peripherals... - Jan Axelson
- Lakeview Research
- Usb in a nutshell
- Craig Peacock 2002
- USB 1.1 specification