第 4 章 USB协议细节

目录

4.1. USB Class
4.1.1. 为何要搞这么多USB的Class
4.2. USB的框架
4.3. USB Transfer and Transaction
4.4. USB枚举(Emulation)
4.4.1. 什么是USB枚举
4.4.2. USB枚举的过程
4.4.3. 举例详解USB的枚举过程
4.4.3.1. USB枚举示例数据
4.4.3.2. 详细分析USB枚举数据的每个字段的具体含义
4.5. USB OHCI学习笔记

摘要

4.1. USB Class

关于USB的Class,对于学习USB协议的人,估计早就听到过此名词了。

而对于USB的Class的分类,此处先列出那个最基本的分类表:

表 4.1. USB Class表

Base Class Descriptor Usage Description
00h Device Use class information in the Interface Descriptors
01h Interface Audio
02h Both Communications and CDC Control
03h Interface HID (Human Interface Device)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage
09h Device Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
DCh Both Diagnostic Device
E0h Interface Wireless Controller
EFh Both Miscellaneous
FEh Interface Application Specific
FFh Both Vendor Specific

4.1.1. 为何要搞这么多USB的Class

其实,看到表 4.1 “USB Class表”中的一堆的Class分类,一般人,都会晕的。

所以,就要简单解释一下,为何会有这么多USB的Class分类。

首先我们要知道,USB协议设计的目的,就是为了第 1.2 节 “为何要有USB”中所提到的,用单一的USB接口,取代之前种类繁多的各种其他接口。

而为了取代其他各种接口,那意味着就要实现,或者是支持,之前别的接口,所对应的各种功能。

因此,USB协议设计的时候,就是要把鼠标,键盘,大容量存储,图像等,这些之前是通过其他接口所实现的,各种的功能,都囊括进来。并且在协议中有对应的规范定义,支持这些功能。

因此,才有了如此多的各种USB的Clas,即分类,根据功能而分出的各种类别。不同的Class分类,用于实现对应的功能,适用于相应的设备。

比如我们常见的鼠标和键盘,都属于Class 3的HID,U盘属于Class 8的Mass Storage等。

而关于这些分类,每种分类都对应着哪些具体的应用和功能,感兴趣的可以去参考USB classes中的Overview of the various USB classes,该页面,相对形象地列出了各种Class所对应的应用。

再回到上述的表 4.1 “USB Class表”,其中的“Descriptor Usage”中的Interface,Device等,对应的是来自表 4.2 “USB Descriptor Type”

表 4.2. USB Descriptor Type

Descriptor Type Value
DEVICE 1
CONFIGURATION 2
STRING 3
INTERFACE 4
ENDPOINT 5
DEVICE_QUALIFIER 6
OTHER_SPEED_CONFIGURATION 7
INTERFACE_POWER 8

而关于什么是Device,什么是Interface等内容,暂时先简述他们之间的关系:

Device ⇒ Configuration ⇒ Interface ⇒ Endpoint

更新详细内容,待以后有空再深入解释。