Pagina inicial » como » Existe um protocolo de comunicação USB real?

    Existe um protocolo de comunicação USB real?

    A maioria de nós nunca pensa muito nos nossos dispositivos USB, apenas os ligamos e os esquecemos. Mas e se você é do tipo curioso que quer saber mais sobre como o USB funciona? O post de perguntas e respostas do SuperUser de hoje tem as respostas para as perguntas de um curioso leitor.

    A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade..

    Foto cedida por Evilelka Kowalski (Flickr).

    A questão

    Superuser reader smeeb quer saber se realmente existe um Protocolo de Comunicação USB real:

    Segundo 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 uma real Protocolo de Comunicação USB? Eu entendo que:

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

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

    Estou errado aqui? O USB realmente implementa algum tipo de protocolo de baixo nível que ressalta o fluxo acima? Se sim, o que é e como funciona a uma vista de 30.000 pés??

    Existe um protocolo de comunicação USB real?

    A resposta

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

    Sim (ver protocolos USB).

    Pelo que entendi, a especificação USB define um conjunto complexo de protocolos em camadas e perfis de dispositivos.

    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 serem gerenciados por um driver de dispositivo genérico. Alguns dispositivos USB podem se comunicar em um nível mais baixo, 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 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 bit. Este seria o protocolo de baixo nível subjacente aos protocolos de nível superior (ou seja, armazenamento em massa, HID, etc.).

    Para detalhes sobre como o protocolo USB funciona, este wiki OSDev é ú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 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 em funcionamento será detectado através do hardware e do kernel devido à especificação USB. No lado do hardware, a detecção é feita pelo controlador host USB. Então, no kernel, o Driver do Controlador Host assume e converte os bits de baixo nível na conexão para informações formatadas no protocolo USB. Esta informação é então preenchida no driver usbcore no kernel.

    Eu parafraseei a partir deste excelente artigo Opensourceforu, que tem muito mais detalhes e clareza sobre a 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 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.