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

USB2.0 包位域成员字段-PID、SOF、包地址、包端点、帧号、CRC5、CRC16

2021-06-30 505 38
欢迎加入官方QQ群:952873936或联系站长进行技术交流。

包标识PID

USB协议定义的包格式PID由8位组成,低4位是类型字段,高4位为低四位的补码。

特殊用途包包括了一些用于特定场合的信牌包和握手包。

PID 含义 说明
0001 令牌OUT 主机发送数据到USB设备
1001 令牌IN 主机接收从USB设备发出的数据
0101 令牌SOF 此时作为一个帧或者小帧的开始信息
1101 令牌SETUP 主机向USB设备发送配置信息
0010 握手ACK 数据正确接收
1010 握手NAK 数据未正确接收
1110 握手STALL 使用的端点被挂起
0110 握手NYET 接收方没有响应
0011 数据DATA0 数据包偶数包
1011 数据DATA1 数据为奇数据包
0111 数据DATA2 此为作为一个高速同步事务的专用数据包
1111 数据MDATA 此时作为一个SPLIT事务的专用数据包。
1100 PRE令牌包 低速数据的先导包
1100 特殊用途ERR SPLIT事务中表示出现错误
1000 特殊用途SPLIT 高速主使用事该SPLIT事务解决从高速模式到低速和全速模式的转换
0100 特殊用途PING 仅用于高速模式下主机使用该事务判断设备是否可以接收数据

包目标地址Addr

  • 包目标地址Addr占7位,所以一条USB总线上最多可以有127个USB设备,其可使用的地址范围为1~127,其中地址0用于设备在枚举过程中尚未分配地址前的过程通讯。
  • 设备的址由主机分配,使用USB标准请求 SET_ADDRESS实现。在设备分配地址前使用地址0,在分配地址后启用新的地址与主机进行数据通讯。
  • USB设备复位或者掉电或者从主机被拨开后,再次枚举需要重新分配地址。
  • 由于主机发出的令牌包是广播在USB总线上的,所以每一个挂接在该总线上的设备都可以收到该令牌包,所以USB设备需要对收到的令牌包进行过滤,过滤的条件就是使用包目标地址Addr和设备自身的地址Addr进行比较,如果匹配,则处理,否则丢弃。

包目标端点ENDP

  • USB主机与设备通过管道PIPE进行数据通讯,这个管道表现在设备端为端点。USB设备的端点一般为8位(BIT7指示了数据方向),但在包端点地址中为4位,4位的端点地址中不包含数据方向(数据方向根据PID来确定)。
  • 包目标端点地址占4位,所以一个USB设备最大可以支持16个双向(输入输出)端点,即32个单方向端点。
  • 端点地0用于控制传输,被称为控制端点。一个USB设备必须支持一个默认的控制端点0。

数据

使用使用数据包DATA0,DATA1,DATA2和MDATA进行数据传输。
不同传输类型,不同设备型的数据域长度不一样。详情可见:同步传输控制传输批量传输控制传输对应的章节。

帧号

一个11位的包帧号,所以帧号的数值范围为0~2047,当到达最大值2047后,从0开始重新计数。\

CRC5循环冗余校验

  • 令牌包使用5位的CRC校验,用于ADDR字段和ENDP之间的数据进行循环冗余校验.
  • 包含有CRC5冗余校验的令牌有IN ,SETUP,OUTSOFPING,SPLIT
    CRC5冗余校验

CRC16循环冗余校验

CRC16冗余校验使用于数据包.如DATA0,DATA1,DATA2和MDATA,用于数据包内数据的冗余校验。
CRC16冗余校验

CRC(循环冗余校验)在线计算:http://www.ip33.com/crc.html

0 篇笔记 写笔记

USB2.0 SOF令牌包
SOF令牌包是最广泛的令牌包,由主机发送。在实机的抓包工具过程,由于和NAK包大量存在,都会在软件配置中不显示。但这并不代表这个SOF令牌包不重要。SOF令牌不需要像其它令牌一样,具有握手包。因此发送给设备的SOF包并不能保证一定会收到。SOF数据流管理由USB主机发送一个SOF令牌包。SOF数据......
USB2.0 SETUP令牌包
SETUP令牌包用于主机向USB设备发送配置信息SETUP令牌包结构SETUP令牌包格式由8位的包标识字段PID,7位的地址字段ADDR、4位的端点字段和5位的循环字段CRC共24位3字节组成。包标识字段PID:定义了数据传输方向为USB主机到USB设备。ADDR字段:指明了USB设备地址。E......
USB2.0 包位域成员字段-PIDSOF、包地址、包端点、帧号、CRC5、CRC16
包标识PIDUSB协议定义的包格式PID由8位组成,低4位是类型字段,高4位为低四位的补码。特殊用途包包括了一些用于特定场合的信牌包和握手包。PID含义说明0001令牌OUT主机发送数据到USB设备1001令牌IN主机接收从USB设备发出的数据0101......
BUSHOUND抓包stall pid的USTS c0000004错误
对USB设备进行数据分析,使用最多的也就是BUSHOUND了,不过经常遇到一个问题就是 USTS c0000004 stall pid 错误。USTS c0000004 stall pid在本站中搜......
USB 同步传输端点的高速高带宽数据PID序列
对于同步传输:如果输入端点提供的负载数据小于端点描述符指定的最大负载数据,则主机端将不再该端点提供进一步的输入事务。这是因为所对USB设备来说,所有的数据传输都是由主机发起的。对于数据输入IN事务,虽然数据的传输方向为设备端到主机,但是该事务却是由主机发起。由于设备的输入端点提供的负载数据小于该......
作者信息
USB中文网
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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