《对 USB 协议层的深层分析》 frank_wang 北航 Apr. 17
th
,2004
A.1 基本分组格式
USB 总线上传输的分组(Packet)格式有四种:令牌(Token)、帧开始(SOF)、数据
(DATA)和握手(HandShake)四种。SOF 分组对于本文中所分析的协议内容没有多少影
响,下面只考虑令牌、数据和握手分组三种情况。
A.1.1 令牌分组
令牌分组(Token Packet)由 PID、ADDR 和 ENDP 构成,其中 PID 指定了分组是 IN、OUT
还是 SETUP 类型。对于 PID 为 OUT 和 SETUP 类型的传输,地址和端点域唯一地确定了接
下来将收到数据(DAT
A)分组的端口。对于 PID 为 IN 类型的传输,这些域唯一地确定了
哪个端口应该传送数据分组。只有主机能发出令牌分组。结合 US
B 协议中的上述论述,可
以简要地总结出以下内容:
1、发往地址 0 和端点 0 的 SETUP 类型的分组,是主机发出的配置包,它属于控制传
输,其接下来的传输内容,我们有理由根据控制传输的特点来期许,这一点后面介绍。如图
图 A-1,是一个典型的配置分组(SETUP Packet
)。
说明:对于英文术语的翻译,可能不同人的习惯不一样,我根据大家都熟悉的叫法,
并使其前后意思符合逻辑。且第一次出现时在括号中增加英文原文。错漏之处,望不吝赐教!
A、完整的数组序列
a
B、简化的数据序列
图 A-1 配置分组
注意:图 A-1 中,A 为完整的 USB 总线上的数据序列,但为了简洁,本文后面都用 B
的形式,即隐藏了 sync、CRC 和 Idle 域的内容。这些数据来自于 USB 协议分析协,虽然
我们在调试过程中可能没有协议分析协,但本文是用它来帮助我们理解协议,本文介绍的内
容并非仅用来分析 US
B 协议分析仪得到的数据。
2、发往地址 0 和端点 0 的 IN 和 OUT 类型的分组,是主机发出的读或写数据的控制类
型的传输。其接下来的传输内容,我们有理由根据控制传输的特点来期许,这一点后面介绍。
如图 A-
2 和图 A-3 所示,分别是一个 IN 分组和一个 OUT 分组。
图 A-2 配置端点读入
图 A-3 配置端点输出
注意:当主机完成 SetAddress 命令后,主机将为设备指定确定地址。上述分组中的地
保留所有权利,仅用于学习,请勿用于商业用途! 10 of
2