一、USB定义
二、USB发展历史
三、USB优点
四、USB接口
USB接口有四根线,两根电源线,两根信号线。USB接口的输出电压和电流是:+5V 500mA。
对于每个USB系统来说,都有一个称为Host控制器的设备,该Host控制器和一个根Hub作为一个整体。这个跟Hub下可以接多级的Hub,每个子Hub又可以接子Hub。每个USB设备作为一个节点接在不同级别的Hub上。每条USB总线上最多可以接127个设备。
USB主控制器负责处理主机与设备间的电气和协议层的互联。常见的USB主控制器规格有:
每个USB Host控制器都会自带一个USB Hub,被称为根(root)Hub。这个根Hub可以接子(sub)Hub,每个Hub上挂载USB设备。通过外接USB Hub,可以插更多的USB设备。当USB设备插入到USB Hub或从上面拔出时,都会发出电信号通知系统。
USB设备就是插在USB总线上工作的设备,广义上讲USB Hub也算是USB设备。有的USB设备功能单一,直接挂载在USB Hub上。而有的USB设备功能复杂,会将多个USB功能结合在一起,成为一个复合设备。
在USB设备的组织中,包含设备、配置、接口和端点四个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零个或多个端点。
(1)配置
每个USB设备都可以包含一个或多个配置,,不同的配置使设备表现出不同的功能组合,配置由多个接口组成。在USB协议中,接口由多个端点组成,代表一个基本功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。
每一种配置体现的是功能的组合
每一个接口体现是一种功能
举例:
一个USB播放器带有音频,视频功能,还有旋钮和按钮。
音频接口、视频接口、按钮接口、旋钮接口均需要一个驱动程序。
(2)端点
USB设备中唯一可寻址的部分是设备端点。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机和设备间通信流的一个逻辑终端。
每一个USB设备有一个唯一的地址,这个地址是在设备连接主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两种不可兼得。
每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。
形象类似:
USB总线:类似于高速公路;
收发的数据类似于汽车。
USB端点:类似于高速公路收费口的入口或出口。
什么是USB描述符?
当我们把USB设备(如:USB鼠标)插到主机时,主机能够自动识别出我们的USB设备类型。
(1)USB描述符定义
在每一个USB设备内部,包含了类似于PCI配置寄存器这样的固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型、生产厂商等信息。这组固定格式的数据,我们称为USB描述符。标准的USB设备有5种USB描述符:
5种描述符关系:
一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用几个端点,就有几个端点描述符。
USB设备描述符长度为18个字节,格式如下图:
部分解释与翻译:
USB配置描述符长度为8个字节,格式如下图:
名词翻译如下:
如下:
描述符记录设备的信息,可以知道设备厂商,几种配置,几种接口(功能),还有端点的信息
针对设备对系统资源需求的不同,在USB规范中规定了4种不同的数据传输方式:
四种传输对应分别对应四种端点。
控制传输主要用来传输设备控制指令、设备状态查询及命令确认。当USB设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。
该方式传输的数据量小,但这些数据需要及时处理,以达到实时效果,此方式主要用在键盘、鼠标以及游戏手柄等外部设备上。当USB宿主要求设备传输数据时,中断端点会以一个固定的速率传送数据。
该方式用来连接对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、音响以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据,在传输数据发生错误时,USB并不处理这些错误,而是继续传输新的数据。
该方式用来传输要求正确无误的数据,通常打印机、扫描仪和数码相机以这种方式与主机连接。
USB设备在正常工作以前,第一件要做的事就是枚举。枚举是让HOST认得这个USB设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。
USB设备枚举分析软件
可以使用USBlyzer,通过分析软件可以根据USB设备枚举步骤针对性分析,有利于学习USB驱动程序,我自己电脑上的软件分析如下: