14Aug

Existe um protocolo de comunicação USB real?

click fraud protection

A maioria de nós nunca pensa muito nos nossos dispositivos USB, apenas os conectamos e esquecemos. Mas e se você for o tipo curioso que quer saber mais sobre como o USB funciona? O Super-usuário Q & A publica as respostas às perguntas de um leitor curioso.

Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.

Foto cortesia de Evilelka Kowalski( Flickr).

A questão

O leitor de superutilizador smeeb quer saber se existe realmente um protocolo de comunicação USB real:

De acordo com a Wikipedia, USB:

  • Define os cabos, conectores e protocolos de comunicação usados ​​em um barramento para conexão, comunicação e fonte de alimentação entrecomputadores e dispositivos eletrônicos.

Mas existe um protocolo de comunicação USB real ?A minha compreensão é que:

  1. Você conecta um dispositivo USB a uma máquina( Ubuntu ou qualquer tipo de Linux, por exemplo).
  2. Linux encontra o driver do dispositivo para esse dispositivo de alguma forma( bônus
    instagram viewer
    se você conhece! ) e o carrega.
  3. O dispositivo agora está conectado em /dev/ o dispositivo .
  4. Os aplicativos de espaço para usuários agora podem ler e gravar em /dev/ o dispositivo e o driver manipula a entrada e saída de baixo nível para o dispositivo / hardware subjacente.

Tanto quanto eu posso dizer, um USB Communication Protocol não aparece em nenhum lugar neste fluxo. Se o meu entendimento estiver correto, o USB é apenas o cabo e a conexão elétrica entre o PC e o dispositivo.

Eu estou errado aqui? O USB realmente implementa algum tipo de protocolo de baixo nível que sublinha o fluxo acima? Em caso afirmativo, o que é e como funciona em uma visão de 30.000 pés?

Existe um protocolo de comunicação USB real?

A Resposta Os contribuidores

SuperUser RedGrittyBrick e projectdp têm a resposta para nós. Primeiro, RedGrittyBrick:

Sim( consulte os protocolos USB).

Como eu entendo, a especificação USB define um conjunto complexo de protocolos em camadas e perfis de dispositivos.

Por exemplo, os dispositivos USB podem estar de acordo com modelos de alto nível como armazenamento em massa, teclado, dispositivo de interface humana, etc. e ser gerenciados por um driver de dispositivo genérico. Alguns dispositivos USB podem se comunicar em um nível inferior, de modo que o suporte USB de baixo nível do sistema operacional possa reconhecer que os drivers de nível superior específicos do dispositivo são necessários.

Seguido pela resposta de projectdp:

Pergunta

Existe um protocolo de comunicação USB de baixo nível em ação e o que é?

Resposta

Sim, existe. A especificação USB inclui o protocolo USB que define a forma como o barramento é usado em um nível de bit. Este seria o protocolo de baixo nível que está subjacente aos protocolos de nível superior( isto é, armazenamento em massa, HID, etc.).

Para detalhes sobre como o protocolo USB funciona, este OSDev wiki é útil. Aqui está outra descrição interessante usando diagramas de seqüência para descrever as várias transações de dados pelo protocolo USB.

Pergunta de bônus

Como o Linux encontra e carrega o driver do dispositivo para esse dispositivo?

Resposta de bônus

No Linux ao usar um kernel habilitado para USB, um dispositivo USB em funcionamento será detectado através do hardware e kernel devido à especificação USB.No lado do hardware, a detecção é feita pelo USB Host Controller. Então, no kernel, o Controlador do Host Controller assume e converte os bits de baixo nível no fio para o protocolo USB, informações formatadas. Esta informação fica preenchida no driver usbcore no kernel.

Eu parafraseei deste excelente artigo Opensourceforu, que tem muito mais detalhes e clareza sobre sua pergunta no contexto Linux.

Certifique-se de verificar o resto da discussão animada através do link de discussão compartilhado abaixo!

Tem alguma coisa a adicionar à explicação? Som desligado nos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.