← 返回

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

PID字段指明包类型ADDR字段指明USB设备地址ENDP指明USB设备端点号CRC用于校验

USB数据信息包:

PID字段

数据字段

CRC

8

0-1024

16

PID指明数据信息包类型数据字段包含传输的数据CRC用于校验

握手信息包:ACK握手包,NAK包,STALL握手包,ERR握手包等

PID字段

8