2 perguntas sobre USB (terminais e implementação para arquitetura de PC)

1

Eu gostaria de perguntar coisas que ainda não recebi depois de ler muitos artigos sobre USB, incluindo as especificações oficiais do USB 2.0.

  1. O que exatamente são endpoints e qual é o seu propósito? Deixe-me explicar um pouco: Pelo que entendi, o endpoint é a origem ou o destino dos dados. Eu não quero ser rude, mas minha cabeça dói porque não consigo entender o porquê. Quer dizer, o USB é o barramento serial, portanto, ele deve se preocupar apenas em fornecer dados para o destino correto. O destino é o dispositivo. Por que mais incluir vários destinos no dispositivo em forma de endpoints? Quero dizer, o dispositivo USB pode, do que gerenciar os dados, o que quiser, para qualquer desenvolvedor de estrutura lógica desejado, então, por que adicioná-lo para transferir especificações?

  2. No host USB no PC, esse host USB carrega os drivers apropriados para o dispositivo. Então, digamos que eu conecte algum dispositivo de classe personalizada USB. O driver do host USB obterá seus IDs e, assim, depois de conhecer o dispositivo, ele deverá carregar seus drivers. Mas eu pensei que os drivers de dispositivo estão presentes no kernel, então como pode ser adicionalmente carregado?

Além disso, digamos que meu host USB esteja conectado ao PC via PCI. Então, meu dispositivo host USB irá gerar alguma interrupção PCI para chamar a atenção do sistema operacional, e primeiro o sistema operacional deve carregar o driver host USB. Isso não é um processo muito lento? Quero dizer, sim, até mesmo o USB 3.0 é MUITO mais lento do que o CPU pode suportar, mas ainda assim ...

Obrigado por qualquer resposta, por favor, se você sabe alguma coisa sobre aponta ajuda, segunda pergunta é mais teórica. Obrigado mais uma vez:)

    
por user32569 01.08.2010 / 20:56

2 respostas

1

1, What exactly is endpoints and what is its purpose? Let me explain a bit: From what I understood, endpoint is source or destination of data. But, WTF? I dont want to be rude, but my head hurts becouse I cannot really understand why. I mean, USB is serial bus, so it should only care about delivering data to proper destination. Destination is device. Why to more include multiple destinations in device in form of endpoints?

Sim, o "ponto final" é apenas um conceito USB, ou seja, o ponto final de uma ligação a um dispositivo.

O motivo pelo qual um dispositivo pode ter vários pontos de extremidade é que pode haver vários tipos de comunicação acontecendo por vez, por exemplo, dados de controle e dados reais do dispositivo. Para separá-los, vários pontos de extremidade são necessários (um pouco como o canal de dados + controle que o FTP usa).

"USB em poucas palavras" explica isso muito bem: link

2, In USB host on PC, there is that USB host loads apropriate drivers to device. So, lets say I plug in some USB custom class device. USB host driver will than get its IDs and so, and after knowing the device it should load its drivers. But I thought that device drivers are present in kernel, so how can be additionally loaded?

Normalmente, apenas os drivers USB de baixo nível são integrados ao kernel. Drivers de alto nível, especialmente drivers específicos de fornecedores, são carregados sob demanda. Como isso funciona depende do sistema operacional, mas o sistema operacional mais moderno pode carregar drivers no kernel em tempo de execução, por exemplo, Linux usando módulos, ou Windows usando o Modelo de Driver do Windows.

Furthermore, lets say my USB host is connected to Pc via PCI. So my USB host device will generate some PCI interrupt to get attention of OS, and than OS first must load USB host driver. Isn´t this too slow process? I mean, yes even USB 3.0 is MUCH slower than CPU can handle, but still...

Essa pergunta não está bem clara. Sim, o sistema operacional deve carregar os drivers e, sim, isso pode levar alguns segundos, mas isso é feito apenas uma vez. E o PCI não será um problema, porque o PCI é muito mais rápido que o USB 3.0.

    
por 02.08.2010 / 00:12
0

Se eu entendi a pergunta corretamente, talvez essas perguntas possam esclarecer as coisas:

Como um hub USB deve se anunciar?

Como um dispositivo que emula vários dispositivos (por exemplo, um teclado + trackpad) se anuncia?

Para o segundo item, só posso falar do que sei sobre o Linux, mas o driver é carregado do disco para o kernel na primeira vez em que é necessário (se é modular), mas a partir daí é na memória . Isso significa tempos de resposta rápidos, mas tempos de configuração potencialmente lentos. Isso parece normal / aceitável para mim.

    
por 01.08.2010 / 23:18

Tags