USB设备 配置、接口和端点

时间:2024-05-23 18:42:33

在USB设备的逻辑组织中,包含设备、配置、接口和端点4个层次。
每个USB设备都提供了不同级别的配置信息,可以包含一个或多个配置,不同的配置使设备表现出不同的功能组合(在探测/连接期间需从其中选定一个),配置由多个接口组成。
在USB协议中,接口由多个端点组成,代表一个基本的功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口。每个配置中可以有多个接口,而设备接口是端点的汇集(collection)。例如USB扬声器可以包含一个音频接口以及对旋钮和按钮的接口。一个配置中的所有接口可以同时有效,并可被不同的驱动程序连接。每个接口可以有备用接口,以提供不同质量的服务参数。
端点是USB通信的最基本形式,每一个USB设备接口在主机看来就是一个端点的集合。主机只能通过端点与设备进行通信,以使用设备的功能。在USB系统中每一个端点都有惟一的地址,这是由设备地址和端点号给出的。每个端点都有一定的属性,其中包括传输方式、总线访问频率、带宽、端点号和数据包的最大容量等。一个USB端点只能在一个方向承载数据,或者从主机到设备(称为输出端点),或者从设备到主机(称为输入端点),因此端点可看作一个单向的管道。端点0通常为控制端点,用于设备初始化参数等。只要设备连接到USB上并且上电端点0就可以被访问。端点1、2等一般用作数据端点,存放主机与设备间往来的数据。

总体而言,USB设备非常复杂,由许多不同的逻辑单元组成,如图20.2所示,这些单元之间的关系如下:

USB设备 配置、接口和端点

 

 

 

 

 

 

 

 

 

 

USB设备 配置、接口和端点

设备通常有一个或多个配置;
配置通常有一个或多个接口;
接口通常有一个或多个设置;

接口有零或多个端点。

//----------------------------------------------------------------------------------------------------

 

如果按照USB协议栈的层次划分:
一个Host可能有一个或者多个Device
一个Device可能有一个或者多个Interface
一个Interface可能有一个或者多个Endpoint

首先端点跟信号线没任何关系,如果对应到TCP/IP协议栈的话,类似于TCP/UDP里的端口概念。

Host(主机)连的是Device(设备),这一层是走物理连接的,也就是这个信号线。对应到网络协议栈,就是两台主机,或者服务器-客户机这种层次(USB线相当于网线)。

Device(设备)下可能有多个Interfece(接口),从这开始都是逻辑概念了,一个Interface,可以理解为像两个联网的电脑上里不同的通信软件,比如有浏览器,有QQ,每个Interface模拟一个设备功能,比如集成了键盘和鼠标的USB设备,里面就是两个interface,一个是键盘,另一个是鼠标。Interface之间通常是隔离的,互相不干扰。

每个Interface(接口)下面有一个或者多个Endpoint(端点),这也是逻辑概念,比如QQ要通信,可能开好几个端口,同样U盘要跟主机通信,要有控制信号和数据信号,这些都是不同的端点。端点是USB设备通信的基本单位,所有通信几乎都是从端点发起的。