Programao de Sistemas
USB: 1/32
Introduo (1)
O USB foi definido por um consrcio de fabricantes de computadores e perifricos (Agere, Apple, Intel, HewlettPackard, Microsoft e NEC) por forma a permitir a ligao / retirada de perifricos sem desligar o computador.
USB 1.0 [Jan 1996] com velocidades entre 1.5-LS (Low Speed) e 12 Mbps-NS (Normal Speed). USB 1.1 [Set 1998] resolve problemas USB 1.0 e define interface nica. USB 2.0 [Abr 2000] velocidades at 480 Mbps-HS (High Speed) para multimedia. Aceita dispositivos USB 1.0. Disponibilizado no Kernel 2.4.0 USB 3.0 [Nov 2008] full-duplex com velocidades at 4.8 Gbps-SS (Super Speed) para transferncias massivas de dados.
No um barramento (bus) clssico, existe apenas a nvel lgico. Fisicamente necessita o estabelecimento de uma ligao ponto-a-ponto.
Programao de Sistemas USB : 2/32
Introduo (2)
Tem mecanismos de plug and play: o hospedeiro detecta que um dispositivo foi ligado e instala o respectivo driver. O USB adopta protocolo mestre/escravo (master/slave)
Nenhum dispositivo inicia transferncia por si prprio. O hospedeiro encarregue da maior complexidade no protocolo de transferncia.
Permite ligar at 127 perifricos a uma nica porta do computador hospedeiro (host), numa topologia em estrela por camadas (tier)-mximo 5. Para informao detalhada consultar
Universal Serial Bus System Architecture, Don Anderson, Addison-Wesley.
Programao de Sistemas USB : 3/32
Introduo (3)
Comparao entre interfaces
Interface
USB RS-232 Centronics IEEE-1394 (FireWire)
Formato
Srie assncrona Srie assncrona Paralelo Srie
Comp. mximo
Uso tpico
Rato, teclado, disco, modem, audio Modem, rato, instrumentao Impressoras, scanners, discos Vdeo, memria massa
5m (32m 1.5M, 12M, com 5 hubs) 480M 16-33m 310m 5m 20k (115k com HW especial) 8M 400M (3.2G com IEEE-1394b
Programao de Sistemas
USB admite transferncias de dados sncronas ou assncronas. Diversos SOs suportam perifricos USB 2.0: Linux, Mac OS, Windows.
USB : 4/32
Arquitectura (1)
O USB envolve 3 tipos de entidades: 1. Hospedeiro (host)
nico, montado no barramento PCI do computador, inclui tambm o distribuidor raz (root hub). Responsvel pela complexidade do protocolo. Controla acesso dos dispositivos ao sistema USB. PCI bus
Root Hub
Hub (teclado)
rato
Hub (monitor)
altifalantes
Programao de Sistemas
USB : 5/32
Arquitectura (2)
2. Distribuidor (hub)
Um ou mais, permitem vrios dispositivos serem ligados ao hospedeiro. Detecta ligao e retirada de dispositivos. Responsvel pela deteco e correco de erros. Gere energia entregue a dispositivos passivos. Um distribuidor possui um, ou mais, portos a ligar a outros dispositivos ou distribuidores.
Routing Logic
Port Port Port Port USB : 6/32
Arquitectura (3)
3. Dispositivo
Um ou mais, igualmente designados por ns, tudo que no seja hospedeiro (incluindo distribuidor). Os dispositivos USB no so mapeados no espao de memria nem no espao E/S e no usam canais IRQ nem DMA. Elevado nmero de perifricos com interface USB
Ratos Memorystick, DOK-Disk On Key, ... Webcam, cmaras fotogrficas digitais...
Programao de Sistemas
USB : 7/32
Arquitectura (4)
O comportamento dos dispositivos representado por um autmato de 6 estados.
Estado Attached Powered Default Addressed Configured Suspended Significado Distribuidor assinalou insero de dispositivo Distribuidor configurado e operacional USB recebeu descritores do dispositivo USB atribuiu endereo ao dispositivo USB verificou que dispositivo enderevel Dispositivo em modo de poupana de energia
Attached Powered
Default
Addressed
Configured
Suspended
Programao de Sistemas
USB : 8/32
Arquitectura (5)
No dispositivo USB, o software dividido por 3 camadas (layers):
Transfere dados a baixo nvel atravs de cabos USB. A comunicao fsica entre o hospedeiro e o dispositivo definida por: i. Sinalizao elctrica ii. Mecanismos de transferncia de pacotes.
Programao de Sistemas
USB : 9/32
Arquitectura (6)
L2: USB Logical Device
Implementa mecanismo de comunicao. No hospedeiro, a camada correspondente constituda por:
USBD (USB Driver) implementa servios para a camada superior, aloca largura de banda no bus, gere processo de configurao. USB Host Controller Driver escala e controla as transaces.
L3: Function
Define a interface funcional do dispositivo.
Programao de Sistemas
USB : 10/32
Arquitectura (7)
A cada dispositivo atribudo um endereo nico Rede fsica:
Hospedeiro Root Hub@:1 Dok@:3 Hub@:2 Teclado@:6 Rato@:4 IP phone@:5
Rede lgica:
Root Hub@:1
Hospedeiro
HUB driver MSD driver Audio driver HID driver
Programao de Sistemas
USB : 11/32
USB driver
Gestores de dispositivos ligados a interfaces
Interface
Endpoint Endpoint
Programao de Sistemas
USB : 12/32
Programao de Sistemas
USB : 15/32
Programao de Sistemas
USB : 16/32
Programao de Sistemas
USB : 17/32
D. Transmisso de dados
Os fios de dados no incluem relgio. O sincronismo efectuado pela codificao. Transmisso sempre half-duplex (ou do hospedeiro para o dispositivo, ou do dispositivo para o hospedeiro). No existem colises, porque o controlo exercido apenas pelo hospedeiro.
Programao de Sistemas USB : 18/32
1 1 1 1 1 1 0 0 0 0 0
0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 0 1 0 1 1 1 1
Programao de Sistemas USB : 19/32
Programao de Sistemas
USB : 20/32
L1:Tramas (1)
O controlador USB envia uma trama (frame) em cada ms. Transferncias de dados so obrigatoriamente feitas numa trama, que comporta teoricamente1ms*480MHz = 60KB. As tramas so iniciadas pelo pacote SOF e terminam com um intervalo mnimo com o bus idle designado por EOF (End Of Frame). Os pacotes SOF so enviados a todos os dispositivos, pelo que so os nicos que no indicam o endereo do endpoint destino.
Programao de Sistemas
USB : 21/32
L1:Tramas (2)
As tramas so encaminhadas (routed), no difundidas (broadcast)! Os hospedeiros (hub) limitam-se a implementar procedimentos de store and forward.
Disp 1, endpoint 2 Disp 2, endpoint 0 Disp 3, endpoint 5 Disp 5, endpoint 4 Disp 1, endpoint 2 Disp 2, endpoint 0 Disp 1, endpoint 2 Disp 2, endpoint 2 Disp 3, endpoint 5 Disp 5, endpoint 4 Disp 3, endpoint 3 Disp 3, endpoint 5
SOF
SOF
1 ms
1 ms
SOF
1 ms
Nota: se um dispositivo no identificar um pacote SOF em 3 ms, considera que o PC foi desligado e entra em modo de suspenso.
Programao de Sistemas USB : 22/32
L1:Tramas (3)
A alocao da trama pelos endpoints decidida pelo controlador.
Um intervalo fixo (at 90%) garantido a transferncias INTERRUPT e ISOCHRONOUS. O controlador pode recusar entrada de dispositivos que requeiram transferncias INTERRUPT e ISOCHRONOUS para alm dos 90%. Um intervalo mnimo garantido s transferncias CONTROL. O resto disponvel entregue s transferncias BULK.
Variable width Fixed width Variable width
Control transfers
Bulk transfer
Programao de Sistemas
USB : 23/32
L1:Pacotes (1)
Todas as transferncias de informao, em pacotes de controlo ou de dados, so sempre executadas por iniciativa do hospedeiro. Cada transaco ocorre em 3 fases, cada uma formada por pacotes de grupo
1. 2. 3. Token Data Handshake
Token Data Handshake
Transaco
Os dispositivos escutam os dados OUT, ou transmitem dados/handshake IN nas alturas indicadas pelo controlador.
USB : 24/32
Programao de Sistemas
L1:Pacotes (2)
Dentro de cada pacote os Bytes so enviados por ordem inversa de bits (do lsb ao msb). Cada pacote dividido at 7 campos:
a. b. [Obrigatrio] SYNC Byte (0x01, para acerto de relgio) [Obrigatrio] PID Byte, dividido em duas partes:
Tipo de pacote (4 bits) Verificao (4 bits), igual ao complemento para 1 do tipo de pacote.
c. d. e. f.
Endereo dispositivo: 7 bits,4 bits para uso interno do dispositivo. Sequncia de 0, 1 ou mais Bytes de carga (load). CRC sobre a endereo (5 bits) e sobre a carga (11 bits), para deteco de erros de transmisso. [Obrigatrio] EOP Byte, com D+ e D- a low durante dois bits.
USB : 25/32
Programao de Sistemas
L1:Pacotes (3)
Os valores do PID so dados na seguinte tabela:
Grupo Token PID 0001 1001 0101 1101 Data 0011 1011 0111 1111 Handshake 0010 1010 1110 0110 Special 1100 1100 1000 0100 Identificador pacote OUT token IN token SOF token SETUP token DATA0 DATA1 DATA2 MDATA ACK Handshake NAK Handshake STALL Handshake No Response Yet PREamble ERR Split Ping
Programao de Sistemas
USB : 26/32
L2:Enumerao (1)
Inicialmente, todos os portos USB encontram-se incapacitados (disabled). Ao ligar um dispositivo a um porto USB, ele mantem-se isolado. Assim que o distribuidor verifica a insero de um dispositivo, inicia-se o processo de enumerao (enumeration).
1. O distribuidor espera pelo menos 100 ms, para que o dispositivo seja completamente instalado e a energia estabilize. O dispositivo passa para o estado POWERED. O hospedeiro envia para o distribuidor o comando Set Port RESET: o distribuidor habilita (enable) o porto e o dispositivo forado a responder apenas pelo endpoint 0. O dispositivo passa para o estado DEFAULT.
USB : 27/32
2.
Programao de Sistemas
L2:Enumerao (2)
3. O hospedeiro envia para o distribuidor o comando Set Address, que fixa o endereo nico, entre 1 e 127, do dispositivo. O dispositivo passa para o estado ADDRESSED, mas continua a responder pelo endpoint 0. O hospedeiro interroga o dispositivo sobre o cdigo do descritor de dispositivo pelo comando Get Descriptor. Com a resposta, o hospedeiro identifica diversas capacidades do dispositivo: tamanho de pacotes, nmero de configuraes, ID do vendedor, ID do produto,... Nota: o tamanho de pacotes essencial para reservar espao nas tramas. O hospedeiro identifica o descritor de dispositivo e carrega-o.
USB : 28/32
4.
5.
Programao de Sistemas
L2:Enumerao (3)
Classes foram definidas para abranger dispositivos de fabricantes distintos.
Classe
0x00 0x01 0x03 0x08 0x09 0x0E
Uso
Interface Interface Interface Interface Audio
Descrio
Exemplos
Descritores de interface usados para determinar o controlador do disp. Altifalante, microfone, carta som Teclado, rato, joystick Memorystick, Cmara fotogrfica digital Webcam
6.
O descritor de dispositivo selecciona uma configurao e envia para o dispositivo o comando Set Configuration O dispositivo passa para o estado CONFIGURED.
Programao de Sistemas
USB : 29/32
L2:Transferncia (1)
1. O software do hospedeiro inicializa a transferncia de/para o dispositivo. O software do hospedeiro divide a transferncia entre 1, ou mais, transaces. A diviso depende das caractersticas do dispositivo (tipo, dimenso do pacote,). O software do hospedeiro escala e executa transaces durante 1 ms. Cada trama formada por diversas transaces de transferncias distintas.
Transferncia
Transaco n-1 Transaco n-2 Transaco n-3
Transaco n-1
2.
Transferncia
Transaco n-1 Transaco n-2 Transaco n-3
Transaco n-1
Programao de Sistemas
USB : 30/32
L2:Transferncia (2)
3.
i.
Transferncia
Transaco n-1 Transaco n-2 Transaco n-3
Sync.
Packet ID
Device Address
Transaco n-1
Transaco n-1
ii.
Data : dados
Token
8 bits 8 bits 0-1023 Bytes 16 bits 2 bits
Data
Handshake
Sync.
Packet ID
Data Field
CRC
EOP
iii.
8 bits
Sync.
Packet ID EOP
Programao de Sistemas
USB : 31/32
L2:Transferncia (3)
Exemplo: o hospedeiro interroga o rato USB em cada 10 tramas (100 vezes por seg). O endpoint do rato do tipo interrupo e dois casos podem ocorrer: O rato tem dados na sua memria tampo (buffer)
IN DATA1 ACK
Programao de Sistemas
USB : 32/32