内容发布更新时间 : 2024/11/20 2:35:46星期一 下面是文章的全部内容请认真阅读。
USB工作过程
一、USB系统的结构
三个逻辑层:功能层、USB设备层和USB总线接口层。并且每一层是由主机和USB设备不同的功能模块组成。
1、功能层
功能层是由客户软件和设备方的功能单元组成,其能够实现USB设备传输的特定功能。通过功能层可直观地理解USB传输的数据内容。其中,客户软件通过USB系统软件来与USB设备进行通信。功能单元对于客户软件,可视为接口的集合。
可扩展传输类型 2、USB设备层
USB设备层是由USB系统软件和USB设备的USB逻辑设备组成,其实现主机和USB设备之间传输的具体配置。USB逻辑设备对于USB系统软件,可视为端点的集合。
可扩展配置通信 3、USB总线接口层
USB总线接口层是由主机的USB主控制器和设备的USB总线接口组成。其实现主机和USB设备实际的数据传输。
可扩展USB传输的编码等
互连 USB设备 主机
客户软件 功能单元 功能层
USB系统软件 USB逻辑设备 USB设备层 USB总线接口 USB总线接口 USB总线接口层
实际通信流 逻辑通信流
USB系统的分层
1.1 USB主机
USB主机由客户软件、USB系统软件和USB总线接口组成。 1.1.1客户软件
客户软件负责和USB设备的功能单元进行通信,以实现特定的功能。客户软件不能直接与USB设备相连接,必须通过USB系统软件和USB总线接口才能实现连接。客户软件包括USB设备驱动程序和界面应用程序两部分。
1.USB设备驱动程序
USB设备驱动程序负责和系统软件接口。通常,它向USB总线驱动程序发出I/O请求包来启动一次USB数据传输,既可以向USB设备发送数据,也可以从USB设备中接收数据。
同时,根据数据传输的方向,它还会提供一个内存缓冲区来暂时存储这些数据。
2.界面应用程序
界面应用程序负责和USB设备驱动程序进行接口,以操纵USB设备,并向用户提供可视化操作。它是最上层的软件,只能看到数据的传输。
1.1.2 USB系统软件
USB系统软件负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据传输。一般包括USB总线驱动程序、USB主控制器驱动程序和非USB主机软件三部分,这部分会由系统提供。
1.USB总线驱动程序(USBD)
USB总线驱动程序具有两项功能:USB设备的配置和将发送的数据组织为事务处理。 其中,USB设备的配置是在USB设备使用前,必须对其进行一些初始化操作,如为其分配所需的主机资源,设置其USB参数等;事务处理是主机和USB设备间数据传输的基本单位,是由一些具有特定格式的信息包组成。
USB总线驱动程序对USB设备的配置的过程中,它会检测USB设备的特性,并建立与其通信的管道。并且,其能够和USB设备进行数据传输,即当USBD接收到USB设备驱动程序发来的IRPs时,会把这些数据重新进行组织,成为事务处理。
可扩展事务处理的介绍
2.USB主控制器驱动程序(HCD)
HCD负责把USB总线驱动程序建立的事务处理安排在USB总线上,方法是建立一系列的事务处理列表。事务处理列表以帧或小帧为单位,其中可以包含一个或多个事务处理,它们可以和一个和多个USB设备进行通信。
3.非USB主机软件
非USB主机软件用来加载客户软件,并进行设备配置等操作。 1.1.3 USB总线接口
USB总线接口包括主控制器和根集线器两部分。其中,主控制器是负责完成主机和USB设备间的数据的实际传输。根集线器是为USB系统提供连接起点。
1.主控制器
主控制器负责把USB总线的带宽分成多个帧(全速传输)或小帧(高速传输)(USB3.0的情况),并把从HCD传输的事务处理列表安排在帧上,发送到USB总线上。帧或小帧都是以SOF令牌包开始,以EOF状态结束。对于全速传输,USB主控制器是以1ms的时间间隔发出SOF,而高速传输是125us的时间间隔。SOF是在每帧中传输的第一个信息包,在其后的时间间隔里,USB主控制器可以传输其他的事务处理。
在EOF期间,主控制器将停止一切传输操作。当EOF开始时,所有原定在该帧中传输的事务事务处理也会被暂停。如果正在执行数据传输出现了EOF,它将终止该事务处理。
2.根集线器
根集线器负责为主机提供附加的USB端口。(查不同的USB不同的根集线器)与其他的集线器不同的是,根集线器被集成在USB主控制器的内部,HCD对其进行访问时,不需要产生事务处理。其主要功能如下:
(1) 识别其下行端口上USB设备的连接和断开。 (2) 单独地使用和禁止其下行端口。 (3) 完成上下行端口间的数据传输。 (4) 管理其下行端口的USB电源。 (5) 检测USB总线错误并恢复。 1.2USB设备
三个功能模块组成:USB总线接口、USB逻辑设备和功能单元。 USB总线接口是USB设备中的串行接口引擎(SIE);USB逻辑设备被USB系统软件看作是一个端点的集合;功能单元被客户软件看作是一个接口的集合。
1.2.1设备构架
设备构架认为USB设备是由一些配置、接口和端点组成的。其中,配置和接口是USB设备功能的抽象,实际的数据传输由端点来完成。其对应关系如下图所示:
设 备 配配 置 置 接接接 接口 口 口 口 端 端端端端端端端点 点 点 点 点 点 点 点 1.设备
设备代表USB设备,它由一个或多个配置组成。设备描述符用于说明设备的总体信息,并指出其所包含配置的个数。
2.配置
在使用USB设备前,必须为其选择一个合适的配置。如USB设备的低功耗模式和高功耗模式分别对应一个配置。配置描述符用于说明USB设备中各个配置的特性。
3.接口
一个配置可以包含一个或多个接口。接口是一个端点的集合。接口描述符用于说明USB设备中各个接口的特性。
4.端点
端点是USB设备中的实际物理单元,USB数据传输就是在主机和USB设备各个端点之间进行的。
USB设备中的每个端点都有惟一的端点号,各个端点所支持的数据传输方向也是确定的:IN或OUT。由此,可以通过端点号和传输方向就可指定一个端点,利用设备地址来和设备通信。
1.2.2管道
管道,是主机软件(数据缓冲区)和USB设备的各个端点之间的数据传输的连接,其是两者之间通信流的抽象。然而,实际的数据传输是由USB总线接口层来完成的。
管道和USB设备中的端点一一对应,并且各个管道的数据传输是相互独立的。
二、USB通信的具体过程
USB主机和USB设备可以相互传输数据,其具体过程如下(以主机向USB设备传输为例):