USB2.0令牌、事务及传输抓包分析
+ -

USB2.0 PING事务

2021-12-01 1305 0

PING事务只适用于USB2.0高速模式,全速和低速设备不支持PING事务
PING事务由PING令牌和握手包组成。

PING事务适用于主机探测USB设备是否可以接收数据。在USB数据传输过程中,USB主机会向USB设备发送数据,如果USB设备无法接收数据,会向主机返回NAK握手包,告诉USB主机自己当前无法接收数据。这时对于低速或者全速设备,USB主机会重传该事务,直到USB设备可以接收数据。但是在USB高速模式下,USB端点的数据长度远远大于低速或者全速模式,这时如果进行数据不停地重传如果一直不能被接收,会造成USB带宽的严重浪费。因此在高速模式下,可以使用一个比较轻量的PING事务来代替事务的重传。

  • 如果设备可以接收数据返回ACK
  • 如果不可以接收数据返回NAK
  • 如果指定要重传的数据端点已经停止(HALT),则返回STALL握手包。

这样可以实现USB数据传输的效率。
当然和其它事务一样,如果主机接收PING令牌失败,USB设备不做任何响应,则USB主机会和其它事务一样,会等待超时然后重传该事务。

PING事务错误机制

PING事务错误机制

PING事务

PING事务

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB2.0设备枚举-主机设置设备地址事务
USB主机在首次获取设备描述符后,知道了设备的默认端点大小。后续一个重要的操作是对设备分配地址。对USB设备分配地址是通过标准请求SetAddress来完成后。其具体的过程如下图所示:SetAddress包括2个事务。第一个事务是对主机设置地址,第二个事务是主机对设备返加一个0字节的数据包,用于确......
USB2.0设备枚举-获取设备描述符事务
USB设备与主机进行数据传输或进行设备配置时,有一些常见的术语如事务,令牌,包等。USB设备在枚举过程中有2次获取设备描述符的过程,这里分别标识为首次获取设备描述符和分配地址后的获取描述符。两次获取描述符的过程基本类似,惟一的区别是首次首次获取描述符由于设备尚未分配地址,故使用地址0与主机进行通......
USB2.0 PING令牌包
PING事务PING事务只有令牌包和握手包。PING事务是USB2.0高速模式特有的,全速模式和低速模式没有。PING事务作用:主机探测设备是否有空间接收数据。PING令牌PIDPING令牌的PID低4位为0100,高4位的补码为1011,故PING令牌的PID为0xB4.PING流程主机发送......
USB数据长度为0的DATA/IN事务
前言使用BUSHOUND是抓不到这种包的。而且一些令牌包如SOF等这些是统计不到的。BUSHOUND是一个基本windows过滤驱动的,所以抓到的是数据已经传输的并且已经在主机方面的,所以USB总线上的一些状态是统计不到的。其实关于控制传输的0字节长度,可详见:USB2.0 控制传输数据包PID序......
USB 高速设备微帧计算及事务构成
从USB2.0规范协议中可以知道,高速设备在1ms内会有8个微帧,所以每个微帧约125us,而一个微帧内可以有多个事务。一个微帧是由起始帧SOF开始的,到下一个起始帧SOF结束或该微帧内的结速帧EOF结束。对于一个微帧内的SOF,SYNC和EOF,此为数据链路层的,一般我们关注的是里面的包内容,协议......
USB2.0 设备配置SET_CONFIGURATION传输及事务分析
USB2.0 设备配置SET_CONFIGURATION传输包含两个事务事务38由SETUP令牌,DATA0数据和ACK事务组成。可以看到该SETUP事务由主机发送给设备,设备返回ACK表示接收成功。对于事务39,有一个IN事务,分别为IN令牌,DATA1和ACK,用于对上一个事务的数据确认。......
USB2.0 SET_FEATURE传输及事务
SET_FEATURE传输及事务包含两个事务:......
USB2.0 SET_FEATURE传输及事务(二)
SET_FEATURE传输也包含两个事务:......
USB2.0 CLEAR_FEATURE传输及事务
USB2.0 CLEAR_FEATURE传输及事务,更多详见CLEAR_FEATURE标准请求......
USB2.0协议 传输包、事务和传输
USB总线上传递的数据流是USB主机和USB设备通讯的基础。USB数据流包括3个阶段:令牌阶段 :定义了本次传输的类型,表示一次传输的开始。令牌阶段由同步字段,令牌包和EOP组成。数据阶段 :包括了本次传输的数据。数据的大小根据端点大小和传输类型决定,一般最大的数据量为1024字节。数据阶段由同......
USB2.0 事务
一个USB事务一般包含三个包:令牌包,指名了该事务的传输的类型,包括目标设备的地址和端点。数据包,有些事务可以没有数据,数据的长度不得超过该端点的最大包大小。握手包,对有数据或无数据传输的结果进行反馈,如SET_ADDRESS请求就无数据包。从以上的解释可以看到,一个USB事务是一次数据的可靠......
USB2.0 Setup事务
Setup事务是由SETUP令牌,数据包和握手包组成的。一个成功的Setup事务保证了Setup令牌和数据包传输的可靠传输。Setup事务是由主机到设备的,并且如果Setup事务含有数据包,必须使用DATA0包。有数据包的SETUP事务可见下图。此SETUP事务使用SETUP令牌包(0xB4)......
USB2.0 OUT事务
OUT事务和其它事务一样,也包含三个包,分别为OUT令牌包,数据包(输出)和握手包(成功时为ACK)。OUT事务用于由USB主机发送数据,所以在数据包之前发送为的OUT令牌包,如果USB设备确认数据正确无误的接收时,给主机返回ACK握手包。如果USB设备由于其自身资源不足(如内存)等自身原因无法......
USB2.0 IN事务
IN事务的数据方向和OUT事务的数据方向相反,IN是用于向主机输入数据,OUT事务用于主机向设备发送数据。IN事务和其它事务一样,也包含三个包,分别为IN令牌包,数据包和握手包。IN事务的处理机制当IN令牌或数据包发生错误或者超时,USB设备丢弃该包,并且不向主机返回任何握手包。当主机收到数据......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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