文档详情

USB设备驱动程序的开发与USB协议

xcv****223
实名认证
店铺
DOCX
132.29KB
约59页
文档ID:155369137
USB设备驱动程序的开发与USB协议_第1页
1/59

n更多企业业学院::《中小企企业管理理全能版版》183套套讲座++897700份份资料《总经理理、高层层管理》49套讲讲座+1163888份资料《中层管管理学院院》46套讲讲座+660200份资料 《国学智智慧、易易经》46套讲讲座《人力资资源学院院》56套讲讲座+2271223份资料《各阶段段员工培培训学院院》77套讲讲座+ 3244份资料《员工管管理企业业学院》67套讲讲座+ 87220份资料《工厂生生产管理理学院》52套讲讲座+ 139920份份资料《财务管管理学院院》53套讲讲座+ 179945份份资料 《销售经经理学院院》56套讲讲座+ 143350份份资料《销售人人员培训训学院》72套讲讲座+ 48779份资料第1章绪绪论1.1UUSB简简介USB是是由世界界著名计计算机和和通信公公司等共共同推出出的新一一代接口口标准,全全称为Unniveersaal SSeriial Buss(通用串串行总线线)[1]],是一种种快速、灵灵活的总总线接口口它是为了了解决日日益增加加的PCC外设与与有限的的主板插插槽和端端口之间间的矛盾盾而制定定的一种种串行通通信标准准USSB应用用十分广广泛,并并具有下下述优点点:1、适用用于多种种外设,使使它不需需要为不不同的外外设准备备不同的的接口和和协议;;2、Wiindoows能能自动检检测到UUSB设设备的热热插拔,并并自动配配置;3、PCC机上的的接口线非非常紧缺缺,而UUSB设设备并不不需要用用户设置置端口故故无论从从用户使使用方便便性,或或从对资资源的占占用方面面看,UUSB都都很优秀秀;4、当接接入一个个USBB设备时时,全速速USBB接口可可达122Mbiit/ss。

考虑到到状态、控制和和出错信信息,最最大理论论速度仍仍可达到到9.66Mbiit/ss,这是是其他串串行接口口协议所所不能比比拟的,且且USBB也支持持1.55Mbiit/ss的低速速传输5、USSB接口口芯片价价格低廉廉,这也也大大促促进USSB设备备的开发发与应用用在USBB出现之之前,计计算机典典型接口口有并行行口、串串行口、鼠鼠标口、键键盘口、显显示器口口,及各各种卡式式接口等等,与这这些接口口对应的的有各种种不同的的电缆,在在传输速速度方面面,这些些接口都都存在速速度偏低低的问题题在技技术方面面,这种种设计容容易产生生I/OO冲突,中中断不够够用,以以及对于于每一种种新的外外设都必必须设计计新的接接口卡等等缺点当当今的计计算机外外部设备备,都在在追求高高速度和和高通用用性UUSB接接口适应应了这种种要求,并并以其速速度快、使使用方便便、成本本低等优优点,迅迅速得到到了众多多PC厂商商和半导导体厂商商的大力力支持,外外设向UUSB过过度成为为必然趋趋势1.2UUSB驱驱动程序序的意义义如果PCC主机不不知道如如何与UUSB外外设通信信,那么么这个UUSB外外设一点点用处都都没有,人人机接口口设备(HID)[2]类是Windows完全支持的USB设备类型中的一种,应用程序可以使用操作系统内设置的驱动与HID通信,但与HID通信不像打开一个端口,设定几个参数,然后就可以读写数据那么简单,在应用程序能与HID交换数据之前,它先要找到设备,获取有关它的报告信息。

为做到这些,应用程序必须通过访问通信API函数,使位于上层的应用程序与位于下层的设备驱动程序进行数据交换应用程序可以使用任何能访问API函数的程序语言,VC++是一种能访问API函数的功能强大的语言,因此,我们应用Visual C++6.0环境下编写与USB设备通信的Windows程序1.3VVC+++软件的的介绍应用基于于MFCC ApppWiizarrd的应应用程序序MFFC ((Miccrossoftt Foounddatiion Claass Libbrarry)中的各各种类结结合起来来构成了了一个应应用程序序框架,它它的目的的就是在在此基础础上来建建立Wiindoows下下的应用用程序,这这是一种种相对SSDK来来说更为为简单的的方法因因为总体体上,MMFC框框架定义义了应用用程序的的轮廓,并并提供了了用户接接口的标标准实现现方法,要要做的就就是通过过预定义义的接口口把具体体应用程程序特有有的东西西填入这这个轮廓廓Miicroosofft VVisuual C+++提供了了相应的的工具来来完成这这个工作作:ApppWiizarrd可以以用来生生成初步步的框架架文件(代代码和资资源等);;资源编编辑器用用于帮助助直观地地设计用用户接口口;CllasssWizzardd用来协协助添加加代码到到框架文文件;最最后,编编译,则则通过类类库实现现了应用用程序特特定的逻逻辑。

1.4系系统方案案设计上位机界界面应用用VC+++6..0软件件来编写写,为了了简单适适用,在在创建工工程时采采用对话话框类型型一个个好的应应用程序序首先要要有好的的用户界界面,看看起来赏赏心悦目目,使用用起来简简单、方方便显显示界面面上的各各个元素素需要和和USBB设备上上的元件件摆放位位置相对对应把把要完成成的一系系列功能能的显示示元素分分成不同同的模块块来进行行程序的的编写,每每一个模模块分别别完成一一种功能能,这样样既方便便检查程程序,也也方便在在通信发发生错误误时的对对错误进进行分析析为了实现现PC机对对USBB设备的的识别,上上位机端端需要有有一个UUSB设设备的驱驱动程序序来识别别和支持持USBB设备,否否则PCC机将无无法识别别USBB设备这这里选用用DriiverrStuudioo软件来来编写,它它能生成成一个简简单的驱驱动程序序的框架架,根据据需要,可可以在此此基础上上进行更更深层的的开发1.5预预期结果果通过上位位机软件件和驱动动程序的的编写实实现以下下功能:1、完成成上位机机软件的的编写,并并可以在在设备没没有连接接时显示示连接错错误2、完成成驱动程程序的编编写,实实现上位位机能发发现USSB设备备,并使使上位机机能正确确配置设设备。

同同时在显显示界面面上显示示出找到设设备3、实现现双向传传输在在上位机机软件中中可以控控制USSB设备备中的相相应显示示,同时时可以接接收到UUSB设设备传回回的消息息,并在在显示界界面上显显示达达到一个个PC机与与USBB设备信信息的交交互,完完成通信信4、利用用VC编程程实现对对计算机机底层硬硬件的操操作,培培养在此此方面工工程开发发的能力力第2章UUSB协协议2.1UUSB系系统的使使用分类类及系统统的描述述USB设设计的初初衷是针针对桌面面电脑而而不是应应用于可可移动的的环境下下的软软件体系系通过对对各种主主机控制制器提供供支持以以保证将将来对UUSB的的扩充[[3]USBB是一种种电缆总总线,支支持在主主机和各各式各样样的即插插即用的的外设之之间进行行数据传传输由由主机预预定的标标准的协协议使各各种设备备分享UUSB带带宽,当当其它设设备和主主机在运运行时,总总线允许许添加、设设置、使使用以及及拆除外外设USB系系统的描描述:一个USSB系统统主要被被定义为为三个部部分:UUSB的的互连、USBB的设备备、USBB的主机机USB的的互连是是指USSB设备备与主机机之间进进行连接接和通信信的操作作,主要要包括以以下几方方面:(1)总总线的拓拓扑结构构:USSB设备备与主机机之间的的各种连连接方式式;(2)内内部层次次关系::根据性性能叠置置,USSB的任任务被分分配到系系统的每每一个层层次;(3)数数据流模模式:描描述了数数据在系系统中通通过USSB从产产生方到到使用方方的流动动方式;;(4)UUSB的的调度::USBB提供了了一个共共享的连连接。

对对可以使使用的连连接进行行了调度度以支持持同步数数据传输输,并且且避免的的优先级级判别的的开销USB的的设备如如下所示示:(1)网网络集线线器,向向USBB提供了了更多的的连接点点;(2)功功能器件件:为系系统提供供具体功功能,如如ISDDN的连连接,数数字的游游戏杆或或扬声器器USB设设备提供供的USSB标准准接口的的主要依依据:(1)对对USBB协议的的运用;;(2)对对标准UUSB操操作的反反馈,如如设置和和复位;;(3)标标准性能能的描述述性信息息;USB传传输方式式:USB总总线属一一种轮讯讯方式的的总线,主机控控制端口口初始化化所有的的数据传传输每每一总线线执行动动作最多多传送三三个数据据包按按照传输输前制定定好的原原则,在每次次传送开开始时,主主机控制制器发送送一个描描述传输输运作的的种类、方方向,UUSB设设备地址址和终端端号的UUSB数数据包,这这个数据据包通常常称为标标志包((tokken pacckett)USBB设备从从解码后后的数据据包的适适当位置置取出属属于自己己的数据据数据据传输方方向不是是从主机机到设备备就是从从设备到到主机在在传输开开始时,由由标志包包来标志志数据的的传输方方向,然然后发送送端开始始发送包包含信息息的数据据包或表表明没有有数据传传送。

接接收端也也要相应应发送一一个握手手的数据据包表明明是否传传送成功功发送送端和接接收端之之间的UUSB数数据传输输,在主主机和设设备的端端口之间间,可视视为一个个通道存存在两种种类型的的通道::流和消消息流流的数据据不像消消息的数数据,它它没有UUSB所所定义的的结构,而而且通道道与数据据带宽、传传送服务务类型,端端口特性性(如方方向和缓缓冲区大大小)有有关UUSB中中有一个个特殊的的通道———缺省省控制通通道,它它属于消消息通道道,当设设备一启启动即存存在,从从而为设设备的设设置、查查询状况况和输入入控制信信息提供供一个入入口2.2UUSB物物理接口口的电器器特性2.2..1USSB物理理接口USB传传送信号号和电源源是通过过一种四四线的电电缆,两两根线是是用于发发送信号号存在在两种数数据传输输率:图2.11USBB物理接接口(1)UUSB的的高速信信号的比比特率定定为122Mbpps;(2)低低速信号号传送的的模式定定为1..5Mbbps;;电缆中包包括VBBUS、GNDD二条线线,向设设备提供供电源VBUS使用+5V电源USB对电缆长度的要求很宽,最长可为几米通过选择合适的导线长度以匹配指定的IR drop和其它一些特性,如设备能源预算和电缆适应度。

为了保证足够的输入电压和终端阻抗重要的终端设备应位于电缆的尾部在每个端口都可检测终端是否连接或分离,并区分出高速,或低速设备2.2..2电源源主要包括括两方面面:(1)电电源分配配:即UUSB的的设备如如何通过过USBB分配得得到由主主计算机机提供的的能源每每个USSB单元元通过电电缆只能能提供有有限的能能源主主机对那那种直接接相连的的USBB设备提提供电源源供其使使用并并且每个个USBB设备都都可能有有自己的的电源那那些完全全依靠电电缆提供供能源的的设备称称作“总线供供能”设备相相反,那那些可选选择能源源来源的的设备称称作“自供电电”设备而而且,集集线器也也可由与与之相连连的USSB设备备提供电电源2)电电源管理理:即通通过电源源管理系系统,UUSB的的系统软软件和设设备如何何与主机机协调工工作UUSB主主机与UUSB系系统有相相互独立立的电源源管理系系统UUSB的的系统软软件可以以与主机机的能源源管理系系统结合合共同处处理各种种电子元元件如挂挂起、唤唤醒,并并且有特特色的是是,USSB设备备应用特特有的电电源管理理特性,可可让系统统软件和和控制其其电源管管理2.2..3总线线协议主机控制制端口初初始化所所有的数数据传输输。

每一一总线执执行动作作最多传传送三个个数据包包按照照传输前前制定好好的原则则,在每每次传送送开始时时,主机机控制器器发送一一个描述述传输运运作的种种类、方方向,UUSB设设备地址址和终端端号的UUSB数数据包,这这个数据据包通常常称为标标志包((tokken pacckett)USBB设备从从解码后后的数据据包的适适当位置置取出属属于自己己的数据据数据据传输方方向不是是从主机机到设备备就是从从设备到到主机在在传输开开始时,由由标志包包来标志志数据的的传输方方向,然然后发送送端开始始发送包包含信息息的数据据包或表表明没有有数据传传送接接收端也也要相应应发送一一个握手手的数据据包表明明是否传传送成功功发送送端和接接收端之之间的UUSB数数据传输输,在主主机和设设备的端端口之间间,可视视为一个个通道存存在两种种类型的的通道::流和消消息流流的数据据不像消消息的数数据,它它没有UUSB所所定义的的结构,而而且通道道与数据据带宽、传传送服务务类型,端端口特性性(如方方向和缓缓冲区大大小)有有关多多数通道道在USSB设备备设置完完成后即即存在USB中有一个特殊的通道——缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。

事务预处处理允许许对一些些数据流流的通道道进行控控制,从从而在硬硬件级上上防止了了对缓冲冲区的高高估或低低估,通通过发送送不确认认握手信信号从而而阻塞了了数据的的传输速速度当当不确认认信号发发过后,若若总线有有空闲,数数据传输输将再做做一次这这种流控控制机制制允许灵灵活的任任务安排排,可使使不同性性质的流流通道同同时正常常工作,这这样多种种流通常常可在不不同间隔隔进行工工作,传传送不同同大小的的数据包包1、USSB设备备的安装装所有的UUSB设设备都是是通过端端口接在在USBB上,网网络集线线器知道道这些指指定的UUSB设设备,集集线器有有一个状状态指示示器指明明在其某某个端口口上,UUSB设设备是否否被安装装或拆除除了,主主机将所所有的集集线器排排成队列列以取回回其状态态指示在在USBB设备安安装后,主主机通过过设备控控制通道道激活该该端口并并以预设设的地址址值给UUSB设设备主机对每每个设备备指定唯唯一的UUSB地地址并并检测这这种新装装的USSB设备备是集线线器还是是功能部部件主主机为UUSB设设备建立立了控制制通道,使使用指定定的USSB的地地址和零零号端口口如果安装装的USSB设备备是集线线器,并并且USSB设备备连在其其端口上上,上述述过程对对每个UUSB设设备的安安装都要要做一遍遍。

如果安装装的设备备是功能能部件,那那么主机机中关于于该设备备的软件件将因设设备的连连接而被被引发2、USSB设备备的拆卸卸当USBB设备从从集线器器的端口口拆除后后,集线线器关闭闭该端口口,并且且向主机机报告该该设备已已不存在在USSB的系系统软件件将准确确进行处处理,如如果去除除的USSB设备备上集线线器,UUSB的的系统软软件将对对集线器器反连在在其上的的所有设设备进行行处理3、总线线标号总线标号号就是对对连接在在总线上上的设备备指定唯唯一的地地址的一一种动作作,因为为USBB允许UUSB设设备在任任何时刻刻从USSB上安安装或拆拆卸,所所以总线线标号是是USBB的系统统软件始始终要作作的动作作,而且且总线标标号还包包括对拆拆除设备备的检测测和处理理4、数据据流种类类数据和控控制信号号在主机机和USSB设备备间的交交换存在在两种通通道:单单向和双双向UUSB的的数据传传送是在在主机软软件和一一个USSB设备备的指定定端口之之间这这种主机机软件和和USBB设备的的端口间间的联系系称作通通道总总的来说说,各通通道之间间的数据据流动是是相互独独立的一一个指定定的USSB设备备可有许许多通道道。

例如如,一个个USBB设备存存在一个个端口,可可建立一一个向其其它USSB设备备的端口口,发送送数据的的通道,它它可建立立一个从从其它UUSB设设备的端端口接收收数据的的通道USB的的结构包包含四种种基本的的数据传传输类型型:(1)控控制数据据传送::在设备备连接时时用来对对设备进进行设置置,还可可对指定定设备进进行控制制,如通通道控制制;(2)批批量数据据传送::大批量量产生并并使用的的数据,在在传输约约束下,具具有很广广的动态态范围;;(3)中中断数据据的传送送:用来来描述或或匹配人人的感觉觉或对特特征反应应的回馈馈4)同同步数据据的传送送:由预预先确定定的传送送延迟来来填满预预定的UUSB带带宽对于任何何对定的的设备进进行设置置时一种种通道只只能支持持上述一一种方式式的数据据传输,数数据流模模式的更更多细节节在第四四章中详详述5、控制制数据传传送当USBB设备初初次安装装时,UUSB系系统软件件使用控控制数据据对设备备进行设设置,设设备驱动动程序通通过特定定的方式式使用控控制数据据来传送送,数据据传送是是无损性性的6、批量量数据传传送批量数据据是由大大量的数数据组成成,如使使用打印印机和扫扫描仪时时,批量量数据是是连续的的。

在硬硬件级上上可使用用错误检检测可以以保证可可靠的数数据传输输,并在在硬件级级上引入入了数据据的多次次传送此此外根据据其它一一些总线线动作,被被大量数数据占用用的带宽宽可以相相应的进进行改变变7、中断断数据传传输中断数据据是少量量的,且且其数据据延迟时时间也是是有限范范围的这这种数据据可由设设备在任任何时刻刻发送,并并且以不不慢于设设备指定定的速度度在USSB上传传送中断数据据一般由由事件通通告,特特征及座座标号组组成,只只有一个个或几个个字节匹匹配定点点设备的的座标即即为一例例,虽然然精确指指定的传传输率不不必要,但但USBB必须对对交互数数据提供供一个反反应时间间的最低低界限8、同步步传输同步数据据的建立立、传送送和使用用时是连连续且实实时的,同同步数据据是以稳稳定的速速率发送送和接收收实时的的信息,同同步数据据要使接接收者与与发送者者保持相相同的时时间安排排,除了了传输速速率,同同步数据据对传送送延迟非非常敏感感所以以同步通通道的带带宽的确确定,必必须满足足对相关关功能部部件的取取样特性性不可可避免的的信号延延迟与每每个端口口的可用用缓冲区区数有关关一个典型型的同步步数据的的例子是是语音,如如果数据据流的传传送率不不能保持持,数据据流是否否丢失将将取决于于缓冲区区的大小小和损坏坏的程度度。

即使使数据在在USBB硬件上上以合适适的速率率传送,软软件造成成的传送送延迟将将对那些些如话会议等等实时系系统的应应用造成成损害实时的传传送同步步数据肯肯定会发发生潜在在瞬时的的数据流流丢失现现象,换换句话说说,即使使许多硬硬件机制制,如重重传的引引入也不不能避免免错误的的产生实实际应用用中,UUSB的的数据出出错率小小到几乎乎可以忽忽略不计计从UUSB的的带宽中中,给UUSB同同步数据据流分配配了专有有的一部部分以满满足所想想得到的的传速率率,USSB还为为同步数数据的传传送设计计了最少少延迟时时间9、指定定USBB带宽USB的的带宽分分配给各各个通道道,当一一个通道道建立后后,USSB就分分配给它它一定的的带宽,UUSB设设备需要要提供一一些数据据缓冲区区若UUSB提提供了更更多带宽宽,则需需更多的的缓冲区区USSB的体体系要保保证缓冲冲引导的的硬件的的延迟限限定在几几毫秒内内USB的的带宽容容量可以以容纳多多种不同同的数据据流,因因此保证证USBB上可以以连接大大量设备备,如可可以容纳纳从1BB+D直直到T11速率范范围的电电信设备备同时时USBB支持在在同一时时刻不同同设备具具有不同同比特率率,并具具有一个个动态变变动的范范围。

2.3UUSB设设备USB设设备分为为诸如集集线器、分分配器或或文本设设备等种种类集集线器类类指的是是一种提提供USSB连接接点的设设备,UUSB设设备需要要提供自自检和属属性设置置的信息息,USSB设备备必须在在任何时时刻执行行与所定定义的UUSB设设备的状状态相一一致的动动态2.3..1 设设备特性性当设备被被连接、编编号后,该该设备就就拥有一一个唯一一的USSB地址址设备备就是通通过该UUSB地地址被操操作的,每每一个UUSB设设备通过过一个或或多个通通道与主主机通讯讯所有有USBB设备必必须在零零号端口口上有一一指定的的通道,每每个USSB设备备的USSB控制制通道将将与之相相连通通过此控控制通道道,所有有的USSB设备备都列入入一个共共同的准准入机制制,以获获得控制制操作的的信息在零号端端口上,控控制通道道中的信信息应完完整的描描述USSB设备备、此类类信息主主要有以以下几类类:(1)标标准信息息:这类类信息是是对所有有USBB设备的的共同性性的定义义,包括括一些如如厂商识识别、设设备种类类、电源源管理等等的项目目设备备设置、接接口及终终端的描描述在此此给出2)类类别信息息:此类类信息给给出了不不同USSB的设设备类的的定义,主主要反映映其不同同点。

3)UUSB厂厂商信息息:USSB设备备的厂商商可自由由的提供供各种有有关信息息,其格格式不受受该规范范制约此此外,每每个USSB设备备均提供供USBB的控制制和状态态信息2.3..2 设设备描述述主要分为为两种设设备类::集线器器和功能能部件只只有集线线器可以以提供更更多的UUSB的的连接点点,功能能部件为为主机提提供了具具体的功功能USB设设备可被被划分三三层:(1)底底层是传传送和接接收数据据包的总总线接口口;(2)中中间层处处理总线线接口与与不同端端点之间间的数据据路由端端节点是是数据的的终结提提供处或或使用处处,它可可被看作作数据源源或数据据接收端端(Siink));(3)最最上层的的功能由由串行总总线设备备提供,比比如鼠标标,或IISDNN接口2.3..3 设设备状态态USB设设备有若若干可能能的状态态,其中中一些对对于USSB与主主机(hosst)来说是是外置的的,而另另外一些些对USSB设备备来说是是内置的的1)连连接状态态USB设设备可被被连接到到USBB接口上上或从接接口断开开2)加加电状态态USB设设备的电电源可来来自外部部电源,也也可从UUSB接接口的集集线器而而来。

电电源来自自外部电电源的UUSB设设备被称称作自给给电源式式的(sellf-ppoweeredd)尽管管自给电电源式的的USBB设备可可能在连连接上UUSB接接口以前前可能已已经带电电,但它它们直到到连线上上USBB接口后后才能被被看作是是加电状状态(Powwereed sstatte)而这这时候VVBUSS已经对对设备产产生作用用了一个设备备可能有有既支持持自给电电源的,同同时也支支持总线线电源式式的配置置有一一些支持持其中的的一种,而而另一些些设备配配置可能能只有在在自给电电源下才才能被使使用设设备对电电源支持持的能力力是通过过配置描描述表(connfigguraatioon ddesccripptorr)来反映映的当当前的电电源供给给形式被被作为设设备状态态的一部部分被反反映出来来设备备可在任任何时候候改变它它们的供供电来源源,比如如说:从从自给式式向总线线式改变变,如果果一个配配置同时时支持两两种模式式,那此此状态的的最大电电源需求求就是指指设备在在两种模模式下从从VBUUS上获获取电能能的最大大值设设备必须须以此最最大电源源作为参参照,而而究竟处处于何状状态是不不考虑的的如果果有一配配置仅支支持一种种电源模模式,那那么电源源模式的的改变会会使得设设备失去去当前配配置与地地址,返返回加电电状态。

如如果一个个设备是是自给电电源式,并并且当前前配置需需要大于于1000mA电电流,那那么如果果此设备备转到了了总线电电源式,它它必须返返回地址址状态(Adddresss sstatte)自给给电源式式集线器器使用VVBUSS来为集集线控制制器(Hubb coontrrolller)提供电电源,因因而可以以仍然保保持配置置状态(Connfiggureed sstatte),尽管管自给电电源停止止提供电电源3)缺缺省状态态设备加电电以后,在在它从总总线接收收到复位位信号之之前不应应对总线线传输发发生响应应在接接收到复复位信号号之后,设设备才在在缺省地地址处变变得可寻寻址4)地地址状态态所有的UUSB设设备在加加电复位位以后都都使用缺缺省地址址每一一设备在在连接或或复位后后由主机机分配一一个唯一一的地址址当UUSB设设备处于于挂起状状态时,它它保持这这个地址址不变USB设设备只对对缺省通通道(Pippe)请求发发生响应应,而不不管设备备是否已已经被分分配地址址或在使使用缺省省地址5)中中止状态态为节省电电源,UUSB设设备在探探测不到到总线传传输时自自动进入入中止状状态当当中止时时,USSB设备备保持本本身的内内部状态态,包括括它的地地址及配配置。

所有的设设备在一一段特定定的时间间内探测测不到总总线活动动时必须须进入中中止态不不管设备备是被分分配了非非缺省的的地址或或者是被被配置了了,已经经连接的的设备必必须在任任何加电电的时刻刻随时准准备中止止总线线活动的的中止可可能是因因为主机机本身进进入了中中止状态态另外外,USSB设备备必须在在所连接接的集线线器端口口失效时时进入中中止态这这就是所所指的选选择性中中止(Sellecttivee suuspeend)USB设设备在总总线活动动来到时时结束中中止态UUSB设设备也可可以远程程唤醒的的电流信信号来请请求主机机退出中中止态或或选择性性中止态态具体体设备具具有的远远程唤醒醒的能力力是可选选的,也也就是说说,如果果一个设设备有远远程唤醒醒的能力力,此设设备必须须能让主主机控制制此能力力的有效效与否当当设备复复位时,远远程唤醒醒能力必必须被禁禁止2.4BBus Enuumerratiion总总线标号号当USBB设备接接上或从从USBB设备移移开的时时候,主主机启动动一个被被称作总总线标识识(buss ennumeerattionn)的进程程,来标标识并管管理设备备状态的的改变,当当USBB设备接接上一个个加电端端口时,系系统当采采取以下下操作::(1)UUSB设设备所连连的集线线器通过过其通向向主机的的状态改改变通道道向主机机,汇报报本USSB设备备已连接接上。

此此时,UUSB设设备处于于加电状状态,它它所连接接的端口口是无效效的2)主主机通过过寻问集集线器决决定此次次状态改改变的确确切含义义3)主主机一旦旦得知新新设备已已连上以以后,它它至少等等待1000mss以使得得插入操操作的完完成以及及设备电电源稳定定工作然然后主机机发出端端口使能能及复位位命令给给那个端端口4)集集线器将将发向端端口的复复位信号号持续110mss当复位位信号撤撤消后,端端口已经经有效了了这时时USBB设备处处于缺省省状态,并并且可从从VBUUS汲取取小于1100mmA的电电能,所所有设备备寄存器器及状态态已经被被复位,设设备可对对缺省地地址产生生响应5)主主机给设设备分配配一个唯唯一的地地址,设设备转向向编址状状态Adddresss sstatte)6)在在USBB设备接接受设备备地址之之前,它它的缺省省控制通通道(Deffaullt CConttroll Piipe)在缺省省地址处处自然是是可寻址址的,主主机通过过读取设设备描述述表,判判决设备备缺省通通道的实实际净数数据负载载7)主主机从设设备读取取配置信信息要从从配置00读到配配置n--1,其其中n为为配置个个数,此此操作须须花费几几个毫秒秒。

8)基基于从设设备取来来的配置置信息及及设备如如何被使使用的信信息,主主机给设设备一个个配置值值,此刻刻,设备备就处于于配置状状态(Connfiggureed sstatte)并此配配置有关关的所有有端节点点,都按按照配置置各就各各位,UUSB设设备现在在可以从从VBUUS得到到描述中中所要求求的电量量了从从设备的的角度来来讲,它它已经准准备就绪绪了当UBSS设备被被取走时时,集线线器同样样会通知知主机,断断开一个个设备连连接会使使得设备备所连接接的端口口无效,一一收到断断开通知知后,主主机就会会更新的的拓扑信信息2.5通通用USSB设备备操作1、动态态插接与与拔开USB设设备必须须在任意意时刻允允许被插插接与拔拔开提提供连接接点或端端口的集集线器应应当负责责汇报端端口的状状态改变变情况当主机探探测到连连接操作作后,会会使得所所连的集集线器端端口生效效,设备备也会因因此而复复位,一一个被复复位了的的USBB设备有有如下特特性:(1)对对缺省UUSB地地址发生生响应;;(2)没没有被配配置;(3)初初始状态态不是挂挂起当设备从从一个集集线器端端口移去去时,集集线器会会使得原原来连接接的端口口失效,并并且通知知主机设设备已移移去。

2、地址址分配当USBB设备连连接以后后,由主主机负责责给此设设备分配配一个唯唯一的地地址,这这个操作作是在设设备复位位及端口口使能操操作以后后3、配置置USB设设备在正正常被使使用以前前,必须须被配置置,由主主机负责责配置设设备主主机一般般会从UUSB设设备获取取配置信信息后再再准定此此设备有有哪些功功能作为配置置操作的的一部分分,主机机会设置置设备的的配置值值,并且且,如果果必要的的话会选选择合适适的接口口的备选选设置只须一个个简单配配置,一一个设备备可能支支持多重重接口一一个接口口是一组组端结点点集合,它它们代表表了设备备向主机机提供的的单一的的功能或或特性,用用来与这这组相关关端结点点通信的的协议以以及接口口内各端端结点的的目的可可以作为为一个设设备类的的一部分分或者由由厂商制制定具体体定义另外,一一个配置置中的接接口可能能有备选选设置这这些备选选设置会会重定义义相关端端结点的的数目或或特性如如果是这这样的话话,设备备必须支支持GeetInnterrfacce(接口请请求)与Seet IInteerfaace(接口设设置)请求,来来汇报及及选择指指定的接接口的设设备选设设置在每个设设备配置置下,每每个接口口描述表表可能包包括用来来标识接接口的及及备选设设置的域域,接口口被从00~N--1编号号。

n为为配置所所支持的的能同时时使用的的接口数数目,类类似的设设置的编编号也从从0开始始当设设备初始始化配置置后,缺缺省设置置是备选选设置00了支持通通用的设设备驱动动程序管管理一组组相关的的BUSS设备,设设备与接接口描述述表中包包含了类类(Claass),子类类(Subb cllasss),及协协议(Prootoccol)域这这些域用用来标识识一个设设备的功功能及用用于通信信的协议议一个类值值被分配配给一组组按照特特性划分分成USSB类说说明一部部分的设设备一一个类的的设备可可进一步步划分成成子类,并并且在一一个类或或子类中中,一个个协议代代值可定定义主机机软件是是怎样与与设备通通信的4、数据据传送数据可能能以四种种方式在在USBB设备端端结点与与主机之之间传送送在不不同设置置下,一一个终端端结点可可能被用用于不同同的传输输方式,但但一旦设设置选定定,传送送方式就就选定了了5、复位位/继续续及恢复时时间当一个端端口被复复位或从从中止态态继续的的时候,UUSB系系统软件件应当等等待一个个10mms的恢恢复时间间才能确确保端口口对数据据传输产产生响应应一旦恢复复时间段段结束(从reesett信号结结束,或或ressumee信号结结尾的EEOP结结束开始始计时)设备必必须在任任意时刻刻都能对对数据传传输作出出响应。

6、设置置地址的的处理在resset//ressumee恢复时时间段以以后,如如果设备备收到SSetAAddrresss()请求求,设备备必须能能在500ms内内完成请请求的处处理,并并完成状状态的转转换,在在SettAdddresss())的请求求下,当当设备发发出0长度的的状态数数据包或或设备收收到状态态数据包包的响应应信号AACK就就表明状状态转换换结束了了在状态转转换结束束后,设设备有22ms的的SettAdddresss())恢复时时间在在这段时时间结束束以后,设设备必须须能在新新地址处处接受SSetuup数据据包,并并且,必必须确保保此时设设备不对对旧地址址的信号号产生响响应7、请求求错误如果一设设备收到到一个请请求,它它或是在在设备中中无定义义,或是是不适用用于当前前设置,或或是数值值不对,这这时就会会产生一一个请求求错误设设备在下下一个数数据传输输阶段或或状态交交换阶段段(Staatuss sttagee)返回一一个表明明错误的的STAALL PIDD信号,一一般在下下一个数数据传输输返回更更好,这这样可减减少不必必要的总总线活动动2.6UUSB主主机USB的的互连支支持数据据在USSB主机机与USSB设备备之间的的流动。

为为了简化化主机上上的客户户软件(Sofftwaare cliientt)与设备备的功能能部件(funnctiion)之间的的通信而而必须的的主机接接口(hosst iinteerfaace)只要要USBB设备并并不感觉觉到主机机行为的的改变,UUSB主主机完全全可以提提供一个个不同的的软件系系统实现现方法图图2.22展示了了USBB通信模模型之间间基本的的信息流流与互连连关系::图2.22通信模模型层次次关系图图由图2..2可见见,主机机与设备备都被划划分成不不同的层层次主主机上垂垂直的箭箭头是实实际的信信息流设设备上对对应的接接口是基基于不同同实现的的在主主机与设设备之间间的所有有通信最最终都是是通过UUSB的的电缆进进行,然然而,在在上层的的水平层层之间存存在逻辑辑的主机机—设备备信息流流主机机上的客客户软件件和设备备功能部部件之间间的通信信是基于于实际的的应用需需求及设设备所能能提供的的能力客户软件件与功能能部件之之间的透透明通信信的要求求,决定定主机和和设备下下层部件件的功能能以及它它们的界界面(intterffacee)主机在整整个USSB系统统中是唯唯一的,它它包括UUSB总总线接口口、USBB系统(USBB Syysteem)、USSB客户户(Cliientt)。

其中,UUSB总总线接口口处理电电气及协协议层的的互连从从互连的的角度看看,USSB设备备和USSB主机机都提供供类似的的USBB总线接接口,如如串行接接口引擎擎(Serriall Innterrfacce EEngiine SIEE)由于于主机在在USBB系统中中的特殊殊性,UUSB主主机上的的总线接接口还必必须具备备主机控控制器的的功能(Hosst CConttrolllerr),主机机控制器器具有一一个内集集成的集集线器(根集线线器)提供与与USBB电缆的的连接USB系系统(USBB Syysteem)使用主主机控制制器来管管理主机机与USSB设备备的数据据传输UUSB系系统与主主机控制制器之间间的界面面基于主主机控制制器的硬硬件特性性USSB系统统层相对对于主机机控制器器而言,处处理的是是以客户户观点见见到的数数据传输输及客户户与设备备的交互互这包包括附加加的USSB信息息,比如如协议头头(Prootoccol Wraappeers)USSB系统统还必须须管理UUSB的的系统资资源,以以使得客客户的访访问成为为可能USB系系统有三三个主要要组成部部份:主机控控制器驱驱动(HHostt Coontrrolller Driiverr)、USSB驱动动(USBB Drriveer)和和主机软软件(hosst ssofttwarre)。

主机控制制器驱动动的存在在,方便便地将各各种不同同的主机机控制器器实现映映射到UUSB系系统,客客户可以以不必知知道设备备到底接接在哪个个主机控控制器上上就能同同设备进进行通信信USSB驱动动提供了了基本的的面向客客户的主主机界面面在HHCD与与USBB之间的的接口称称为主机机控制器器驱动接接口(Hosst CConttrolllerr Drriveer IInteerfaace HCDDI)这层层接口不不能被客客户直接接访问,所所以也不不是由UUSB具具体来完完成的一一个典型型的HCCDI是是由支撑撑各种不不同主机机控制器器的操作作系统来来定义的的USBDD提供II/O请请求包(I/OO Reequeest Paccketts)形式的的数据传传输,以以某一特特定通道道来传输输数据另另外,UUSBDD为它的的客户提提供一个个容易被被支配及及配置的的抽象的的设备作作为这种种抽象的的一部份份,USSBD拥拥有标准准通道对对设备进进行一些些标准的的控制这这标准通通道实现现了USSBD与与抽象设设备之间间的逻辑辑通信在有些操操作系统统中,提提供了额额外的非非USBB系统软软件以支支持设备备的配置置及设备备驱动程程序的加加载。

在在这样的的操作系系统中,设设备驱动动程序应应使用提提供的主主机软件件接口而而不是直直接访问问USBBDI客户层描描述的是是直接与与USBB设备进进行交互互所需要要的软件件包当当所有的的设备都都已连上上系统时时,这些些客户就就可以直直接通设设备进行行通信一一个客户户不能直直接访问问设备的的硬件主主机可提提供如下下的功能能:(1)检检测USSB设备备的连接接与断开开;(2)管管理主机机与设备备之间的的标准控控制流;;(3)管管理主机机与设备备之间的的数据流流;(4)收收集状态态及一些些活动的的统计数数字控制主机机控制器器与USSB设备备的电气气接口,包包括提供供有限的的能源所所有的集集线器都都通过状状态改变变通道报报告它的的状态的的改变,其其中包括括设备的的连上与与断开等等USSBD的的一类特特殊客户户即:集集线器驱驱动器拥拥有这些些状态改改变通道道,接收收这些状状态的改改变对对于像设设备连结结这种状状态改变变,集线线器驱动动器将加加载设备备的驱动动程序在在有些系系统中,这这种集线线器驱动动程序是是操作系系统提供供的主机机软件的的一部份份,它用用来管理理设备2.7UUSB分分组标识识USB的的分组标标识(PIDD)用来标标识操作作的属性性,PIID指出出了数据据分组的的类型,并并可由此此推断出出分组格格式和改改组所用用的校验验方法。

UUSB的的通信结结构一般般是以PPID开开始的,后后面紧跟跟着数据据或控制制信息,最最后是CCRC校校验PID是是由一个个四位的的分组类类型码加加上该四四位类型型码的反反码组成成,其格格式如图图2.33所示::图2.33PIDD分组码码格式2.8UUSB的的数据流流包格式USB的的数据流流以包的的形式进进行传输输,根据据PIDD的不同同,将包包分为四四种,令令牌包(TTokeen PPackkagee),数数据包(DDataa Paackaage),握握手包((Hanndshhakee Paackaage),和和特殊类类型包(SSpecciall Paackaage)2.8..1令牌牌包如图2..4所示示为令牌牌包的格格式它它由PIID字段段,ADDDR(Adddresss地址址)字段,EENDPP(Endd poointt,端点点)字段和和CRCC(cycclicc Reedunndanncy Cheeck,循循环冗余余校验),字段段构成PID包指定了包是输入输出还是建立类型,对于输出和建立事务,地址和端点字段唯一确定了哪个设备和端点接受数据包对于输入事务,这些字段唯一确定了哪个端点应该传输数据包。

只有主机能发出标记包输入PID定义了从外设到主机的数据时务格式如图2.4所示:图2.44令牌包包格式2.8..2 数数据包数据包由由PIDD,大于于或等于于0个字字节的数数据的数数据区和和CRCC构成有有两种类类型的数数据包,其其中PIID分别别为DAATA00和DAATA11这两两种数据据包是为为了支持持数据切切换同步步(DAATA Toggglee Syynchhronnizaatioon)而而定义的的格式式如图22.5所所示:图2.55数据包包格式2.8..3 握握手包握手包仅仅由PIID构成成握手手包用来来报告数数据事务务的状态态,能表表示数据据成功接接受,命命令的接接受或拒拒绝,流流控制和和终止条条件如如图2..6所示示:图2.66握手包包格式2.8..4特殊包包这个特殊殊前导(Speeciaal PPreaamblle)封包拥拥有独自自的PIID类型型名称PPRE,仅仅用于主主机想要要从高速速传输变变成低速速传输时时,主机机在想要要送出低低速的封封包与低低速设备备通信之之前,先先送出的的PREE包,其其格式如如图2..7所示示:图2.77握手包包格式2.9  本章小小结在本章中中,重点点研究与与本文内内容相关关的USSB1..0协议以以及USSB通信信传诵数数据包内内容,包包括拓扑扑结构、UUSB接接口特性性、编码码方式与与传输出出类型、数数据域及及数据封封包格式式以及时时数据格格式等内内容。

它它们是开开发USSB设备备,完成成与上位位机软件件通信的的必要基基础第3章UUSB设设备驱动动程序的的开发3.1UUSB驱驱动程序序简介在Winndowws环境境下,不不允许用用户在应应用程序序中直接接访问硬硬件设备备,应用用程序必必须通过过一个中中间桥梁梁才能访访问硬件件设备,这这个中间间桥梁就就是设备备驱动程程序驱动程序序是一个个软件,是是连接应应用程序序、硬件件以及操操作系统统的桥梁梁,装入入后成为为操作系系统内核核的一部部分[44]UUSB设设备驱动动程序为为WDMM模型,WWDM引引入了功功能设备备对象FFDO和和物理设设备对象象PDOO两个新新类来描描述对象象,一个个真实硬硬件只能能有一个个PDOO,但可可以有多多个FDDO,在在驱动程程序中直直接操作作的是硬硬件的PPDO和和FDOO[5]]WDDM是通通过设备备的全局局唯一标标识符GGUIDD来识别别硬件设设备选选取合适适的开发发工具后后就可以以根据实实际情况况编写UUSB设设备驱动动程序,然然后还要要编写和和驱动程程序通信信的应用用程序USB设备与PC机之间的通信,除了读写数据外还有很多种类型,但读写数据是最基本的所以把主要研究问题放在对USB接口的读与写方面。

在这里应应用DrriveerSttudiio软件件来编写写驱动程程序,DDrivverSStuddio把把那些每每个驱动动程序都都需要的的代码都都封装成成类库库库代码自自动地处处理例行行的操作作,这极极大地简简小了任任务的复复杂度而而且,CC++编编译器提提供了AANSIIC 所所不具备备的优点点:包括括改进的的类型安安全检查查,内连连函数优优化,以以及更好好的代码码组织DrivverWWizaard———DrriveerWoorkss 的代代码向导导,与微微软的VVisuual C+++紧密的的集成超超过15500行行的驱动动程序源源代码框框架只需需几次鼠鼠标点击击就可完完成这这些代码码还包含含了详细细的注释释另外外,DrriveerWiizarrd还能能生成专专为特殊殊设备定定制的代代码,比比如:UUSB设设备,PPCI设设备,即即插即用用设备,IISA设设备,等等等3.2UUSB驱驱动程序序的开发发过程下面为用用DriiverrStuudioo开发一一个USSB驱动动程序的的过程写写这个驱驱动程序序只要用用到DrriveerWoorkss[6]]首先打开开VC+++6..0软件件在菜单单中选择择DriiverrStuudioo选项中中的DrriveerWoorkss则会出出现如图图的对话话框(图图3.11)。

图3.11建立新新工程选择其中中的Sttartt aNNew Driiverr Prrojeect选选项,创建一一个新工工程图图3.22)图3.22设置工工程名称称及保存存位置在这里,,将这个个工程称称为:ForrUsbb,所在的的目录为为E:\\我的文文档\毕业设设计\ddrivver然然后单击击按钮“Nexxt”图3.33选择工工程类型型在(图33.3)这个对话框中,需要选择驱动程序的类型由于USB设备驱动程序是WDM类型的,所以选择第一项,并在下边选择Driverworks C++语言框架点击按钮“Next”图3.44选择驱驱动程序序的类型型图3.44对话框框为选择择类型,由于的的USBB设备驱驱动是要要控制的的硬件设设备的,所所以我们们选择第第一项,单单击“Nexxt”图3.55设置设设备的总总线在图3..5的对对话框中中,选择的驱驱动程序序所操作作的总线线类型这里选选择USSB在在USBB Veendoor IID和USBB Prroduuct ID中中填入UUSB设设备的VVID和和PIDDUSBB设备的的VIDD和PIDD分别是是16进制制的04471和和06777点点击“Nexxt”。

点击对话话框中的的,可以以选择电电脑中连连接的UUSB设设备在在这里可可以找到到要识别别的USSB实验验板,可可以点击击sellectt来选择择这个硬硬件在接下来来的对话话框中,需要加加入Enndpoointt1和Enddpoiint22的定义义由于在在USBB中规定定Enddpoiint00是必须须存在的的,所以不不需要对对Enddpoiint00进行定定义. 点“Addd”按钮,弹出一一个的对对话框,设置好好如图所所示其中,按照UUSB的的规定,对于端端点,它的地地址是11;按照前前面说明明的设备备的特点点,Enddpoiint11的最大大的包大大小为116字节节,因此在在“Maxx Trransser Sizze”中填入入16;;Enddpoiint Namme可以以通过“Sugggesst NNamee”得到按照这这些原则则,继续设设置其他他的配置置,接下来来继续按按“Nexxt”按钮图3.66添加输输入与输输出信息息图3.77设置接接口信息息在对话框框中,因为不不需要给给其他的的驱动程程序提供供接口,也不需需要提供供Fluush功功能,所以不不需要任任何修改改,直接按按“Nexxt”按钮。

图3.88设置对对其他设设备的接接口如图3..9所示示的对话话框中,是给驱驱动程序序增加一一些IOOCTLL接口如利用用IOCCTL来来控制UUSB设设备的LLED灯灯、数码码管显示示等功能能的接口口然后点击击“Nexxt”按钮图3.99设置驱驱动的接接口在如图的的对话框框中,不需要要创建任任何注册册表项,所以直直接按“Nexxt”按钮图3.110创建建注册表表选项接下来为为电源设设置,由于UUSB实实验板不不能自行行供电,只能靠靠USBB传输线线供电所所以选择择第1项项,按“Nexxt”按钮图3.111电源源设置下图。

下载提示
相关文档
正为您匹配相似的精品文档