USB基础概述
前面大概介绍了一下XHCI的基本原理及以代码逻辑形式理解XHCI传输的过程。下面介绍一些USB协议的一些基础。
在USB协议中,一个完整的USB数据传输称作USB事务,一个USB事务是由不同的信息包组成。xHCI中定义的各种传输TRB最终在USB总线上形成USB事务的不同信息包
一个完整的USB事务包含三部分:令牌信息包,数据信息包,握手信息包。
令牌:定义了本次传输的类型。数据:定义传输的数据,数据的大小取决于USB设备端点和传输类型。握手:接收方用来报告本次事务数据传输是否成功。
以上是USB事务传输的三个阶段,每个阶段都是由一系列字段组成的信息包。这些信息包组成如下:
USB信息包组成
一句话总结:各种类型字段组成不同信息包,不同信息包形成一个完成事务处理。USB总线以信息包为基本传输单元进行USB事务处理。3种USB信息包:令牌,数据,握手。
USB令牌信息包:IN,OUT,SETUP,PING。这些令牌包组成字段格式大致相同,以IN令牌包为例:
PID字段
ADDR字段
ENDP字段
CRC
8
7
4
3
USB数据信息包:
PID字段
数据字段
CRC
8
0-1024
16
握手信息包:ACK握手包,NAK包,STALL握手包,ERR握手包等
PID字段
8