Existe algum limite de tamanho de pedaço de transferência de dados USB2.0?

4

Com uma leitura () ou escrita () de cada vez, podemos aumentar o tamanho dos dados em massa através da interface USB? Por exemplo, eu quero transferir um bloco de 1024 (1K) bytes de dados e se o dispositivo tiver limitações de apenas 64 bytes, existe alguma maneira de aumentar o tamanho do pacote para as chamadas do sistema read () e write () via USB?

Existe alguma limitação no tamanho da transferência de dados via USB em um ambiente de dispositivo host >?

    
por goldenmean 09.12.2009 / 05:53

3 respostas

4

No nível do barramento USB, os tamanhos dos pacotes são restritos pelas Especificações USB - as restrições para USB 2.0 são:

  • para transferências em massa - 512 bytes para endpoints de alta velocidade, 8, 16, 32 ou 64 bytes para endpoints com velocidade total (e endpoints de baixa velocidade em massa não são permitidos);
  • para transferências interrompidas - até 1024 bytes para alta velocidade, até 64 bytes para velocidade máxima, até 8 bytes para baixa velocidade;
  • para transferências isócronas - até 1024 bytes para alta velocidade, até 1023 bytes para velocidade total (e baixa velocidade não é permitida novamente).

No entanto, as restrições para read () e write () podem ser diferentes devido ao buffer feito pelos drivers do kernel; por exemplo, ao usar o usbfs com versões atuais do Linux, até 16384 bytes podem ser transferidos com uma chamada do sistema.

    
por 12.12.2010 / 22:07
3

Não sou engenheiro de protocolo USB, mas este documento do Especificação USB Intel EHCI parece sugerir que o maior tamanho de pacote USB permitido é de 1024 bytes e o maior bloco de os dados que podem ser transferidos de uma só vez são 24576 bytes, como na página 35:

Seven page pointers are provided to support the expression of 8 isochronous transfers. The seven pointers allow for 3 (transactions) * 1024 (maximum packet size) * 8 (transaction records) (24576 bytes) to be moved with this data structure

    
por 01.11.2010 / 14:38
0

Não, acredito que seja dependente do tamanho do cluster da unidade. Você pode definir isso através da formatação.

    
por 09.12.2009 / 06:04