USB2.0规范
+ -

USB 批量/块传输方式

2020-09-15 683 345
欢迎加入官方QQ群:952873936或联系站长进行技术交流。

USB协议规定了四种传输类型:控制传输、批量传输、同步传输中断传输

批量传输一般用于批量的和非实时的数据传输,通俗的来说就是用于数据量大但对时间要求又不高的场合的一种传输方式,类似用于USB打印机和USB扫描仪等等。

批量传输使用批量传输事务,一次批量传输事务分为三个阶段:令牌包阶段、数据包阶段、握手包阶段。
批量传输分为批量读和批量写,批量读使用批量输入事务,批量写使用批量输出事务。注意:不论输入还是输出都是以主机为参考的。

对于批量传输,如果启动批量传输,如果USB总线中有多余的总线带宽,批量传输会立即执行,但当带宽比较紧张时,批量传输会把带宽让给其它传输类型。所以批量传输的优先级相对其它传输优先级比较低。

批量传输数据包

  • 只有全速和高速设备可以使用批量传输,低速模式不支持批量传输。
  • 高速模式固定为512个字节;
  • 全速模式最大包长可在8、16、32、64字节中选择;
  • 超高速设备数据包最大长度为1024字节,批量传输端点应在其端点描述符中设置最大的数据包负载大小为 1024 字节。它还指定端点可以接受或者发送到超高速总线的突发大小。对于批量端点允许的突发大小应在 1 至 16 范围。

    批量功能端点必须始终传输数据字段小于或等于 1024 字节的数据负载。如果批量传输有比之更多的数据,在突发事务交易的所有数据的有效载荷必须为 1024 字节长度,除了突发的最后一个数据有效载荷,它可能包含剩余数据。

如果传输的数据量大于端点所支持的最大数据包长度,USB主控制器会把该数据按最大数据包长度分为多个批量数据包进行传输,最后一个批量传输长度可以小于或等于最大包长度。

批量输出流程:

批量传输数据流传输包括IN传输和OUT传输,分别对应于数据的读和写,其也分为3个阶段,分别为为令牌阶段、数据段和握手段。
批量输出流程IN

对于批量传输的最后一个IN事务:

  • 如果USB主机收到的数据长度小于端点支持的最大包长度,那么USB主机认为数据已经接收完成。
  • 如果USB主机收到的数据长度等于端点支持的最大包长度,需要额外的0数据的包,告诉USB主机数据已经接收完成。

批量输出流程OUT

令牌阶段
  • 主机发送BULK令牌包,令牌包中包含设备地址、端点号和数据方向。
数据段
  • 从机如果接收令牌包出错,无响应,让主机等待超时;
  • 从机端点不存在,回送STALL
  • 从机端点数据未准备好,回送NAK
  • 从机端点数据准备好,回送数据包。
握手段设备
  • 数据包正确,并有足够的空间保存数据:设备返回ACK握手包或NYET握手包(只有告诉模式才有NYET握手包,它表示本次数据接收成功,但是没有能力接收下一次传输)。
  • 数据包正确,但是没有足够的空间保存数据:设备返回NAK握手包。主机收到NAK,延时一段时间后,再重新进行批量输出事务。
  • 数据包正确,但端点处于挂起状态:设备返回一个STALL握手包。
  • 数据包错误:设备不返回任何握手包,让主机等待超时。

USB批量传输抓包分析

USB批量读数据

由于批量读数据,是设备给主机传输数据,所以是数据阶段是IN事务。
USB批量读数据

USB批量写数据

因为是主机给设备传输数据,所以是数据阶段是OUT事务,如下图。
USB批量写数据

0 篇笔记 写笔记

UVC摄像头批量传输的StreamOn和StreamOff
在UVC规范中,UVC摄像头视频数据的传输方式支持两种,分别为批量传输和同步传输。UVC摄像头数据传输的格式按负载数据头的方式按帧进行打包传输。根据USB规范可知,同步传输方式是只要带中带有同步端点的接口,系统会定时从设备中读取数据,无论设备中是否有数据。而如要要停止数据的传输,只需要选中不带有同步......
UVC批量传输中的dwMaxVideoFrameSize和dwMaxPayloadTransferSize关系
上一节看了UVC等时/同步传输的关系,这里我们介绍一相批量传输批量传输在这里相对于同步传输要简单的多。uvc_video_start_transfer中的代码如下: else { /* Bulk endpoint, proceed to URB initialization. */ ......
USB超高速批量传输
批量传输类型是用来支持想要跟相当大的海量数据通信设备,传输能使用任何可用的超速带宽。超速批量传输功能端点提供以下:对基于有限带宽的超速总线访问保证数据的发送,但是不保证带宽和发送时间超速维持下面的批量传输管道特征:对批量传输管道通信流没有强制固定的数据结构批量传输管道是一个流式管道,因此总是有通信流......
USB 批量/块传输方式
USB协议规定了四种传输类型:控制传输、批量传输、同步传输、中断传输。批量传输一般用于批量的和非实时的数据传输,通俗的来说就是用于数据量大但对时间要求又不高的场合的一种传输方式,类似用于USB打印机和USB扫描仪等等。批量传输使用批量传输事务,一次批量传输事务分为三个阶段:令牌包阶段、数据包......
基于UVC规范的USB摄像头数据传输模式的总结
根据UVC(USB VIDEO CLASS)规范,UVC视频数据传输方式支持:同步传输即ISO传输批量传输即BULK传输但是不同的操作系统对UVC规范的支持不一定是全量支持的:Windows操作系统对于windows操作系统,对UVC版本的支持情况如下:UVC 版本Windows ......
使用BUSHOUND手动分析USB批量传输的URB
使用BUSHOUND抓取U盘的批量传输的URB数据,我们对其其进行数据分析:13 IN 55 53 42 53 40 0b ac 57 00 00 00 00 00 URB80 00 09 00 00 00 00 00 d8 f2 75 a0 77 7f 00 00 ......
作者信息
USB中文网
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!