USB系统结构


USB系统结构

1.USB系统拓扑结构

这个是USB系统的拓扑图,4个部分构成:USB主机控制器,根集线器,集线器,设备。其中Root Hub与USB主机控制器是绑定在一起的。

 

 

Node代表USB设备,广义上讲hub也是一种USB设备。一根USB总线最多可挂127个设备。

常见的USB主控制器:

OHCI(open host controller interface):主要是非PC系统上的USB芯片,嵌入式系统常用的控制器。USB1.1

UHCI(open host controller interface):大多是intel和VIA主板上的USB控制器芯片。USB1.1

EHCI(enhanced host controller interface):由intel等几个厂商研发,兼容OHCI\UHCI,遵循USB2.0规范。

 

2.USB实现框架:

 

3.USB设备的构成包括了配置,接口和端点


 

1.         设备通常具有一个或者更多个配置

2.         配置经常具有一个或者更多个接口

3.         接口通常具有一个或者更多个设置

4.         接口没有或者具有一个以上的端点

配置由接口组成,每个设备都有不同级别的配置信息;

接口由多个端点组成,代表一个基本的功能;

端点是USB设备中的唯一可寻址部分,可以理解为USB设备或主机上的一个数据缓冲区。

配置和设置的理解:一个手机可以有多重配置,比如可以作为电话,可以接在PC上当成一个U盘,这两种情况就属于不同的配置。再来看设置,一个手机作为电话已经确定了,但是通话场景(室外模式,会议模式等等)可以改变,每种场景就可以算一个设置。

 

例如:一个USB播放器带有音频,视频功能,还有旋钮和按钮。

配置1:音频(接口) + 旋钮(接口)

配置2:音频(接口) + 视频(接口) + 旋钮(接口)

配置3:视频(接口) + 旋钮(接口)

每一个接口均需要一个驱动程序。

每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,是单向的。

端点0是一个特殊的端点,用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。

例如:

USB总线,类似于高速公路;

收发的数据,类似于汽车;

USB端点,类似于高速公路收费站的入口或出口。

 

4.USB描述符

当USB设备插入到主机系统中,主机系统会自动检测USB设备的相关信息,就是通过USB描述符来实现的。

标准的USB设备有五种USB描述符:

设备描述符

配置描述符

接口描述符

端点描述符

字符串描述符

一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。

 

管道是USB设备的端点和主机端缓存的连接通道,主机和USB设备通过管道来进行通信。

 

5.四种传输类型

端点有4中不同的类型:控制,批量,等时,中断。

对应USB的4种不同的传输类型:

1.         控制传输:适用于小量的,对传输时间和速率没有要求的设备。如USB设备配置信息。

2.         批量传输:适用于类似打印机,扫描仪等传输量大,但对传输时间和速度无要求的设备。

3.         等时传输:适用于大量的,速率恒定,具有周期性的数据,对实时性有要求的,比如音视频。

4.         中断传输:适用于非大量,但具有周期性的数据,比如鼠标键盘。当USB宿主要求设备传输数据时,中断端点会以一个固定的数率传输数据。鼠标,键盘以及游戏手柄等。此种中断和经常说的硬件中断是不同的,此种中断会以固定的时间间隔来查询USB设备。

 

三种事务(transaction)类型

一次传输由一个或多个事务构成。

1.       IN transaction

IN事务为host输入服务,当host需要从设备获得数据的时候,就需要IN事务。

2.       OUT transaction

OUT事务为host输出服务,当host需要输出数据到设备的时候,就需要OUT事务。

3.       SETUP transaction

SETUP事务为host控制服务,当host希望传输一些USB规范的默认操作的时候就需要使用setup事务。

 

四种包(package)类型

一个事务由一个或多个包构成,包可分为令牌包(setup),数据包(data),握手包(ACK)和特殊包。

 

一个包由多个域构成,域可分为同步域(SYNC),标识域(PID),地址域(ADDR),端点域(ENDP),帧号域(FRAM),数据域(DATA),校验域(CRC)。

 

抓包截图:

 

参考网址:http://blog.csdn.net/woshixingaaa/article/details/6362603



你可能感兴趣的:(Linux,driver,USB)