Vitor Amadeu Souza [email protected] Introdução Veremos agora os passos para enviar uma string de caracteres pela USB. Porém antes veremos um tutorial referente a porta USB. Tutorial USB Sistema de descrição do USB Um sistema USB é descrito em três diferentes áreas: Interconexão USB; USB Device; USB Host; A interconexão USB é a maneira no qual os dispositivos USB estão conectados com o host. Os seguintes aspectos estão incluídos: Topologia do Barramento: Modo de conexão entre o device e o host; Relação entre camadas: Capacidade de cada tarefa ser executada na pilha USB; Modo de fluxo de dados: A maneira no qual os dados se movem no sistema sobre o protocolo USB; Topologia do Barramento A interconexão física utiliza a topologia estrela. Cada HUB (Concentrador) é o centro de cada estrela. Cada fio é ligado ponto-a-ponto entre o host e o HUB. Na figura abaixo podemos apreciar melhor este conceito: USB Host Somente há um Host (Hospedeiro) no barramento USB. Esta interface é chamada de Host Controller. O Host Controller pode ser implementado por hardware, firmware ou software. USB Devices Existem dois tipos de devices USB, vejamos: Hubs, que disponibilizam pontos adicionais de acesso ao USB; Funções, que disponibilizam capacidades adicionais ao sistema, como joystick digitais ou alto-falantes. Os dispositivos USB atendem aos seguintes termos: Compreendem o protocolo USB; Respondem as operações standars (padrão) do protocolo, como configuração e reset; Interface Física Codificação de dados A USB implementa a codificação de dados do tipo NRZI para transmissão de dados. Na codificação do NRZI, o “1” é representado por não haver troca do nível enquanto o “0” representa uma troca. Uma string de zeros causa no NRZI uma troca de bit a cada tempo. Uma string de uns causa um período de inatividade no barramento. Bit de Stuffing Para garantir sincronismo na rede, após a transmissão de 6 uns, o NRZI impõe um “0” para garantir a transição na linha e assegurar o sincronismo na comunicação. Velocidades de comunicação As velocidades de comunicação disponíveis para o USB são as seguintes: High Speed – 480 Mbps podendo variar +-0,05% Full-Speed – 12 Mbps podendo variar +-0,25% Low-Speed – 1,5 Mbps podendo variar 1,5 % Atenuação do Cabo Os cabos USB devem atender as seguintes exigências sobre o cabo para poderem operar normalmente: Distribuição de energia Classes de dispositivos A potência exigida por cada dispositivo pode ser simplificada com a introdução do conceito de unidade de carga. A unidade de carga é definida por uma corrente de 100 mA. O número de unidade de carga de um dispositivo pode consumir é um valor absoluto independente do tempo. Um dispositivo pode ser low-power consumindo uma unidade de carga e highpower consumindo 5 unidades de carga. Por default, todos os dispositivos são low-power. A transição para high-power é feita através de controle de software. É responsabilidade do software assegurar a potência adequada para o funcionamento do dispositivo. O USB suporta uma faixa de fontes de energia que pode ser observado abaixo: Bus-powered hubs: Estas unidades somente podem consumir uma unidade de carga na configuração e 5 após a mesma. Self-powered hubs: A energia para o funcionamento não são provenientes do Vbus do barramento. Low-power bus-powered functions: Toda a energia para o funcionamento do dispositivo vem do Vbus. Este dispositivo pode consumir no máximo uma unidade de carga. High-power bus-powered functions: Toda a energia para o funcionamento do dispositivo vem do Vbus. Este dispositivo pode consumir no máximo uma cinco unidades de carga. Self-powered functions: Pode consumir uma unidade de carga do Vbus. O restante é fornecido através de uma fonte externa. Conectores disponíveis Camada de Protocolo Transferência dos Bits Todos os bits são transmitidos primeiramente pelo bit LSB. Campo de sincronismo Todos os pacotes são inicializados pelo campo de SYNC. A função deste campo é que o circuito de entrada do receptor ajuste o seu clock com o do transmissor. No modo full / low-speed são gerados 8 bits enquanto que no highspeed 32. Formato dos Pacotes Todos os pacotes iniciam com o campo de Start e finalizam com o campo de End. O Start-of-Packet (SOP) é uma parte do campo de SYNC e o End-ofPacket (EOP) sinaliza o fim do pacote. Campo de Identificador de Pacote O campo de identificação do pacote (PID) segue imediatamente após o campo de SYNC. Um PID consiste de quatro pacotes seguidos de quatro bits de checagem de campo, observe: Os seguintes PIDs estão disponíveis: Campo de Endereço A função deste campo é especificar o dispositivo em uma rede. Assim que o device é energizado, ele recebe o endereço 0 e aguarda o Host Controller endereçar o mesmo. O endereço 0 não pode ser usado em função disto. Campo de Endpoint Este campo é usado para permitir mais flexibilidade no endereçamento nos momentos em que há as transações de IN, OUT e SETUP. Full-speed e High-Speed suportam até 16 endpoints enquanto o low-speed suportam no máximo 3. Frame de Número de Campo É uma sequência de 11 bits que é incrementado pelo host a cada frame trafegado pela rede. Quando o valor máximo é atingido (0x7FFF) este valor retorna a 0. Campo de Dados O campo de dados pode variar na faixa de 0 a 1024 bytes e tem um número integral de bytes. Abaixo está apresentado o formato da transmissão dos bytes: Campo de CRC (Cyclic Redundanct Checks) É usado para garantir a integridade na comunicação de dados. Desta forma, podem se garantir que o pacote transferido pelo Host será recebido pelo device. USB Device Framework Alimentação É o momento no qual o dispositivo é alimentado. O mesmo pode ser alimentado através de fonte própria (self-powered) ou através do próprio barramento (bus-powered). Default Após o dispositivo ser energizado, o mesmo não pode responder a qualquer transação do barramento até que o mesmo seja resetado pelo barramento. Após a condição de reset, o dispositivo é endereçado para o seu endereço default (0). Quando o processo de reset está completo, o dispositivo USB opera de acordo com a sua velocidade (low/full/high). A velocidade é selecionada através da terminação de resistores do dispositivo, conforme apresentado abaixo: Para o modo High-Speed, o mesmo inicia operando em Full-Speed e através de protocolo de software, altera para o modo High-Speed. Endereçamento Todos os dispositivos USB tem um endereço único após a condição de reset. Cada device recebe o seu endereço pelo host controller. O dispositivo mantém este endereço até que o mesmo entre em condição de suspensão. Configuração Este é o estado em que o dispositivo é configurado em algum modo de comunicação. Suspensão Para conservar energia, o dispositivo USB pode automaticamente entrar neste estado quando o dispositivo detectar que não há tráfico na linha por um determinado período de tempo. Enumeração Quando um dispositivo USB é colocado ou removido da linha, o host usa o processo de enumeração para identificar e gerênciar o estado do dispositivo. Modos de Comunicação Control Transfers Controle de dados é usado pelo sistema de software USB para configurar os dispositivos quando os mesmos são conectados ao host. Outros drivers de software podem usar este modo para implementações específicas. Bulk Transfers Consiste no envio de dados em massa, comumente utilizado para impressoras e scanners. Esta transferência é seqüencial. Interrupt Transfers Tem uma latência limitada de comunicação entre o dispositivo e o host por um determinado tempo sincrono. Isochronous Transfers É uma transferência continua em tempo real. É muito usado para aplicações que envolvam voz por exemplo.