USB2.0 数据传输块大小有限制吗?

gol*_*ean 7 usb data-transfer

一次使用一个 read() 或 write() ,我们可以通过 USB 接口增加批量数据大小吗?例如,我想传输 1024 (1K) 字节的数据块,如果设备只有 64 字节的限制,有什么方法可以通过 USB 增加 read() 和 write() 系统调用的数据包大小?

在主机-> 设备环境中通过 USB 传输的数据大小是否有任何限制?

Ser*_*sov 7

在 USB 总线级别,数据包大小受USB 规范的 限制——USB 2.0 的限制是:

  • 对于批量传输——高速端点为 512 字节,全速端点为 8、16、32 或 64 字节(并且根本不允许低速批量端点);
  • 对于中断传输——高速高达 1024 字节,全速高达 64 字节,低速高达 8 字节;
  • 对于同步传输——高速最多 1024 字节,全速最多 1023 字节(并且不允许再次使用低速)。

但是,由于内核驱动程序完成缓冲,因此对 read() 和 write() 的限制可能不同;例如,在当前 Linux 版本中使用 usbfs 时,一次系统调用最多可以传输 16384 个字节。


Ste*_*hen -1

不,我相信这取决于驱动器的集群大小。您可以通过格式化来定义它。

  • 文件系统格式选择对 USB 大容量存储设备的链接功能有任何影响的想法对我来说没有任何意义。底层设备结构可能会影响链接功能,但不会影响文件系统的细节。但我认为任何限制都在于 USB 数据协议(或驱动程序的接口)。 (2认同)