oficina usb

47
Comunicação USB, abordagem geral com Libusb Bolsisa: Lászlon Rodrigues da Costa. 24/04/2012 Lászlon Rodrigues da Costa - PET Engenharia da Computação 1

Upload: laszlon-costa

Post on 09-Jul-2015

605 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Oficina usb

Comunicação USB, abordagem geral com Libusb Bolsisa: Lászlon Rodrigues da Costa.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

1

Page 2: Oficina usb

Sumário

• Comunicação Serial x Paralela

• Motivação para o USB

• Objetivos do USB 2.0

• O que é USB e como funciona

• Alimentação

• Velocidade

• Visão Geral: Arquitetura

• Tipos de Comunicação USB

• Protocolo USB

• Transferência de Controle – Panorama

• Descritores USB

• Libusb-1.0

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

2

Page 3: Oficina usb

Comunicação Serial x Paralela

• Comunicação Paralela é o processo de enviar dados em que todos os bits de um símbolo são enviados juntos.

• Comunicação Serial é o processo de enviar dados um bit por vez, sequencialmente, num canal de comunicação ou barramento.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

3

Page 4: Oficina usb

Motivação para o USB

• Conexão de PC com telefones: Está entendida que a relação entre computação e telecomunicações é a base para a próxima geração de aplicações produtivas.

• Uso facilitado: A falta de flexibilidade de se reconfigurar o computador foi a maior complicação no desenvolvimento.

• Extensão de Portas.

• Porém a mais recente motivação do desenvolvimento do USB é o rápido aumento da capacidade de processar dados em alta velocidade.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

4

Page 5: Oficina usb

Motivação para o USB

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

5

Page 6: Oficina usb

Objetivos do USB 2.0

• Facilidade de uso para periféricos de PC.

• Solução de baixo custo para transferência até 480 Mb/s.

• Total suporte em tempo real para voz, áudio e vídeo.

• Protocolo flexível por mixar comunicação isócrona de dados e de mensagens assíncronas.

• Reconfiguração simples de vários dispositivos.

• Total compatibilidade com dispositivos usados em versões anteriores.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

6

Page 7: Oficina usb

O que é USB e como funciona.

• Com o aumento de variedade de periféricos se viu a necessidade de um protocolo de comunicação padrão.

• USB é uma sigla para Universal Serial Bus.

• Foi desenvolvido por um consórcio de empresas. Chamado de USB implementers Forum. • Destaque: Microsoft, Apple, Hewlett-Packard, NEC e Intel.

• Versões:

• USB 0.7: novembro de 1994;

• USB 0.8: dezembro de 1994;

• USB 0.9: abril de 1995;

• USB 0.99: agosto de 1995;

• USB 1.0: janeiro de 1996;

• USB 1.1: setembro de 1998;

• USB 2.0: abril de 2000 com a velocidade de 480 Mbps;

• USB 3.0: setembro de 2009 com a velocidade de 4,8 Gbps.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

7

Page 8: Oficina usb

O que é USB e como funciona.

• Conectores:

• Serie A:

• Serie B:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

8

Pinos Nome Descrição 1 VBUS +5 VDC 2 D- Data - 3 D+ Data + 4 GND Ground

Page 9: Oficina usb

O que é USB e como funciona -Alimentação • Os dispositivos USB especificam o consumo de energia,

expressa em unidades de 2mA, no descritor de configuração.

• Um dispositivo não pode aumentar seu consumo para acima do que foi especificado durante a enumeração.

• Há três classes de funções USB:

• Baixa potência alimentado pelo barramento.

• Alta potência alimentado pelo barramento.

• Auto alimentados.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

9

Page 10: Oficina usb

O que é USB e como funciona -Velocidade • Existem 3 modos de velocidade no protocolo USB:

• High-Speed: Usado em vídeo e armazenamento. Taxa de transferência de bit é de 480Mb/s.

• Full-Speed: Pode ser usado em dispositivos de áudio, e vídeos comprimidos. Tem a característica de ter a largura de banda garantida e tempo de latência garantido. Taxa de transferência de bit é de 12Mb/s.

• Low-Speed: Para dispositivos interativos, como mouse, teclado, acessório de games. Taxa de 1,5 Mb/s.

• High-Speed e Full-Speed são geralmente usados em transmissão isócrona.

• Low-Speed é mais usada em dispositivos interativos.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

10

Page 11: Oficina usb

O que é USB e como funciona -Identificação de Velocidade • A identificação da velocidade de operação é feita no

acoplamento do dispositivo.

• Nível lógico alto em D+ = FS-USB (full speed).

• Nível lógico alto em D- = LS-USB (low speed).

• O nível lógico é garantido através de um resistor pull up de 1.5kΩ.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

11

Page 12: Oficina usb

O que é USB e como funciona -Identificação de Velocidade

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

12

Page 13: Oficina usb

O que é USB e como funciona -Identificação de Velocidade

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

13

Page 14: Oficina usb

Visão Geral: Arquitetura

• O USB é um barramento de cabos que suporta a troca de dados de uma vasta gama de componentes simultaneamente.

• Tem que permitir que dispositivos sejam conectados, configurados, usados e desconectados sem interferir na atividade de outros.

• Os dispositivos USB são um desses que se seguem:

• Hubs: proporcionam pontos adicionais para outros dispositivos;

• Funções: eles proporcionam capacidades ao sistema, ou seja, um dispositivo final.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

14

Page 15: Oficina usb

Visão Geral: Arquitetura

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

15

Page 16: Oficina usb

Visão Geral: Arquitetura

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

16

A topologia do barramento é uma estrutura estrela em camadas.

Page 17: Oficina usb

Visão Geral: Arquitetura

• O número máximo de camadas é sete.

• O número máximo de hubs não root em um caminho é de apenas cinco.

• Todos os dispositivos no barramento apresentar uma interface USB padrão que segue os requisitos:

• Compreensão do protocolo USB;

• Respostas as operações padrões USB, como configuração e reset;

• Capacidade de descrição de informação padrão.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

17

Page 18: Oficina usb

Tipos de Comunicação USB

• Control Transfers • Controle de dados é usado pelo software do sistema USB para

configurar dispositivos assim que são anexados.

• Outros drives do dispositivo pode optar por esta comunicação par um uso especifico.

• Esta comunicação entrega os dados sem perdas.

• Bulk Transfers • É usado para troca de dados em massa. Geralmente é usado em

impressoras e em scanners.

• Os dados são enviados sequencialmente. A confiabilidade é garantida em nível de hardware, usando uma detecção de erros e um número máximo de tentativas.

• A largura de banda pode variar de acordo com o uso do barramento.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

18

Page 19: Oficina usb

Tipos de Comunicação USB

• Interrupt Transfers

• Mais usado em transferências com a finalidade de comunicar uma ação com poucos dados

• Apesar de não ter uma taxa de sincronismo explicito pode haver a exigência de um tempo mínimo de resposta.

• Isochronous Transfers

• Esta é usada em casos que o envio dos dados seja enviado assim que sejam criados, ou seja, uma resposta em tempo real.

• Um típico exemplo de transferência desse tipo é a voz.

• Não há como fazer um tratamento de erros na transmissão, porem este a taxa de erros em bits deve ser tolerável para este tipo de transmissão.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

19

Page 20: Oficina usb

Tipos de Comunicação USB

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

20

Page 21: Oficina usb

Protocolo USB

• Protocolo é uma convenção padrão que controla e possibilita uma conexão, comunicação e troca de dados entre sistemas.

• Protocolo mais antigo é a língua falada.

• Diferentemente do RS-232, em que o formato de dados não está bem definido, o USB é constituída por várias camadas de protocolos.

• A realidade é que se trabalha com as camadas mais superiores deixando o USB controller cuidar das partes inferiores.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

21

Page 22: Oficina usb

Protocolo USB - Tipos de Pacotes USB • O protocolo suporta 3 principais tipos de pacotes diferentes:

• Token: indica que tipo de operação será realizada, e a direção

• Dados: Contém outros dados alheios ao protocolo se for necessário.

• Handshake: Para reconhecer dados ou relatório de erros.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

22

Page 23: Oficina usb

Protocolo USB - Campos dos pacotes USB

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

23

Page 24: Oficina usb

Protocolo USB - Campos dos pacotes USB • ADDR

• O endereço que especifica para qual pacote o dispositivo é especificado. Campo contém 7 bits, fazendo assim possível a suporte de 127 dispositivos.

• O endereço 0 é reservado para novos dispositivos.

• ENDP • Campo que contém 4 bits, podendo assim um dispositivo ter até

16 possíveis endpoints. Dispositivos low-speed podem conter apenas 4.

• CRC • Cyclic Redundancy Checks. Campo reservado para detecção de

erros. Pacotes token contém 5 bits e os pacotes de dados 16.

• EOP • End of packet. Sinaliza o final do pacote e contém 2 bits.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

24

Page 25: Oficina usb

Protocolo USB - Campos dos pacotes USB

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

25

Page 26: Oficina usb

Protocolo USB - Campos dos pacotes USB • Sync

• Todo pacote deve começar com um pacote de sincronização. Este campo tem 8 bits para troca com velocidade low e full e 32 bits em high. Usado para sincronização do relógio.

• PID

• Identifica que tipo de pacote se trata.

• A informação contém 4 bits, porém para evitar erros há uma repetição dos bits.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

26

Page 27: Oficina usb

Protocolo USB - Tipos de Pacotes USB • Pacote Token

• Existem basicamente três tipos:

• In: Informa ao dispositivo USB que o Host deseja receber informação.

• Out: Informa que o Host deseja enviar informação.

• Setup: Usado para inicio de transferência de controle.

• Os pacotes devem seguir o seguinte padrão:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

27

Page 28: Oficina usb

Protocolo USB - Tipos de Pacotes USB • Pacote de dados

• São dois tipos de pacotes de dados (DATA 0, DATA1), cada um tem a capacidade de transferir 1024 bytes.

• Em high-speed existem mais 2 novos PID: DATA2 e MDATA.

• O pacote deve seguir a seguinte estrutura:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

28

Page 29: Oficina usb

Protocolo USB - Tipos de Pacotes USB • Pacote Handshake

• Estes pacotes contém apenas a identificação no campo PID. São divididos em:

• ACK - Reconhecimento de que o pacote foi recebido com sucesso.

• NAK- Relatório que o dispositivo não pode enviar ou receber dados temporariamente.

• STALL-O dispositivo está bloqueado e necessita de uma intervenção do host.

• Tem o seguinte formato:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

29

Page 30: Oficina usb

Transferência de Controle - Panorama • Primeiro é feito a enumeração e configuração do dispositivo.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

30

Page 31: Oficina usb

Transferência de Controle - Panorama

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

31

Page 32: Oficina usb

Transferência de Controle - Panorama

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

32

Page 33: Oficina usb

Transferência de Controle - Panorama

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

33

Page 34: Oficina usb

Descritores USB

• É necessário que o host saiba conheça detalhes dos dispositivos no barramento.

• Para isso existem os descritores que seguem uma hierarquia e traz informações sobre o dispositivo: • Versão USB suportada;

• Quais maneiras pode ser configurado;

• O número de parâmetros.

• Os mais comuns são: • Descritores de dispositivos;

• Descritores de configuração;

• Descritores de Interface;

• Descritores de Endpoint;

• Descritores de String.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

34

Page 35: Oficina usb

Descritores USB

• Descritores de Dispositivo: • Carregam informações gerais sobre o dispositivo;

• ID Vendor e ID Product.

• Descritores de Configuração: • Especifica valores como quantidade de energia na configuração

atual, se o dispositivo é auto alimentado ou mesmo o número de interfaces.

• Descritor de interface: • É o agrupamento de endpoints para uma determinada

configuração funcional;

• Permite ter mais de uma interface ativa por vez.

• Descritor de endpoint: • Descreve o tipo de intervalo, direção de transferência e tamanho

máximo de cada pacote.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

35

Page 36: Oficina usb

Composição dos Descritores

• Todos os descritores tem um formato comum;

• O primeiro byte informa o tamanho do descritor, o segundo o tipo:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

36

Page 37: Oficina usb

Libusb-1.0

• Libusb é uma biblioteca de código aberto para comunicação USB.

• Para desenvolvimento aplicativos para comunicação direta com o periférico.

• Necessita apenas conhecimento do ponto de vista de Software para operar a USB:

• Descritores;

• Configurações;

• interfaces;

• Transferências – bulk, interrupt, isochronous e control.

• Suporta comunicação síncrona e assíncrona.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

37

Page 38: Oficina usb

Libusb-1.0 – Síncrona e Assíncrona • Em lógica uma transferência ocorre em 2 etapas:

• Ler dados:

• 1- Um pedido de dado é enviado para o dispositivo;

• 2- Os dados de entrada são recebidos.

• Escrever dados:

• 1- O host envia dados;

• 2- O dispositivo envia confirmação de recebimento.

• Considerando que o dispositivo seja um botão que quando apertado retorna uma informação

• As etapas acima em programação síncrona são feitas em uma única chamada.

• Assíncrona cada passo é chamado no código.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

38

Page 39: Oficina usb

Libusb-1.0 - Contexto

• Contexto possibilita a utilização de várias comunicações simultâneas a partir de 2 threads independentes.

• Para iniciar um contexto é usado a função libusb_init(libusb_context** context).

• Para aplicação simples, pode-se usar NULL como parâmetro.

• Contextos são destruídos com libusb_exit().

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

39

Page 40: Oficina usb

Libusb-1.0 – Estruturas

• libusb_context

• Representa um contexto no código.

• libusb_device

• Representa e faz referencia a um dispositivo conectado ao barramento.

• libusb_device_handle

• Representa um identificador para um dispositivo;

• Usado como parâmetro para as funções de comunicação.

• libusb_device_descriptor

• Contém os descritores de dispositivos.

• Pode ser usado para localizar um dispositivo no barramento.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

40

Page 41: Oficina usb

Libusb-1.0 – Funções (Síncrona) • (*)libusb_get_device_list (libusb_context* ctx,

libusb_device** list) • Preenche list com todos os dispositivos no barramento.

• (*)libusb_free_device_list(libusb_device** list, int unref_devices ) • Limpa list. Cuidado, depois que se perde a referencia, não se

pode atribuir um “handle”.

• int libusb_get_device_speed (libusb_device* dev) • Retorna a velocidade do dispositivo.

• uint8_t libusb_get_device_address ( libusb_device * dev) • Retorna o endereço do dispositivo

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

41

Page 42: Oficina usb

Libusb-1.0 – Funções (Síncrona) • int libusb_get_device_speed (libusb_device* dev)

• Retorna a velocidade do dispositivo.

• O retorno pode ser:

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

42

LIBUSB_SPEED_UNKNOWN O SO não conseguiu identificar a velocidade

LIBUSB_SPEED_LOW (1.5MBit/s).

LIBUSB_SPEED_FULL (12MBit/s).

LIBUSB_SPEED_HIGH (480MBit/s).

LIBUSB_SPEED_SUPER (5000MBit/s).

Page 43: Oficina usb

Libusb-1.0 – Funções (Síncrona) • (*) libusb_get_device_descriptor(libusb_device* dev, struct

libusb_device_descriptor* desc ) • Preenche a estrutura libusb_device_descriptor com os

descritores de dispositivos. Entre eles idVendor e idProduct.

• libusb_open(libusb_device* dev, libusb_device_handle* handle) • Abre o dispositivo e preenche handle com parâmetros para

operações.

• (*)libusb_open_device_with_vid_pid (libusb_context* ctx, uint16_t vendor_id, uint16_t product_id) • Abre o dispositivo e preenche o handle a partir dos

identificadores vendor e product.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

43

Page 44: Oficina usb

Libusb-1.0 – Funções (Síncrona) • libusb_kernel_driver_active(libusb_device_handle* dev,

int interface_number)

• Verifica se a interface está sendo usada pelo kernel SO.

• Essa função não funciona no windows.

• libusb_detach_kernel_driver(libusb_device_handle* dev, int interface_number)

• Desliga a interface do dispositivo do kernel.

• Não funciona no Darwin e Windows.

• libusb_attach_kernel_driver(libusb_device_handle* dev, int interface_number)

• Religa a interface ao dispositivo do kernel.

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

44

Page 45: Oficina usb

Libusb-1.0 – Funções (Síncrona)

int libusb_control_transfer ( Libusb_device_handle * dev_handle,

uint8_t bmRequestType,

uint8_t bRequest,

uint16_t wValue,

uint16_t wIndex,

unsigned char * data,

uint16_t wLength,

unsigned int timeout

)

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

45

Page 46: Oficina usb

Libusb-1.0 – Funções (Síncrona)

int libusb_bulk_transfer ( struct libusb_device_handle * dev_handle,

unsigned char endpoint,

unsigned char * data,

int length,

int * transferred,

unsigned int timeout

)

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

46

Page 47: Oficina usb

Libusb-1.0 – Funções (Síncrona)

int libusb_interrupt_transfer

( struct libusb_device_handle* dev_handle,

unsigned char endpoint,

unsigned char * data,

int length,

int * transferred,

unsigned int timeout

)

24

/04

/20

12

szlo

n R

od

rigu

es d

a C

ost

a -

PET

En

gen

har

ia d

a C

om

pu

taçã

o

47