USB驱动程序之一(USB介绍、USB数据传输、USB设备枚举)
文章目录
USB简介
一、USB定义
- USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于通讯规范电脑与外部设备的连接和通讯。USB是在1994年底由因特尔、康柏、IBM、Microsoft等多家公司提出的,自1996年推出后,已经成功替代串口和并口,成为当今电脑和大量智能设备的必配接口之一。
二、USB发展历史
- USB1.0 USB1.0是在1996年出现的,速度只有1.5Mb/s;1998年升级为USB1.1,速度也大大提升到12Mb/s,在部分旧设备上还能看到这种标准的接口。USB1.1是较为普遍的USB规范,其传输速率为12Mbps。
- USB2.0 USB2,0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,折算为60MB/s,足以满足大多数外设的速率要求。USB2.0中的“”增强主机控制器接口“”(EHCI)定义了一个与USB1.1相兼容的架构。它可以用USB2.0的驱动程序驱动USB1.1设备。也就是说,所有支持USB1.1的设备都可以直接在USB2.0的接口上使用而不必担心兼容性问题,而且像USB线、插头等附件也都可以直接使用。USB3.0 也被认为SuperSpeedUSB。USB3.0的最大传输带宽高达5.0Gbps,也就是大约640MB/s.不过,大家要注意这是理论传输值,如果几台设备共用一个USB通道,主控制芯片会对每台设备可支配的带宽进行分配、控制。
三、USB优点
- 可以热插拔。这就让用户在使用外接设备时,不需要重复“”关机将并口或串口电缆接上再开机“”这样的动作,而是直接在电脑工作时,就可以将USB电缆插上使用。
- 携带方便。USB设备大多以“”小、轻、薄“”见长,对于用户来说,同样20G的硬盘,USB硬盘比IDE硬盘要轻一半的重量。
- 接口统一。
- 可以连接多个设备。
四、USB接口
- A型接口
- B型接口
- mini型接口
五、接口连线
USB接口有四根线,两根电源线,两根信号线。USB接口的输出电压和电流是:+5V 500mA。
- USB电源:标有VCC,Power、5V、5VSB字样
- USB数据线:(正)DATA+、USB+、PD+、USBDT+
- USB数据线:(负)DATA-、USB-、PD-、USBDT-
- 地线:GND、Ground
USB系统架构
USB系统拓扑结构
对于每个USB系统来说,都有一个称为Host控制器的设备,该Host控制器和一个根Hub作为一个整体。这个跟Hub下可以接多级的Hub,每个子Hub又可以接子Hub。每个USB设备作为一个节点接在不同级别的Hub上。每条USB总线上最多可以接127个设备。
USB主控制器
USB主控制器负责处理主机与设备间的电气和协议层的互联。常见的USB主控制器规格有:
- OHCI:主要是非PC系统上的USB芯片。
- UHCI:大多是Intel和Via主板上的USB控制器芯片。它们大多是USB1.1规格的。
- EHCI:是有Intel等几个厂商研发,兼容OHCI和UHCI,遵循USB2,0规范。
USB HUB
每个USB Host控制器都会自带一个USB Hub,被称为根(root)Hub。这个根Hub可以接子(sub)Hub,每个Hub上挂载USB设备。通过外接USB Hub,可以插更多的USB设备。当USB设备插入到USB Hub或从上面拔出时,都会发出电信号通知系统。
USB设备
USB设备就是插在USB总线上工作的设备,广义上讲USB Hub也算是USB设备。有的USB设备功能单一,直接挂载在USB Hub上。而有的USB设备功能复杂,会将多个USB功能结合在一起,成为一个复合设备。
USB设备逻辑结构
在USB设备的组织中,包含设备、配置、接口和端点四个层次。设备通常有一个或多个配置,配置通常有一个或多个接口,接口有零个或多个端点。
(1)配置
每个USB设备都可以包含一个或多个配置,,不同的配置使设备表现出不同的功能组合,配置由多个接口组成。在USB协议中,接口由多个端点组成,代表一个基本功能,是USB设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集。
每一种配置体现的是功能的组合
每一个接口体现是一种功能
举例:
一个USB播放器带有音频,视频功能,还有旋钮和按钮。
- 配置1:音频(接口)+旋钮(接口)
- 配置2:音频(接口)+视频(接口)+按钮(接口)
- 配置1:视频(接口)+旋钮(接口)
音频接口、视频接口、按钮接口、旋钮接口均需要一个驱动程序。
(2)端点
USB设备中唯一可寻址的部分是设备端点。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机和设备间通信流的一个逻辑终端。
每一个USB设备有一个唯一的地址,这个地址是在设备连接主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两种不可兼得。
每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被**。
形象类似:
USB总线:类似于高速公路;
收发的数据类似于汽车。
USB端点:类似于高速公路收费口的入口或出口。
USB描述符
什么是USB描述符?
当我们把USB设备(如:USB鼠标)插到主机时,主机能够自动识别出我们的USB设备类型。
(1)USB描述符定义
在每一个USB设备内部,包含了类似于PCI配置寄存器这样的固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型、生产厂商等信息。这组固定格式的数据,我们称为USB描述符。标准的USB设备有5种USB描述符:
- 设备描述符
- 配置描述符
- 接口描述符
- 端点描述符
- 字符串描述符
5种描述符关系:
一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用几个端点,就有几个端点描述符。
设备描述符
USB设备描述符长度为18个字节,格式如下图:
部分解释与翻译:
配置描述符
USB配置描述符长度为8个字节,格式如下图:
名词翻译如下:
接口描述符
USB接口描述符长度为8字节,格式如下:
名词翻译如下:
端点描述符
如下:
描述符记录设备的信息,可以知道设备厂商,几种配置,几种接口(功能),还有端点的信息
USB数据传输
针对设备对系统资源需求的不同,在USB规范中规定了4种不同的数据传输方式:
- 等时传输
- 中断传输
- 控制传输
- 批量传输
四种传输对应分别对应四种端点。
控制传输
控制传输主要用来传输设备控制指令、设备状态查询及命令确认。当USB设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。
中断传输
该方式传输的数据量小,但这些数据需要及时处理,以达到实时效果,此方式主要用在键盘、鼠标以及游戏手柄等外部设备上。当USB宿主要求设备传输数据时,中断端点会以一个固定的速率传送数据。
等时传输
该方式用来连接对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、音响以及电话等。等时传输方式以固定的传输速率,连续不断地在主机与USB设备之间传输数据,在传输数据发生错误时,USB并不处理这些错误,而是继续传输新的数据。
批量传输
该方式用来传输要求正确无误的数据,通常打印机、扫描仪和数码相机以这种方式与主机连接。
USB设备枚举
USB设备在正常工作以前,第一件要做的事就是枚举。枚举是让HOST认得这个USB设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。
USB设备枚举八步
- 获取设备描述符
- 复位
- 设置地址
- 再次获取设备描述符
- 获取配置描述符
- 获取接口、端点描述符
- 获取字符串描述符
- 获取设备配置
USB设备枚举分析软件
可以使用USBlyzer,通过分析软件可以根据USB设备枚举步骤针对性分析,有利于学习USB驱动程序,我自己电脑上的软件分析如下: