




已阅读5页,还剩79页未读, 继续免费阅读
(测试计量技术及仪器专业论文)usb接口驱动程序的设计与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 通用串行总线( u s b - u n i v e r s a ls e r i a lb u s ) 是计算机与外部设备连接的新型 接口,相对于p c 传统的串并行接口,u s b 具有诸多优点如较高的数据传输率、 即插即用、热插拔、易扩充和低成本等。 随着u s b 接口的普及,大量嵌入式应用开始考虑将u s b 集成到系统中。这 当中一部分是设计作为p c 外围设备,而另一部分则是为使用p c 外围设备的 u s b 主机。在u s b 系统结构中,u s b 主机处于核心地位。任何一次u s b 数据 传输均由u s b 主机发起和控制,所有u s b 设备只能和u s b 主机建立连接,而 两个设备之间无法进行直接通信。 u s b 2 0 通信协议是本文重点研究的内容之一,从u s b 通信模型、封包、数据 的传输类型等几方面对该协议进行了较详尽的分析和阐述,并结合i s p l 5 8 1 接口 芯片设计的u s b 系统详细讨论了芯片的固件程序设计。 本文另一个重点研究的内容是w i n d o w $ x p 操作系统内核模式下的w d m 驱 动程序。通过对其特点、关键概念、开发方法进行介绍后,将着重分析该模式下 的u s b 驱动程序的架构。采用n u m e g ad r i v e r s t u d i o 开发u s b 设备驱动程序是本 文的一个特色,使用该工具构建u s b 设备驱动程序的方法和其中关键例程的实现 都可以作为今后w d m 驱动程序研究和开发的借鉴。 在完整的u s b 接口设计中,上层应用程序也扮演了很重要的角色。本文重点 编写了一个采样测试应用程序,来验证我们开发的u s b 接口完成硬件板与p c 主 机之间的通信情况。最后,本文对我们在研究和开发u s b 接口工作中的不足之 处和需要改进的地方进行了总结,同时也展望了u s b 发展的美好前景。 关键词:u s b 通信协议i s p l 5 8 1 固件程序设备驱动程序 a b s t r a c t a b s t r a c t t h eu n i v e r s a ls e r i a lb u si san e wi n t e r f a c ef o rc o n n e c t i n gp e r i p h e r a ld e v i c e st o c o m p u t e r c o m p a r e dw i t ht h et r a d i t i o n a lp ci n t e r f a c e ss u c ha ss e r i a la n dp a r a l l e lp o r t , t h eu s bh a sm a n ya d v a n t a g e ss u c ha sh i g h e rd a t at r a n s f e rt h r o u g h p u t , p l u g a n d - p l a y , h o ts w a p p i n g ,e x p a n d a b i l i t ya n dl o w - c o s te t c w i t ht h ep o p u l a r i z a t i o no ft h eu s bi n t e r f a c e ,al o to fe m b e d d e da p p l i c a t i o n ss t a r t t ot h i n ki n t e g r a t i n gu s b p o r ti n t os y s t e m s o n ep a r to ft h ea p p l i c a t i o n si sd e s i g n e da s p cp e r i p h e r a l s ,t h eo t h e ri sd e s i g n e da su s bh o s ti no r d e rt ou s et h ep e r i p h e r a l s t h e u s bh o s tt a k e su pt h ec o r ep o s i t i o ni nt h eu s bs y s t e ma r c h i t e c t u r e e a c hu s bd a t a t r a n s f e ri si n i t i a t e da n dc o n t r o l l e db yt h eh o s t e v e r yu s bd e v i c ec a no n l yc o n n e c tt o t h eh o s ta n dc a l ln o tc o m m u n i c a t ew i t he a c ho t h e rd i r e c t l y t h ec o m m u n i c a t i o np r o t o c o lo ft h eu s b2 0 i so n eo ft h ec o n t e n tt h a t t h i s d i s s e r t a t i o nr e s e a r c h e sm a i n l y t h i sd i s s e r t a t i o ne x p o u n d st h ep r o t o c o lf r o mu s b c o m m u n i c a t i o nm o d e l ,u s bp a c k e t s ,u s bt r a n s m i s s i o nt y p e sa n ds oo n a n d , t h i s d i s s e r t a t i o ne x p o u n d st h ed e s i g na n di m p l e m e n t a t i o nu s bf i r m w a r eo ft h eu s bs y s t e m w h i c hi sd e s i g n e db a s eo ni s p l 5 8 1 t h eo t h e ro n ee m p h a s i sc o n t e n to ft h ed i s s e r t a t i o ni st h ew d md r i v e ru n d e r w i n d o w s2 0 0 0o p e r a t i o ns y s t e mk e r n e lm o d e t h ed i s s e r t a t i o ni n t r o d u c e sw d mf r o m t h ec h a r a c t e r i s t i c s ,m a i nc o n c e p t sa n dd e v e l o p m e n tm e t h o d sd e t a i l e d t h ea r c h i t e c t u r e o fu s bd r i v e rt h a ti sp a r to ft h ew d md r i v e ri se x p o u n d e ds e q u e n t i a l l y o n ef e a t u r eo f t h i sd i s s e r t a t i o ni st od e v e l o pu s bd e v i c ed r i v e rb yn u m e g ad r i v e r s t u d i o s o m e p i v o t a lt e c h n i q u ea n di m p l e m e n tp r o c e s si nt h ed i s s e r t a t i o nc a l lb ec o n s i d e r e da st h e r e f e r e n c eo fo t h e rd r i v e rd e v e l o p m e n ti nf u m r e t h ea p p l i c a t i o np r o g r a mp l a y sa ni m p o r t a n tr o l ei nt h ed e v e l o p m e n to fu s b i n t e r f a c e t h ed i s s e r t a t i o nd e s i g n sa s a m p l i n gt e s ta p p l i c a t i o np r o g r e s st ov a l i d a t et h e c o m m u n i c a t i o na b i l i t yo fo u ru s bh a r d w a r eb o a r d 、珩n 1t h ep ch o s t i nt h ee n d , t h i sd i s s e r t a t i o nc o n c l u d e st h es h o r t a g ei no u rr e s e a r c hw o r kt od e v e l o p u s b i n t e r f a c e 。a p a r tf r o mt h i s ,t h ed i s s e r t a t i o na l s ob r i n g sf o r w a r ds o m ea s p e c t st h a t a b s t r a c t n e e di m p r o v ei nf u t u r ew o r k s i m u l t a n e i t y , i ts u p p o s e st h ef i n ep r o s p e c ta b o u tu s b d e v e l o p m e n t k e y w o r d s :u s bc o m m u n i c a t i o np r o t o c o l ,i s p1581 ,f i r e w o r kp r o g r a m ,u s bd e v i c e d r i v e r i l l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:氢丝圭 日期:年月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:j 盈垃导师签名:粒 日期:年月 日 第章引言 1 1 问题的提出 第一章引言 在电子科学技术高速发展的今天,随着计算机硬件飞速发展,外围设备日 益增多,键盘、鼠标、调制解调器、打印机、扫描仪早己为人所共知,数码 相机、m p 3 随身听接踵而至,这么多的设备,如何接入个人计算机? u s b 就 是基于这个目的产生的【l 】。u s b 是一个使计算机周边设备连接标准化、单一 化的接e l ,其规格是由i n t e l 、n e c 、c o m p a q 、d e c 、i b m 、m i c r o s o f c 、n o r t h e r n t e l e c o m 联系制定的。 本课题来源于国家自然科学基金面上项目:模拟v l s i 电路故障诊断的多特 征提取方法。故障诊断获得的信号在经过d s p 处理后需要传输到p c 机上,使用 传统的r s 2 3 2 传输己然不能满足数据的要求,因此为了提高传输速度和方便使用, 我们选用了目前最流行的接口u s b 。 随着u s b 3 0 的发布,u s b 必将越来越流行,其应用肯定也会越来越广泛。 u s b 系统的开发领域中使用最广泛的是u s b 功能设备的开发,其实现过程也因具 体情况的不同而有所改变,在实际的开发过程中还需要解决具体的问题。因此本 课题的研究还是具有其实用价值和现实意义的。 1 2u s b 简介及发展现状 u s b ( u n i v e r s a ls e r i a lb u s 通用串行总线) 是应用于计算机领域的用于外围 设备与计算机进行连接的接口技术。它最初是由c o m p a q 、i n t e l 、n e c 、m i c r o s o f t 等公司共同提出的,其目的是简化p c 机和外设的连接过程,使p c 接口的扩展变 得更加容易。 u s b 端口支持多个外设的连接,它采用“菊花瓣 式的连接方式把所有的外 设连接起来,最多可连接的1 2 7 个外设。u s b 版本的发展到目前为止经历了3 代: 1 2 m b p s 速度的1 0 1 1 版本,4 8 0 b i b p s 速度的2 o 版本及目前的5 g b p s 的u s b 3 0 版本。此外, u s bo t g ( o n - t h e - g o ) 的发布使得u s b 可以脱离主机的限制就进 行设备间点对点的数据传输,从而使u s b 有了更广泛的应用领域。 电子科技大学硕士学位论文 u s b 接口之所以能够得到越来越广泛的应用是因为u s b 具有以下特点: 支持即插即用和热插拔:u s b 实现了自动配置,不再需要手动配置i 0 地 址和中断请求。用户在任何时候连接或断开u s b 外设都不会损坏p c 机和 u s b 外设。 应用广泛:可提供低速、全速、高速,甚至5 g b p s 的多种传输速度。可支 持对多个设备的同时操作,可连接物理设备数多达1 2 7 ;可在主机和设备间 传输多个信息流和数据;利用底层协议,提高了总线利用率。 灵活性:u s b 支持4 种数据传输率:1 5 m b p s 的低速传输、1 2 m b p s 的全速 传输、4 8 0 m b p s 的高速传输、5 g b p s 的超高速传输;4 种传输类型:块传输、 同步传输、中断传输和控制传输,使其适合多种外设的需要。 可靠性:出错处理差错恢复机制在协议中使用;u s b 硬件设计消除了大多 数可能引起数据错误的噪声。 兼容性:u s b 规范有良好的向下兼容性,对现存操作系统接口有良好衔接。 成本低廉:u s b 能实现强大的功能,但是它的组件和电缆并不贵,因此也 促进了低价格u s b 外设的发展。 u s b 自1 9 9 6 年推出至今已经经历了1 3 年的发展,从第一代的u s b l 0 1 1 到 第二代的u s b 2 0 直至现在的第三代u s b 3 0 ,凭借其各种优点,u s b 接口已成为 接口技术的领头羊。在去年1 1 月份举行的超高速u s b 发展会议上,由i n t e l 、微 软、惠普、德州仪器、n e c 、s t - n x p 等业界巨头组成的u s b3 0p r o m o t e rg r o u p 宣布,该组织负责制定的新一代u s b3 0 标准已经正式完成并公开发布。新 规范提供了十倍于u s b2 0 的传输速度和更高的节能效率,可广泛用于p c 外 围设备和消费电子产品 2 1 。但是目前市场上尚无支持u s b 3 0 的硬件产品出 现。 在数据文件越来越大,硬盘都论t b 计算的今天,u s b 2 0 的速度对于快速增 长的储存设备容量来说显然是捉襟见肘,u s b 3 0 也就在这种环境下应运而生了。 u s b 3 0 的最大传输带宽高达5 g b p s ,也就是6 2 5 m b s 。u s b2 0 基于半双i - - 线 制总线,只能提供单向数据流传输,而u s b3 0 采用了对偶单纯形四线制差 分信号线,故而支持双向并发数据流传输,这也是新规范速度猛增的关键原 因【3 1 。 2 第一章引言 1 3u s b 和其他接口的比较 u s b 接口技术突破传统i o 模式的束缚,找到了一条外设与p c 机连接的新方 法,与传统接口相比具有许多优点。表1 1 是u s b 接口和传统接口的一个简单比 较。 表卜1u s b 接1 :3 与传统接口的比较嘲 接口名称速度特点 串行口6 一l1 5 k b p s所需的电缆最少( 最少为3 根) ,通讯距离较 远( 2 0 m ) ,一次传一位,速度较慢。 并行口6 0 9 2 0 k b p s所需的电缆较多( 最少为5 根) ,通讯距离较 短( 二一 ni 总线复位处理 总线挂起处理 赢磊重新开痞= 兰一总线重新开始处理 一s e t u p 包事务处理- 纠包事务处理 ! = _ 一端点1 矾事务处理 一端点l o u t 事务处理 结束 图3 - 9 u s b 事务中断流程图 在整个u s b 中断事务处理子程序中,最重要的部分是s e t u p 包事务处理子 程序,它是整个u s b 通信的关键。u s b 标准请求就是在这个子程序中处理的,而 只有实现了这些标准请求,u s b 设备才能真正和主机之间完成功能通信。端点i l n 事务处理和端点1 0 u t 事务处理是实现功能传输的子程序。 为了更好的设计固件程序,本人在程序中设计了几个关键的结构体和函数, 下面将首先列出这些结构体和函数的实现。 这些结构体有:s e t u p 事务请求格式、u s b 事件标志和u s b 设备状态等。 3 2 奈艾曼警 第三章u s b 固件程序的设计与实现 s e n j p 事务请求格式 t y p e d e fs t r u c t _ d e v i c e r e q u e s t u n s i g n e dc h a rb m r e q u e s t t y p e ;请求类型 u n s i g n e dc h a rb r e q u e s t ; u s b 请求 u n s i g n e ds h o r tw v a l u e ; u s b 请求值 u n s i g n e ds h o r tw l n d e x ; u s b 请求索引 u n s i g n e ds h o r tw l e n g t h ;计数长度 ) d e v i c e _ r e q u e s t ; u s b 事件标志 t y p e d e fu n i o nu s b i n 忑jl a g s t r u c tu s bf l a gb i t su s b 事件标识位 u ir e s e t: 1 ;总线复位 i j is o f: 1 ;起始包中断 u ip s o f: 1 ;假起始包中断 u is u s p: 1 ;总线挂起 u 1r e s u m e: 1 ;总线重新开始 1 3 ih ss t a t: 1 ;高速状态 u id m a: l :d m a 中断 u ir e s e r v e d 3 : 1 ; u ie p o s e t u p : 1 ;为1 则端点o 接收到s e t u p 包 u ir e s e r v e d 2 :1 : u ie p o r x: 1 ;为1 ,中断源是端点0 的r x ( 接收) 缓冲区 u ie p o t x:1 ;为1 ,中断源是端点o 的t x ( 传送) 缓冲区 i j ie p 7 r x : 1 ; u ie p 7 似: l ; u ii 也s e r v e d l: 6 ; b i t s ; i l lv a l u e ; 。 u s bi n a 玉l a g ; u s b 设各状态 t y p e d e f s t r u c tu s b d e v i c e s t r u c tu s b d e v i c e b i t s u ir e m o t ew a k e u p : l ;远程唤醒 u ih a l t: 1 ;设备终止 3 3 电子科技大学硕士学位论文 u is e l fp o w e r e d u ie n d p l h a l t u it e s tm o d e u is t a t e u ia l t e ri n t e r f a c e : 1 ;自供电 : 1 ;端点禁止 : 1 ;缬4 试方式 : 3 ;设备状态 : 1 ;激活选定的接口 b i t s ; ) u s b _ d e v i c e ; 本文对u s b 事务中断处理子程序的设计除了上述几个关键结构体外还定义了 几个关键函数:读取端点数据函数r e a d 和接收端点数据函数_endpoint w r i t e e n d p o i n t 。 v o i dr e a de n d p o i n t ( u n s i g n e dc h a re n d p ,i n tl e n , u n s i g n e di n t 宰b u r ) 函数功能:读取选定端点的数据。 入1 2 1 参数:e n ( 端点号) 、l e n ( 数据长度) 和b u f ( 缓冲区指针) 。 函数实现:首先根据参数选择端点,然后将端点缓冲区的长度设置成入口参数 中的数据长度,再将这个端点缓冲区中的数据一个个的送到缓冲区指针所指的 d s pf i f o 缓冲区中,直到所有数据被送完为止,最后清空端点缓冲区。 v o i d w r i t e _ e n d p o i n t ( u n s i g n e dc h a re n d p ,u n s i g n e di n tl e n ,u n s i g n e dm t 场u f ) 函数功能:发送数据到选定端点。 入口参数:e n d p ( 端点号) 、l e n ( 数据长度) 和b u f ( 缓冲区指针) 。 函数实现:先选择端点并将端点缓冲区的长度设置为l e n ,然后将b u f 所指的 缓冲区数据一个一个传输到i s p l 5 8 1 的数据端口寄存器。 前文说过,s e t u p 包事务处理是实现u s b 通信的关键,它只能在控制端点实 现,对主机发出的s e t u p 包进行响应和处理的,具体流程如图3 1 0 所示。这里需 要说明的是:图中读取u s b 请求时由于i s p l 5 8 1 读取数据寄存器时先读取低位的 值,所以需要对1 6 位的数据进行高低位交换。 第三章u s b 固件程序的设计与实现 匕到 l 清除端点o i s e t u p 中断标志 山 l 清除总线复位标志 上 i 选择端点。s e y t r v 獭- 】 上 l 读取u s b 请求 0 i 调用u s b 标准请求函数 上 f 结束 、) 图3 - 1 0s e n j p 包处理流程 s e t u p 包处理流程调用了u s b 标准请求函数。这些请求的主要功能是完成 u s b 设备的配置操作。本固件按照u s b 协议定义了1 1 种设备请求,其具体流程 图如图3 1 1 所示,这里所涉及的描述符在u s b h 都有完整的定义。需要说明的是: 图中玳表示数据传输方向是从设备到主机,0 u t 表示数据传输方向是从主机到设 备。由于某些标准请求设备不支持或者没有必要支持,因此只定义了相应的标准 请求处理函数,但在实现时只执行空操作或者设置成请求出错状态。 5 5 电子科技大学硕士学位论文 图3 1 1u s b 标准命令请求流程图 下面将具体阐述11 u s b 标准请求命令中关键的几个标准请求,这里包括:获 取描述符请求、设置地址请求、设置配置请求等。 获取描述符请求( g e td e s c r i p t o r ) :它是用于主机读取指定的描述符。 g e t _ d e s c r i p t o r 请求仅支持3 种类型的描述符:设备( 包含设备限定) 描述符、 配置( 包含其它速率配置) 描述符和字符串描述符。接口描述符、端点描述符、 设备类定义描述符和供应商自定义描述符都将作为配置信息,由g e t d e s c r i p t o r ( c o n f i g u r a t i o n ) 请求随配置描述符一起返回。该请求的工作流程图如图3 1 2 : 第三章u s b 固件程序的设计与实现 图3 1 2 获取描述符流程图 设置地址( s e ta d d r e s s ) :它用于为u s b 设备分配一个唯一的设备地址。在 u s b 设备插入主机后进行枚举时,主机发送该请求给设备分配一个新的地址, 以取代默认地址( 默认地址为0 ) 。主机分配给u s b 的设备地址包含在前面 定义的s u e u p 事务请求格式的w v a l u e 中,其值范围为0 1 2 7 。主机发出设置 地址请求后,i s p l 5 8 1 会将响应该请求并根据主机所给的设备地址值进入不同 的设备状态。值得注意的是i s p l 5 8 1 是使用默认地址完成对设置地址请求的处 理且该请求无数据阶段,而改变地址操作是在请求状态结束之后才完成的,这 一点不同于其它标准u s b 设备请求。该请求的工作流程如图3 1 3 所示: 3 7 电子科技大学硕士学位论文 图3 1 3 设置地址流程图 设置配置( s e t _ c o n f i g ) :它用于请求为u s b 设备选择一个合适的配置。s e t u p 事务格式中的w v a l u e 字段中存放该配置值,它必须与配置描述符中的 b c o n t i g u r a t i o nv a l u e 字段值相匹配,也可以为零。如果该配置值为0 ,i s p l 5 8 1 仍将停留在地址状态,否则将进入配置状态。工作流程如图3 1 4 所示。 图3 1 4 设置配置流程图 3 8 第三章u s b 固件程序的设计与实现 上述三种标准请求是u s b 设备必须响应的,其它标准请求可根据设备功能的 不同进行响应。本固件目前只用于完成u s b 设备和主机之间的通讯,只要完成这 几种标准请求即可,其它的标准请求设备不作响应。 3 4 本章小结 到此为止,本人在c c s 集成开发环境中实现了u s b 固件程序的设计开发。接 着可以使用d s p 并口仿真器s t u d y e e p 把它下载到f 2 8 1 2 中。本章介绍的u s b 固 件程序的开发采用自顶而下的方法,首先从从编程思想对固件的设计做了结构分 析,然后再从总体上介绍了整个固件设计所涉及的主要文件,最后把固件分成初 始化模块、主循环和中断处理程序3 部分详细阐述了固件的具体实现。下一章将 在介绍w d m 型驱动的基础上进行u s b 设备驱动程序的设计开发。 3 9 电子科技大学硕士学位论文 第四章u s b 设备驱动程序的设计与实现 开发个u s b 外围功能设备,除了设计设备端的固件程序外还需提供连接到 硬件设备的软件接口- u s b 设备驱动程序。u s b 硬件设备的内部实现并不为主机 所知道,所以要通过设备驱动程序提供一个可用的接口来访问u s b 设备。u s b 设 备驱动程序要能够可靠的完成数据信息的传输和处理,使主机和设备之间的通信 成为可能。 开发驱动程序就离不开操作系统,本章将对w i n d o w s 2 0 0 0 x p 操作系统作一个 简要描述。 4 1w i n d o w s 2 0 0 0 x p 操作系统概述 w i n d o w s 2 0 0 0 x p 的系统结构如图4 - 1 所示。软件要么执行在用户模式中,要 么执行在内核模式中忉。 图4 - 1w m d o w s 2 0 0 0 x p 系统结构图 第四章u s b 设备驱动程序的设计与实现 当上层应用程序需要和硬件通信时,它首先调用w i n 3 2a p i 函数发出i o 请求, 而w m 3 2 子系统模块负责完成该a p i 函数并调用内核模式支持例程,最终把该i o 请求封装成i o 请求包( i r p ) ,并把这个数据结构送到驱动程序进行处理。如果是 u s b 设备,该请求被发送到u s b 设备驱动程序,u s b 设备驱动又将该i r p 请求包 含在一个称为u s b 请求块( u i 也) 中发送到总线驱动程序并最终由u s b 控制器访问 设备硬件。 w i n d o w s 2 0 0 0 x p 系统可以使用多种驱动程序,图4 2 显示了w i n d o w s 2 0 0 0 x p 系统的设备驱动种类【_ 。 图4 - 2w i n d o w s 2 0 0 0 x p 系统的设备驱动分类 如图4 2 所示内核模式驱动程序的分类包含文件系统驱动、显示驱动等诸多子 类。不同类型的硬件设备需要采用不同类型的驱动程序。p 1 1 p 设备是支持即插即用 的设备,驱动该类硬件设备必须使用遵循w i n d o w sx p 即插即用协议的p 1 1 p 驱动 程序。 本文要开发的u s b 设备驱动程序是w d m 型的,它不直接和设备硬件打交道。 而w d m 驱动程序是一种p n p 驱动程序,它采用分层的结构把驱动程序分成几个 层次,各层上的w d m 驱动程序具体不同的优先级。这种分层结构使得w d m 驱 动程序的应用更加广泛,其可包括文件系统、网络组建和专用设备等。 4 1 电子科技大学硕士学位论文 4 2w d m 驱动程序模型概述 w d m 属于操作系统的内核模式,其驱动程序由运行于内核模式的系统级代码 组成;它采用灵活的分层驱动方法,且各层上的w d m 驱动程序具有不同的优先 级。u s b 设备驱动程序就是一种典型的w d m 驱动程序4 1 。 4 2 1w d m 概述 在w d m 驱动模型中,每个硬件设备的驱动程序通常由功能( f u n c t i o n ) 驱动程 序和总线( b u s ) 驱动程序组成。前者就是本文要设计的设备驱动程序,它会为用户 提供合适的设备控制方式,负责完成设备的初始化,处理i o 操作产生的中断事件, 正确的完成内核和设备之间的接口功能,实现它们之间的数据的双向传输,检测 甚至处理异常事件。后者主要管理设备和计算机之间的互联,枚举并管理总线上 的设备。 w d m 驱动程序运行在系统内核模式,它可以执行任何有效的c p u 指令,当 然也包括用户发出的i o 操作请求。用户发出的i o 请求被w i n 3 2 子系统处理后发 送到w d m 驱动程序上并由这些i o 请求指明驱动程序的具体操作。这些i o 请求 将涉及到一个重要的内核模式对象:i r p 。 i r p 即i o 请求包,它是从系统非分页式内存池中分配的一个数据结构,它包 含一个固定大小的首部( i os t a t u sb l o c k ) 和一个可变大小的堆栈 ( i os t a c kl o c a t i o n ) 。i r p 首部含有i r p 自身的属性,通常包含y o 请求的管 理信息,其长度是固定的。i r p 首部包括一个s t a t u s 字段和一个i n f o r m a t i o n 成员 变量,前者用于保存y o 请求处理之后的状态,候着用于设置状态值。i r p 堆栈由 一个或多个i o 栈单元组成,其内部包含该i o 请求的函数代码和参数。i o 栈单 元的个数由驱动程序的层数来决定。 4 2 2w d m 型的u s b 驱动程序架构 与其他设备的w d m 型驱动一样,u s b 设备的w d m 驱动程序也采用分层结构:顶 层为u s b 设备驱动程序( 这也是本文所要开发的驱动程序) ,对于某些设备可能还有 中间层驱动程序,最后一层为u s b 总线驱动程序,它负责和u s b 硬件打交道,如 图4 3 所示。 4 2 第四章u s b 设备驱动程序的设计与实现 用户模式臣塑画 图4 - 3w d m 型的u s b 驱动程序分层体现结构 如上图所示,u s b 设备驱动程序并不和硬件交互,这和其它传统的总线不一 样。对u s b 设备驱动程序来说,它靠创建u p b ( u s b 请求块) 并把u r b 提交到总 线驱动程序,最终由总线驱动来完成相应的设备操作。总线驱动程序理解u s b 通 信机制,并知道如何和u s b 设备进行数据的传输。当它接收到设备驱动请求包时, 会把这些请求数据重新组织成具有u s b 特定格式的事务来进行传输。 结合上图,可以将设备和主机通信流程简述如下:当用户要与u s b 设备进行 数据传输操作时,上层应用程序调用w i n d o w sa p i 函数进行i o 请求,并把它传 递给u s b 设备驱动程序。这个i o 请求包传递至设备驱动程序后,设备驱动程序 根据该请求包中包含的i o c t l 进入相应的派遣例程进行处理,在派遣例程中根据 不同的传输类型构造相应u s b 请求块( u r b ) ,然后传递给u s b 总线驱动程序 ( 某些设备可能需要经过中间层驱动程序处理) 。u s b 总线驱动程序根据i r p 中 所含的u r b 执行相应的操作,并把所要传输的数据组织成u s b 事务传输给u s b 设备,然后把该i r p 操作的结果返回给u s b 设备驱动程序。由u s b 设备驱动程 序层层向上将i r p 操作结果传回给应用程序完成本次数据传输。 4 3u s b 设备驱动程序的框架设计与实现 编写设备驱动程序必须和实际的u s b 硬件设备相结合,使用合适的开发工具。 本节首先简要介绍使用的开发工具n u m e g ad r i v e r s m d i o 及其开发驱动程序的环境 建立,然后介绍设备驱动程序框架的生成。 电子科技大学硕士学位论文 4 3 1n u m e g ad r i v e r s t u d i o 简介及驱动程序框架的生成 n u m e g ad r i v e r s t u d i o 是c o m p u w a r e 公司针对设备驱动开发推出的基于应用层 技术的设备驱动程序工具。d r i v e r s t u d i o 提供的工具可以使程序员快速的开发出 更可靠的设备驱动程序,从而加速设备驱动开发的关键阶段。 d r i v e r s t u d i o 主要功能模块包括:d r i v e r w i z a r d 工具( 可自动产生设备驱动程 序的大体框架) 、s o f t i c e ( 可以对内核驱动程序进行侦错调试) 、v i s u a ls o f t l c e ( 提 供多部p c 机内核驱动程序的调试功能) 、t r u e t i m ed r i v e re d i t i o n ( 可检查执行缓 慢的程序代码,提高程序的效率) 等。本设备驱动程序的开发主要使用的是 d r i v e r w i z a r d 工具和s o f t i c e 。 d r i v e r s t u d i o 的特色之处在于它提供的设备驱动程序开发工具可以提高开发 速度,改善测试性能和程序的健壮性。由于它是一个驱动程序开发工具包,下面 将利用其中的d r i v e r w i z a r d l 具和开发一个设备驱动程序,并利用s o f t l c e 调试所 开发的设备驱动程序。 4 3 1 1 建立n u m e g ad r i v e r s t u d i o 开发驱动程序的环境 正确安装驱动程序开发所使用的软件,建立驱动程序开发的平台是开发驱动 程序的前提条件。只有正确安装了开发环境,才能进一步开发正确的设备驱动程 序。不少人在这上面走了弯路,本人在开发过程中也有此体会。因此有必要在这 里阐述一下软件的安装步骤,给他人一份借鉴的经验: 1 、安装w i n d o w s x p 系统; 2 、安装v i s u a lc + + 6 0 ; 3 、安装x pd d k ; 4 、安装d r i v e r s t u d i o 驱动程序开发工具包; 5 、安装s o f t i c e 等调试软件。如图4 - 4 所示设置s o f t i c e 。 第四章u s b 设各驱动程序的设计与实现 l n 罴“簟呓i = 蒜 l 一r h * t 9 一o + w l ;娶 一一m l :。i 曼墓4 丽一。 l i ,鎏篆 仓“一 l :器一。,。 l 一二掣霉n t i 一 l = 兰兰了i ;一:。- 例4 4s o f t l c e 设置效果圈 图4 - 5d d k 环境变量设置效果图 电子科技大学硕士学位论文 6 、设置d d k 路径。d d k 路径设置正确与否关系到后面程序的编译能否成功, 因此一定要设置正确。由于每次进入v c 工程都须设置这个路径十分繁琐,解决办 法是在系统) 高级) 系统环境变量中新建一个系统变量b a s e d i r 其值为d d k 的安装路径。设置情况如图4 5 所示。 7 、在x 8 6 环境下编译d s 源库v d w l i b s d s w 。这一步非常重要,只有编译完了 这个源库才能编译自己编写的驱动程序。 4 3 1 2 利用n u m e g ad r i v e r s t u d i o 工具生成驱动程序的框架 d r i v e r s t u d i o 工具在开发设备驱动程序上十分便利,利用它可以生成驱动程序 的大体框架。虽然生成的驱动程序由于没有具体的硬件操作不能实现具体的功能, 但它建立了设备驱动程序的外在框架,我们可以根据需要进行功能模块的添加设 计,而不用花费精力在全局设计上。下面将结合实际开发中如何利用d r i v e r w i z a r d 工具生成驱动框架加以阐述,这里的序号是实际设置过程中的序号,采用缺省的 步骤就不在这介绍了。 第一步:输入工程路径,建立工程。本驱动程序中工程名为“u s b d r i v e r ”,存 放路径为“f :u s b d r i v e r ”。 第二步:选择驱动程序模式。本驱动程序采用的是前文介绍的w d m 型设备驱 动。 第三步:选择w d m 型驱动程序的具体类型。此处选择w d m 功能驱动程序。 第四步:选择总线类型。这里先选择u s b 总线,然后根据i s p l 5 8 1 芯片的厂 商i d 和产品i d 在相应的v i d 栏目中天上0 4 c c ,在p i d 栏目中填写1 5 8 1 。 第五步:添加和设置用于数据传输的端点。这里添加了六个端点,其中 me n d p o i n t i i n 和m是块传输端点,最大传输包大小为 字endpointl o u t51 2 节;me n d p o i n t 2 i n 和m 是中断传输端点,最大传输包大小为endpoint20ut 1 0 2 4 字节;m和 是同步传输端点,最大传输包e n d p o i n t 3 i n me n d p o i n t 3 0 u t 大小为1 0 2 4 字节。在这一步,还要设置每个u r b 传输的最大数据量,这里统 一设置为6 5 5 3 6 字节,这是一个能影响u s b 传输数据的参数,在允许的范围 内越大越好。设置完毕后效果如图4 6 所示。 第四章u s b 设备驱动程序的设计与实现 图4 6 承加i j s b 端点示意图 第六步:选择驰动程序支持的例程。在这罩可以选择以f 的例程:r c a d 、w r i t e 、 d e v l c e1 0c o n ”o 、c l o s e ,c r e a t e 等。在本驱动程序唯面,选择了c l e a n u p 、 c l o s e 、c r e a t e 和d e v i c e l 0 c o n t r o l ,由d e v i c e l 0 c o n t r o l 来实现设备与主机之 问的通信。 第七步:设茕驱动程序属性,如接口、缓冲区z 类的。先选择用接u 方式打开 设备,然后添加i 0 控制码,接着在缓冲区访问方式中采用缓冲方式,如图4 7 所示。驱动程序是运行在内核模式中的软件程序,它可以运行在任何线程环境 中,因此如何正确的访问内存空间是驱动程序所要解决的首要任务。驱动程序 访问用户缓冲区内存的方式有以下二种: b u f f e r 方式;管理器先在内存中创建一个知用户模式数据缓冲大小一 致的系统缓冲区,然后 a 0 管理器负责在系统缓冲区和用户数据缓冲区之间复 制数据j 。 d i m a 方式。1 1 0 管理器锁定用户模式物理地址空问所在的内存页,并创 建内存描述符表( m d l ,m e m o r yd e s c r i p t o rl l s l ) 来描述锁定页”1 。在 这种方式的读写操作中,m d l 通常作为参数传递给其它函数。这种方式通常 用于可以执行d m a 的硬件。 n e i t h e r 方式。在这种方式下,i 0 管理器只把用户模式缓冲区的虚拟地 址传递给驱动程序,其余的工作都要求驱动去完成 7 j 。此方式不能适用于那些 电子科技人学硕士学位论文 具有分层结构的驰动程序。 通过上述3 种方式的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民爆生产企业安全培训课件
- 初期汽车考试题库及答案
- 保健酒业考试真题及答案
- 江苏农业新质生产力热潮涌动
- 个人如何面对新质生产力
- 新质生产力发展路径与实践指南
- 城市管理新质生产力
- 校园篮球联赛策划方案
- 新质生产力最核心的表述
- 美国视角下的新质生产力
- 2025年国家电网公司招聘岗位竞聘模拟题及答案
- 隧道施工应急预案与响应方案
- 2025年广播电视技术能手预选赛竞赛试题含答案
- 2025年健身教练专业技能测评考试试题及答案解析
- 2025年山东高考化学试题及答案
- 2025-2026北师大版二年级数学上册(全册)教案设计
- 环卫人员安全知识培训课件
- 公司适用法律法规标准清单2025年08月更新
- 医院诊断证明书word模板
- 人力资源部安全责任清单、履职清单
- 女性盆底解剖结构及功能
评论
0/150
提交评论