USB系统架构

来源:互联网 发布:xlsx软件 编辑:程序博客网 时间:2024/06/05 09:57

USB系统基础

USB驱动程序被认为是最难得驱动程序之一
难点:要学好USB设备驱动程序设计,首先必须要掌握好USB协议。而USB协议由于涉及到的知识点比较多,有难于掌握。

学习方法:
阶段一:USB系统架构与协议分析
阶段二:Linux USB系统与功能测试
阶段三:Linux USB驱动程序设计

USB简介

什么是USB?
USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的;连接和通信。USB是1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的,自1996年推出后,已成功替代串口和并口,成为当今个人电脑和大量只能设备必配接口之一。

发展史:
USB1.0是在1996年出现的,速度只有1.5Mb/s;1998年升级为USB1.1,速度也大大提升到12Mb/s,在大部分旧设备上还能看到这种标准接口。USB1.1是较为普遍的USB 规范,其传输速率为12Mbps。
USB2.0规范是由USB1.1规范演变而来的。它的传输速率达到了480Mbps,折算为MB为60MB/s,足以满足大多数外设的速率要求。USB2.0中的“增强主机控制器接口”(EHCI)定义了一个与USB1.1相兼容的架构。它可以用USB2.0的驱动程序驱动USB1.1设备。也就是说,所有支持USB1.1的设备都可以直接在USB2.0J接口上使用而不必担心兼容性问题,而且像USB线、插头等等附件也都可以直接使用。











USB系统架构

系统拓补结构



对于每个USB系统来说,都有一个称为Host控制器的设备,该Host控制器和一个根Hub作为一个整体。这个根Hub下可以接多级的Hub,每个子Hub又可以接子Hub。每个USB设备作为一个节点接在不同级别的Hub上。每条USB总线上最多可以接127个设备。

USB主控制器:
USB主控制器负责处理主机与设备之间的电气和协议层的互联。常见的USB主控制器规格有:
(1)OHCI:主要是非PC系统上的USB芯片
(2)UHCI:大多是Intel和Via主板上的USB控制器芯片。他们都是由USB1.1规格的。
(3)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设备的逻辑组织中,包含设备、配置、接口和端点4个层次。设备通常有一个或者多个配置,配置通常有一个或多个接口,接口有零或者多个端点。

每个USB设备都可以包含一个或者多个配置,不同的配置使设备表现出不同功能的场合(在探测/连接期间需从中选定一个),配置由多个接口组成。在USB协议中,接口由多个端点组成,代表一个基本功能,是USB 设备驱动程序控制的对象,一个功能复杂的USB设备可以具有多个接口,而接口是端点的汇集(collection)

USB设备中的唯一可寻址部分是设备端点。它是位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据。主机和设备的通信最终作用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。
每个USB设备有一个唯一的地址,这个地址是在设备连上主机时,由主机分配的,而设备中的每个端点在设备内部有唯一的端点号,这个端点号是在设计设备时给定的。每个端点都是一个简单的连接点,或者支持数据流进设备,或者支持其流出设备,两者不可兼得。
基于PnP机制,设备被枚举时,它必须向主机报告各个端点的特性,包括端点号,通信方向,端点支持最大包的大小,带宽要求等(其中端点支持的最大包大小叫做数据有效负载)。每个设备必须有端点0,它用于设备枚举和对设备进行一些基本的控制功能。除了端点0,其余的端点在设备配置之前不能与主机通信,只有向主机报告这些端点的特性并被确认后才能被激活。


USB总线:类似于告诉公路;
收发的数据类似于汽车;
USB端点:类似于告诉公路收费口的入口或者出口。





USB描述符


当我们把USB设备(如USB鼠标)插到我们的主机时。主机能够自动识别出我们的USB类型。为什么主机能够实现如此功能?
思考PCI配置寄存器

在每一个USB设备内部,同样也包含了类似于PCI配置寄存器这样固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型,生产厂商等信息。这组固定格式的数据,我们就称之为USB描述符。标准的USB设备有5种USB描述符:设备描述符,配置描述符,接口描述符,端点描述符,字符串描述符。
一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符。









USB数据传输

针对设备对系统资源需求的不同,在USB规范中规定了四种不同的数据传输方式:
(1)等时传输
(2)中断传输
(3)控制传输
(4)批量传输
四种传输就产生了四种端点。

(1)控制传输:控制传输主要用来传输设备控制指令、设备状态查询、及确认命令。当USB设备收到这些数据和命令后,将依据先进先出的原则按队列方式处理到达的数据。

(2)中断传输:该方式传送的数据量很小,但这些数据需要及时处理,已达到实时效果,此方式主要用于键盘、鼠标以及游戏手柄等外部设备上。当USB宿主要求设备传输数据时,中断端点会以一个固定的速率传输数据。
这里的中断和前面的中断不一样,是以固定时间间隔。

(3)等时传输:该方式用来连接对数据的正确性要求不高而对时间极为敏感的外部设备,如麦克风、音响以及电话等。登时传输方式以固定传输效率,连续不断在主机与USB之间传输数据,在传输数据发生错误时,USB并不处理这些错误,而是继续传送这些新的数据。

(4)批量传输:该方式用来传输要求正确无误的数据。通常打印机,扫描仪和数码相机以这种方式与主机进行连接。 

每一个USB设备都有控制传输。 当我们把USB 鼠标插入到Windows中去的时候,他会完成一些列初始化的工作,枚举,之后系统就知道这是一个什么类型的USB设备,整个这个阶段都是控制传输。











USB设备枚举

USB设备在正常工作以前,第一件要做的事情就是枚举。枚举是让HOST认得这个USB设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。


设备枚举
(1)获取设备描述符
(2)复位
(3)设置地址
(4)再次获取设备描述符
(5)获取配置描述符
(6)获取接口、端点描述符
(7)获取字符串描述符
(8)选择设备配置


0 0
原创粉丝点击