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