USB spec scope
~~~~~~~~~~~~~~~
连接
~~~~~~
USB host 采用星型top连接USB设备
一个USB系统只有一个USB主机,最多支持127个设备
一个USB Host 最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间使用,而不被分配给任何设备。
数据传输
~~~~~~~~~~
USB采用轮询的广播机制传输数据。所有数据传输都由主机发起,任何时刻整个USB系统仅允许一个数据包。
采用令牌包:
设备地址和端点
|
数据包 :数据
|
握手包 :数据是否传输成功
********************
数据包:USB 总线上数据传输的最小单位,包括 SYNC、数据及 EOP 三个部分。其中数据的格式针对不同的包有不同的格式。但都以 8 位的 PID 开始。PID 指定了数据包的类型(共 16 种)。令牌包即指 PID 为IN/OUT/SETUP 的包。
端点(Endpoint):是 USB 设备中的可以进行数据收发的最小单元,支持单向或者双向的数据传输。设备支持端点的数量是有限制的,除默认端点外低速设备最多支持 2 组端点(2 个输入, 2个输出),高速和全速设备最多支持 15 组端点。
*******************
采用管道传输数据
USB设备一旦上电就存在一个信息管道,即默认的控制管道,USB Host通过该管道来获取设备的描述、配置、状态,并对设备进行配置。
USB 设备连接到 HOST 时,HOST 必须通过默认的控制管道对其进行枚举枚举枚举枚举,完成获得其设备描述、进行地址分配、获得其配置描述、进行配置等操作方可正常使用。USB 设备的即插即用特性即依赖于此。
********************
枚举:是 USB 体系中一个很重要的活动,由一系列标准请求组成(若设备属于某个子类,还包含该子类定义的特殊请求)。通过枚举 HOST 可以获得设备的基本描述信息,如支持的 USB 版本、PID、VID、设备分类(Class)、供电方式、最大消耗电流、配置数量、各种类型端点的数量及传输能力(最大包长度)。HOST 根据 PID 和 VID 加载设备驱动程序,并对设备进行合适的配置。只有经过枚举的设备才能正常使用。对于总线供电设备,在枚举完成前最多可从总线获取 100mA 的电流。
************
USB 体系定义了四种类型的传输,它们是:
控制传输:主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。
中断传输:用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。
批量传输:用于对延迟要求宽松,大量数据的可靠传输,如 U 盘等。
同步传输:用于对可靠性要求不高的实时数据传输,如摄像头、USB 音响等。
不同的传输类型在物理上并没有太大的区别,只是在传输机制、主机安排传输任务、可占用 USB带宽的限制以及最大包长度有一定的差异。
HOST默认管道上接受的三类请求
1.标准请求:一共有 11 个标准请求,如得到设备描述、设置地址、得到配置描述等。所有 USB设备均应支持这些请求。HOST 通过标准请求来识别和配置设备。
2.类(class)请求:USB 还定义了若干个子类,如 HUB 类、大容量存储器类等。不同的类又定义了若干类请求,该类设备应该支持这些类请求。设备所属类在设备描述符中可以得到。
3.厂商请求:这部分请求并不是 USB 规范定义的,而是设备生产商为了实现一定的功能而自己定义的请求。
USB数据流模型
~~~~~~~~~~~~~~~~~
各应用软件-功能设备对之间的通讯相互独立,应用软件通过 USB 设备驱动程序(USBD)发起 IRQ 请求,请求数据传输。主机控制器驱动程序(HCD)接收 IRQ 请求,并解析成为USB传输和传输事务(Transaction),并对 USB 系统中的所有传输事务进行任务排定(因为可能同时有多个应用软件发起 IRQ 请求)。主机控制器(Host Controller)执行排定的传输任务,在同一条共享的USB 总线上进行数据包的传输。
一个 USB 设备可以包括若干个端点,不同的端点以端点编号端点编号和方向区分。不同端点可以支持不同的传输类型、访问间隔以及最大数据包大小。除端点 0 外,所有的端点只支持一个方向的数据传输。端点 0 是一个特殊的端点,它支持双向的控制传输。管道和端点关联,和关联的端点有相同的属性,如支持的传输类型、最大包长度、传输方向等。
四种传输类型
~~~~~~~~~~~~~
1.控制传输
可靠的双向传输,三阶段:Host向device发起SETUP —> 数据传输 —> 状态阶段,IN/OUT传输验证。
控制传输的数据有特殊格式。控制传输通过控制管道在应用软件和Device的控制端点之间进行。
2.中断传输
单向,轮训。HOST通过固定的时间间隔对中断端点进行查询,若有数据或可以接收数据则返回数据或发送数据,否则返回NAK。
有保证的延时传输
3.批量传输
可靠,单向,延迟没有保证。利用尽可能多得带宽传输数据。相对其他数据类型有最低的优先级。
4.同步传输
实时,不可靠