• Nenhum resultado encontrado

Programação de Sistemas

N/A
N/A
Protected

Academic year: 2021

Share "Programação de Sistemas"

Copied!
16
0
0

Texto

(1)

Programação de Sistemas

USB – Universal Serial Bus

Programação de Sistemas USB: 1/32

Introdução (1)

• O USB foi definido por um consórcio de fabricantes de

computadores e periféricos (Agere, Apple, Intel,

Hewlett-Packard, Microsoft e NEC) por forma a permitir a ligação /

retirada de periféricos sem desligar o computador.

– USB 1.0 [Jan 1996] com velocidades entre 1.5-LS (“Low Speed”) e 12 Mbps-NS (“Normal Speed”).

(“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 transferências massivas de dados.

• Não é um barramento (“bus”) clássico, existe apenas a

nível lógico. Fisicamente necessita o estabelecimento de

uma ligação ponto-a-ponto.

(2)

Introdução (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 transferência por si próprio.

– O hospedeiro encarregue da maior complexidade no protocolo de – O hospedeiro encarregue da maior complexidade no protocolo de

transferência.

• Permite ligar até 127 periféricos a uma única porta do

computador hospedeiro (“host”), numa topologia em

estrela por camadas (“tier”)-máximo 5.

• Para informação detalhada consultar

Universal Serial Bus System Architecture, Don Anderson,

Addison-Wesley.

Programação de Sistemas USB : 3/32

Introdução (3)

Comparação entre interfaces

Interface Formato Max. número

interfaces Comp. máximo Vel. máxima (bits/sec.) Uso típico USB Série assíncrona 127 5m (32m com 5 hubs) 1.5M, 12M, 480M

Rato, teclado, disco, modem, audio

RS-232 Série 2 16-33m 20k (115k com Modem, rato,

RS-232 Série assíncrona 2 16-33m 20k (115k com HW especial) Modem, rato, instrumentação Centronics Paralelo 2 (8 com apoio

daisy-chain) 3–10m 8M Impressoras, scanners, discos IEEE-1394 (FireWire) Série 64 5m 400M (3.2G com IEEE-1394b Vídeo, memória massa

USB admite transferências de dados síncronas ou assíncronas.

Diversos SOs suportam periféricos USB 2.0: Linux, Mac OS,

Windows.

(3)

Arquitectura (1)

• O USB envolve 3 tipos de entidades:

1. Hospedeiro (“host”)

• Único, montado no barramento PCI do computador, inclui também o distribuidor raíz (“root hub”).

• Responsável pela complexidade do protocolo. • Controla acesso dos dispositivos ao sistema USB.

Programação de Sistemas USB : 5/32

Hub (monitor) Hub (teclado) PCI bus Root Hub altifalantes rato

Arquitectura (2)

2. Distribuidor (“hub”)

• Um ou mais, permitem vários dispositivos serem ligados ao hospedeiro. • Detecta ligação e retirada de dispositivos.

• Responsável pela detecção e correcção de erros. • Gere energia entregue a dispositivos passivos.

• Um distribuidor possui um, ou mais, portos a ligar a outros dispositivos • Um distribuidor possui um, ou mais, portos a ligar a outros dispositivos

ou distribuidores.

High Speed only High Speed only

Full/Low Speed

Full/Low Speed

Routing Logic

Routing Logic

Routing Logic

Routing Logic

Transaction Transaction Translator Translator Transaction Transaction Translator

Translator HS SignalHS SignalHS SignalHS SignalRepeaterRepeaterRepeaterRepeater Hub Hub Controller Controller Hub Hub Controller Controller

(4)

Arquitectura (3)

3. Dispositivo

• Um ou mais, igualmente designados por nós, é tudo que não seja hospedeiro (incluindo distribuidor).

• Os dispositivos USB não são mapeados no espaço de memória nem no espaço E/S e não usam canais IRQ nem DMA.

• Elevado número de periféricos com interface USB • Elevado número de periféricos com interface USB

– Ratos

– Memorystick, DOK-Disk On Key, ... – Webcam, câmaras fotográficas digitais...

Programação de Sistemas USB : 7/32

Arquitectura (4)

• O comportamento dos dispositivos é representado por um

autómato de 6 estados.

Estado Significado

Attached Distribuidor assinalou inserção de dispositivo Powered Distribuidor configurado e operacional

Default USB recebeu descritores do dispositivo Default USB recebeu descritores do dispositivo Addressed USB atribuiu endereço ao dispositivo Configured USB verificou que dispositivo é endereçável

Suspended Dispositivo em modo de poupança de energia Attached

Powered

Suspended

(5)

Arquitectura (5)

No dispositivo USB, o software é dividido por 3 camadas

(“layers”):

L1: USB Bus Interface

• Transfere dados a baixo nível através de cabos USB.

Programação de Sistemas USB : 9/32

através de cabos USB.

• A comunicação física entre o hospedeiro e o dispositivo é definida por: i. Sinalização eléctrica ii. Mecanismos de transferência de pacotes.

Arquitectura (6)

L2: USB Logical Device

• Implementa mecanismo de comunicação.

• No hospedeiro, a camada correspondente é constituída por:

• USBD (“USB Driver”) – implementa serviços para a camada superior, aloca largura de banda no bus, gere processo de configuração.

configuração.

• USB Host Controller Driver – escala e controla as transacções.

L3: Function

(6)

Arquitectura (7)

• A cada dispositivo é atribuído um endereço único

Rede física:

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

Programação de Sistemas USB : 11/32

IP phone@:5 Teclado@:6

Rede lógica:

Hospedeiro HID driver MSD driver HUB driver Audio driver Root Hub@:1 Hub@:2 Dok@:3 Rato@:4 IP phone@:5 Teclado@:6

Modelo de comunicação (1)

A. O modelo de comunicação do USB envolve 3 entidades:

endpoints, interfaces e configurações.

Dispositivo Config Interface USB Endpoint Endpoint Endpoint Interface Endpoint Endpoint Interface USB driver Gestores de dispositivos ligados a interfaces

(7)

Modelo de comunicação (2)

1. Endpoints transportam dados numa direcção.

– Dispositivos lentos (rápidos) possuem 2 (até 16) endpoints. – Possuem direcção de transferência 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: – 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 inserção do dispositivo.

• INTERRUPT, para transferência de pequenas quantidades de dados (ex: ratos). • BULK, para transferência fiável de elevadas quantidades de dados (ex:

impressoras e memórias de massa).

• ISOCHRONOUS, para transferência não fiável de elevadas quantidades de dados (ex: dispositivos áudio e vídeo).

– Endpoints correspondem a tampões separados de comunicação.

Programação de Sistemas USB : 13/32

Modelo de comunicação (3)

– A cada endpoint, o hospedeiro atribui um endereço único (endpoint de endereço 0 existe sempre, usado na instalação do dispositivo).

2. Interfaces agrupam os endpoints de uma conexão lógica.

– Alguns dispositivos podem ter mais de uma interface Exemplos:

• Altifalantes, com uma interface para os botões de controlo – volume, balanço...-e outra intbalanço...-erfacbalanço...-e para a strbalanço...-eam dbalanço...-e áudio).

• CDROM, com uma interface para armazém de dados, uma interface para stream de áudio, uma interface para stream de vídeo).

3. Configuration agrupa as interfaces.

– Alguns dispositivos podem ter mais de uma configuração, por exemplo uma com consumos energéticos elevado (entre 100mA e 500mA), outra com consumo reduzido (até 100mA, que limita as funcionalidades).

(8)

Modelo de comunicação (4)

B. Pipes

Um Pipe é uma associação entre um endpoint e o software

do controlador do hospedeiro.

Um pipe tem de ser estabelecido antes da transferência de

dados.

dados.

Programação de Sistemas USB : 15/32

L1:Sinalização eléctrica (1)

A. Cabos

– VBUS: de valor nominal 5V para alimentação de dispositivos passivos.

– GND.

– D+, D-: 2 ligações (entrelaçadas para minimizar o ruído) para trasmissão diferencial de sinais. ruído) para trasmissão diferencial de sinais. Os sinais referenciam o GND.

(9)

L1:Sinalização eléctrica (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 A e mini-B para PDAs e telemóveis.

Programação de Sistemas USB : 17/32

Nota2: fichas e cabos USB 3.0 são incompatíveis.

L1:Sinalização eléctrica (3)

C. Detecção 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 rápido. • D-passa a high, se o dispositivo for lento.

D. Transmissão de dados

– Os fios de dados não incluem relógio. O sincronismo é efectuado pela codificação.

– Transmissão é sempre half-duplex (ou do hospedeiro para o dispositivo, ou do dispositivo para o hospedeiro).

Não existem colisões, porque o controlo é exercido apenas pelo hospedeiro.

(10)

L1:Sinalização eléctrica (4)

E. Codificação

– Dígitos codificados em NZRI-Non Return to Zero Inverted.

• 0 codificado por alteração do par diferencial. • 1 codificado por manutenção do par diferencial.

Programação de Sistemas USB : 19/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

L1:Sinalização eléctrica (5)

– Problema: numa sequência longa de 1’s, a linha de transmissão mantém-se estática e o receptor pode perder a conta.

– Solução: imediatamente antes da codificação NZRI, injectar um “0” após uma sequência de seis “1”s.

Nota: técnica designada por “bit-stuffing”.

Exemplo:

Exemplo:

data:010

111111

101

(11)

L1:Tramas (1)

• O controlador USB envia uma trama (“frame”) em cada

ms.

• Transferências de dados são obrigatoriamente feitas numa

trama, que comporta teoricamente1ms*480MHz = 60KB.

• As tramas são iniciadas pelo pacote SOF e terminam com

• As tramas são iniciadas pelo pacote SOF e terminam com

um intervalo mínimo com o bus idle designado por EOF

(“End Of Frame”).

Os pacotes SOF são enviados a todos os dispositivos, pelo

que são os únicos que não indicam o endereço do endpoint

destino.

Programação de Sistemas USB : 21/32

L1:Tramas (2)

• As tramas são encaminhadas (“routed”), não difundidas

(“broadcast”)!

Os hospedeiros (“hub”) limitam-se a implementar

procedimentos de “store and forward”.

S O F D is p 1, e ndpoi nt 2 D is p 2, e ndpoi nt 2 D is p 3, e ndpoi nt 5 D is p 5, e ndpoi nt 4 D is p 3, e ndpoi nt 3 S O F D is p 1, e ndpoi nt 2 D is p 2, e ndpoi nt 0 D is p 3, e ndpoi nt 5 D is p 5, e ndpoi nt 4 S O F D is p 1, e ndpoi nt 2 D is p 2, e ndpoi nt 0 D is p 3, e ndpoi nt 5 1 ms 1 ms 1 ms

Nota: se um dispositivo não identificar um pacote SOF em 3 ms, considera que o PC foi desligado e entra em modo de suspensão.

(12)

L1:Tramas (3)

• A alocação da trama pelos endpoints é decidida pelo

controlador.

– Um intervalo fixo (até 90%) é garantido a transferências INTERRUPT e ISOCHRONOUS.

O controlador pode recusar entrada de dispositivos que requeiram transferências INTERRUPT e ISOCHRONOUS para além dos transferências INTERRUPT e ISOCHRONOUS para além dos 90%.

– Um intervalo mínimo é garantido às transferências CONTROL. – O resto disponível é entregue às transferências BULK.

Programação de Sistemas USB : 23/32

Control transfers Iso + Interrupt transfer Bulk transfer

Fixed width Variable width

Variable width

L1:Pacotes (1)

• Todas as transferências de informação, em pacotes de

controlo ou de dados, são sempre executadas por iniciativa

do hospedeiro.

• Cada transacção ocorre em 3 fases, cada uma formada por

pacotes de grupo

pacotes de grupo

1. Token 2. Data 3. Handshake

Os dispositivos escutam os dados OUT, ou transmitem

dados/handshake IN nas alturas indicadas pelo

controlador.

Token Data Handshake

(13)

L1:Pacotes (2)

• Dentro de cada pacote os Bytes são enviados por ordem

inversa de bits (do lsb ao msb).

• Cada pacote é dividido até 7 campos:

a. [Obrigatório] SYNC Byte (0x01, para acerto de relógio) b. [Obrigatório] PID Byte, dividido em duas partes:

b. [Obrigatório] PID Byte, dividido em duas partes:

• Tipo de pacote (4 bits)

• Verificação (4 bits), igual ao complemento para 1 do tipo de pacote.

c. Endereço dispositivo: 7 bits,4 bits para uso interno do dispositivo. d. Sequência de 0, 1 ou mais Bytes de carga (“load”).

e. CRC sobre a endereço (5 bits) e sobre a carga (11 bits), para detecção de erros de transmissão.

f. [Obrigatório] EOP Byte, com D+e D-a low durante dois bits.

Programação de Sistemas USB : 25/32

L1:Pacotes (3)

• Os valores do PID são

dados na seguinte

tabela:

Grupo PID Identificador pacote

Token 0001 OUT token 1001 IN token 0101 SOF token 1101 SETUP token Data 0011 DATA0 1011 DATA1 1011 DATA1 0111 DATA2 1111 MDATA

Handshake 0010 ACK Handshake 1010 NAK Handshake 1110 STALL Handshake 0110 No Response Yet Special 1100 PREamble 1100 ERR 1000 Split 0100 Ping

(14)

L2:Enumeração (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 inserção de

um dispositivo, inicia-se o processo de enumeração

um dispositivo, inicia-se o processo de enumeração

(“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.

2. O hospedeiro envia para o distribuidor o comando “Set Port RESET”: o distribuidor habilita (“enable”) o porto e o dispositivo é forçado a responder apenas pelo endpoint 0. O dispositivo passa para o estado DEFAULT.

Programação de Sistemas USB : 27/32

L2:Enumeração (2)

3. O hospedeiro envia para o distribuidor o comando “Set Address”, que fixa o endereço único, entre 1 e 127, do dispositivo.

O dispositivo passa para o estado ADDRESSED, mas continua a responder pelo endpoint 0.

4. O hospedeiro interroga o dispositivo sobre o código do descritor 4. O hospedeiro interroga o dispositivo sobre o código do descritor

de dispositivo pelo comando “Get Descriptor”.

Com a resposta, o hospedeiro identifica diversas capacidades do dispositivo: tamanho de pacotes, número de configurações, ID do vendedor, ID do produto,...

Nota: o tamanho de pacotes é essencial para reservar espaço nas tramas.

(15)

L2:Enumeração (3)

Classes foram definidas para abranger dispositivos de

fabricantes distintos.

Classe Uso Descrição Exemplos

0x00 Dispositivo Não especificado Descritores de interface usados para determinar o controlador do disp. 0x01 Interface Audio Altifalante, microfone, carta som

Programação de Sistemas USB : 29/32

0x03 Interface HID-Human Interface Dev. Teclado, rato, joystick

0x08 Interface Armazém de massa Memorystick, Câmara fotográfica digital 0x09 Dispositivo USB hub

0x0E Interface Vídeo Webcam

6. O descritor de dispositivo selecciona uma configuração e envia para o dispositivo o comando “Set Configuration”

O dispositivo passa para o estado CONFIGURED.

L2:Transferência (1)

1. O software do hospedeiro

inicializa a transferência de/para o dispositivo.

O software do hospedeiro divide a transferência entre 1, ou mais,

transacções. A divisão depende

Transferência

Transacção n-1

Transacção n-1

Transacção n-2 Transacção n-3

transacções. A divisão depende

das características do dispositivo (tipo, dimensão do pacote,…).

2. O software do hospedeiro escala e executa transacções durante 1 ms. Cada trama é formada por

diversas transacções de transferências distintas.

Transferência

Transacção n-1 Transacção n-1 Transacção n-2 Transacção n-3 Transacção n-1

(16)

L2:Transferência (2)

3. Cada transacção é formada por uma sequência de pacotes.

i. Token : determina o tipo de pacote.

Transferência

Transacção n-1

Transacção n-1

Transacção n-2 Transacção n-3

Transacção n-1 Sync. Packet IDDevice

Address ENDP

Nr CRC EOP

8 bits 8 bits 7 bits 4 bits 5 bits 2 bits

ii. Data : dados

iii. Handshake : informação sobre o resultado final da transacção.

Programação de Sistemas USB : 31/32

Token Data Handshake

Sync. Packet ID Data Field CRCCRC EOP

8 bits 8 bits 0-1023 Bytes 16 bits16 bits 2 bits

Sync. Packet ID EOP

8 bits 8 bits 2 bits

L2:Transferência (3)

Exemplo: o hospedeiro interroga o rato USB em cada 10

tramas (100 vezes por seg).

O endpoint do rato é do tipo interrupção e dois casos

podem ocorrer:

• O rato tem dados na sua memória tampão (“buffer”)

• O rato tem dados na sua memória tampão (“buffer”)

• O rato não tem dados na sua memória tampão (“buffer”)

IN DATA1 ACK

Referências

Documentos relacionados

Mestrado em Administração e Gestão Pública, começo por fazer uma breve apresentação histórica do surgimento de estruturas da Administração Central com competências em matéria

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

Objetivou-se com este estudo avaliar a qualidade de leite pasteurizado com inspeção estadual pela pesquisa de estafilococos coagulase positiva, sua

O modelo de toxicidade reprodutiva empregado para realização deste trabalho consiste da administração prolongada do eugenol durante a gestação de ratas Wistar,

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for