Muitos de nós nunca pensamos muito nos nossos dispositivos USB, apenas os ligamos e esquecemos deles. Mas e se você for do tipo curioso que deseja saber mais sobre como funciona o USB? A postagem de hoje com perguntas e respostas sobre o superusuário tem as respostas para as perguntas de um leitor curioso.
A sessão de perguntas e respostas de hoje chega até nós como cortesia do SuperUser - uma subdivisão do Stack Exchange, um grupo de sites de perguntas e respostas voltado para a comunidade
Foto cortesia de Evilelka Kowalski (Flickr) .
A questão
O leitor de superusuário smeeb quer saber se realmente existe 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 entre computadores e dispositivos eletrônicos.
Mas existe um verdadeiro Protocolo de Comunicação USB ? Meu entendimento é que:
- Você conecta um dispositivo USB a uma máquina (Ubuntu ou qualquer tipo de Linux, por exemplo).
- O Linux encontra o driver de dispositivo para esse dispositivo de alguma forma ( bônus se você souber! ) e carrega-o.
- O dispositivo agora está conectado em / dev / theDevice .
- Os aplicativos de espaço do usuário agora podem ler e gravar em / dev / theDevice e o driver lida com a entrada e saída de baixo nível para o dispositivo / hardware subjacente.
Pelo que eu posso dizer, um Protocolo de Comunicação USB não aparece em nenhum lugar neste fluxo. Se bem entendi, o USB é apenas o cabo e a conexão elétrica entre o PC e o aparelho.
Eu estou errado aqui? O USB realmente implementa algum tipo de protocolo de baixo nível que ressalta o fluxo acima? Em caso afirmativo, o que é e como funciona em uma vista de 30.000 pés?
Existe um protocolo de comunicação USB real?
A resposta
Os colaboradores do SuperUser, RedGrittyBrick e projectdp, têm a resposta para nós. Primeiro, RedGrittyBrick:
Sim ( veja protocolos USB ).
Pelo que entendi, a especificação USB define um conjunto complexo de protocolos em camadas e perfis de dispositivo.
Por exemplo, os dispositivos USB podem estar em conformidade 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 a USB de baixo nível do sistema operacional pode reconhecer que drivers de nível superior específicos do dispositivo são necessários.
Seguido pela resposta do projectdp:
Questão
Existe um protocolo de comunicação USB de baixo nível em ação e o que é?
Responda
Sim existe. A especificação USB inclui o protocolo USB que define a maneira como o barramento é usado em um nível de bits. Este seria o protocolo de baixo nível que sustenta os protocolos de nível superior (ou seja, armazenamento em massa, HID, etc.).
Para obter detalhes sobre como funciona o protocolo USB, este Wiki OSDev é útil. Aqui esta outra descrição interessante usando diagramas de seqüência para descrever as várias transações de dados por protocolo USB.
Pergunta bônus
Como o Linux encontra e carrega o driver de dispositivo para esse dispositivo?
Resposta bônus
No Linux, ao usar um kernel habilitado para USB, um dispositivo USB funcional será detectado por meio do hardware e do kernel devido à especificação USB. No lado do hardware, a detecção é feita pelo USB Host Controller. Em seguida, no kernel, o driver do controlador de host assume e traduz os bits de baixo nível na conexão para informações formatadas do protocolo USB. Essas informações são então preenchidas no driver usbcore no kernel.
Eu parafraseei este excelente Artigo Opensourceforu , que tem muito mais detalhes e clareza sobre sua pergunta no contexto do Linux.
Certifique-se de verificar o resto da discussão animada através do link do tópico compartilhado abaixo!
Tem algo a acrescentar à explicação? Som desligado nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui .