You are on page 1of 16

Programao de Sistemas

USB Universal Serial Bus

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

Max. nmero interfaces


127 2 2 (8 com apoio daisy-chain) 64

Comp. mximo

Vel. mxima (bits/sec.)

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.

High Speed only Transaction Translator Hub Controller HS Signal Repeater

Full/Low Speed Programao de Sistemas

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.

L1: USB Bus Interface

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

Hub@:2 Dok@:3 Rato@:4 IP phone@:5 Teclado@:6

Programao de Sistemas

USB : 11/32

Modelo de comunicao (1)


A. O modelo de comunicao do USB envolve 3 entidades: endpoints, interfaces e configuraes.
Dispositivo Config Interface
Endpoint Endpoint Endpoint

USB driver
Gestores de dispositivos ligados a interfaces

Interface
Endpoint Endpoint

Programao de Sistemas

USB : 12/32

Modelo de comunicao (2)


1. Endpoints transportam dados numa direco.
Dispositivos lentos (rpidos) possuem 2 (at 16) endpoints. Possuem direco de transferncia de dados:
OUT se dados transportados do hospedeiro para o dispositivo. IN se dados transportados do dispositivo para o hospedeiro.

Existem 4 tipos de endpoints:


CONTROL, para configurar o dispositivo ou recolha do estado. Todos os dispositivos possuem o endpoint de controlo 0, usado para configurar na insero do dispositivo. INTERRUPT, para transferncia de pequenas quantidades de dados (ex: ratos). BULK, para transferncia fivel de elevadas quantidades de dados (ex: impressoras e memrias de massa). ISOCHRONOUS, para transferncia no fivel de elevadas quantidades de dados (ex: dispositivos udio e vdeo).

Endpoints correspondem a tampes separados de comunicao.


Programao de Sistemas USB : 13/32

Modelo de comunicao (3)


A cada endpoint, o hospedeiro atribui um endereo nico (endpoint de endereo 0 existe sempre, usado na instalao do dispositivo).

2. Interfaces agrupam os endpoints de uma conexo lgica.


Alguns dispositivos podem ter mais de uma interface Exemplos:
Altifalantes, com uma interface para os botes de controlo volume, balano...e outra interface para a stream de udio). CDROM, com uma interface para armazm de dados, uma interface para stream de udio, uma interface para stream de vdeo).

3. Configuration agrupa as interfaces.


Alguns dispositivos podem ter mais de uma configurao, por exemplo uma com consumos energticos elevado (entre 100mA e 500mA), outra com consumo reduzido (at 100mA, que limita as funcionalidades).
Programao de Sistemas USB : 14/32

Modelo de comunicao (4)


B. Pipes Um Pipe uma associao entre um endpoint e o software do controlador do hospedeiro. Um pipe tem de ser estabelecido antes da transferncia de dados.

Programao de Sistemas

USB : 15/32

L1:Sinalizao elctrica (1)


A. Cabos
VBUS: de valor nominal 5V para alimentao de dispositivos passivos. GND. D+, D-: 2 ligaes (entrelaadas para minimizar o rudo) para trasmisso diferencial de sinais. Os sinais referenciam o GND.

Programao de Sistemas

USB : 16/32

L1:Sinalizao elctrica (2)


A. Fichas: dois tipos para evitar ciclos
A, orientado do dispositivo para hospedeiro. B, orientados do hospedeiro para dispositivo. Nota1: definidas fichas mais pequenas mini-A e miniB para PDAs e telemveis. Nota2: fichas e cabos USB 3.0 so incompatveis.

Programao de Sistemas

USB : 17/32

L1:Sinalizao elctrica (3)


C. Deteco de dispostivos
Se nenhum dispositivo estiver ligado ao porto USB, D+=D-=low. Quando um dispositivo inserido
D+ passa a high, se o dispositivo for rpido. D- passa a high, se o dispositivo for lento.

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

L1:Sinalizao elctrica (4)


E. Codificao
Dgitos codificados em NZRI-Non Return to Zero Inverted.
0 codificado por alterao do par diferencial. 1 codificado por manuteno do par diferencial.

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

L1:Sinalizao elctrica (5)


Problema: numa sequncia longa de 1s, a linha de transmisso mantm-se esttica e o receptor pode perder a conta. Soluo: imediatamente antes da codificao NZRI, injectar um 0 aps uma sequncia de seis 1s. Nota: tcnica designada por bit-stuffing.

Exemplo: data010111111101 send0101111110101

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

Iso + Interrupt transfer

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

Dispositivo No especificado HID-Human Interface Dev. Armazm de massa Vdeo

Dispositivo USB hub

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

Transaco n-1 Trama 1 ms

Programao de Sistemas

USB : 30/32

L2:Transferncia (2)
3.
i.

Cada transaco formada por uma sequncia de pacotes.


Token : determina o tipo de pacote.
8 bits 8 bits 7 bits 4 bits 5 bits 2 bits

Transferncia
Transaco n-1 Transaco n-2 Transaco n-3

Sync.

Packet ID

Device Address

ENDP CRC EOP Nr

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.

Handshake : informao sobre o resultado final da transaco.


8 bits 2 bits

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

O rato no tem dados na sua memria tampo (buffer)


IN NACK

Programao de Sistemas

USB : 32/32