(机械电子工程专业论文)基于usb总线的数据采集系统.pdf_第1页
(机械电子工程专业论文)基于usb总线的数据采集系统.pdf_第2页
(机械电子工程专业论文)基于usb总线的数据采集系统.pdf_第3页
(机械电子工程专业论文)基于usb总线的数据采集系统.pdf_第4页
(机械电子工程专业论文)基于usb总线的数据采集系统.pdf_第5页
已阅读5页,还剩72页未读, 继续免费阅读

(机械电子工程专业论文)基于usb总线的数据采集系统.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江器大学硕士学位论文 摘要 数据采集系统是信息科学的一个重要分支,它研究信息数据的采集、存储、 处理以及控制等,广泛应用在虚拟仪器、信号处理等领域。 同时,随着操作系统全面的支持u s b 技术标准,u s b 的应用正得到突飞猛 进的发展。本文所要论述的正是如何使用u s b 这一新型总线形式,来实现一个 简练的数据采集系统( 包括软件和硬件) 。 文中首先介绍了u s b l 1 规范,着重探讨了u s b 总线传输类型和总线协议, 而后介绍了一个u s b 数据采集系统硬件搭建以及相应固件编写方式。该系统使 用p d i u s b d l 2 芯片作为u s b 接口芯片,a t 8 9 c 5 2 作为系统微控制器,a d c 0 8 0 9 作为模数转换芯片。 然后,文章介绍了w d m 模型驱动程序的总线结构以及组成w d m 型驱动 程序的各个子模块部分的功能和特点,以及如何在u s b d i 基础上编制一个w d m 型设备驱动程序来实现应用程序与u s b 设备之间的通信。 最后,简单介绍了系统应用软件编写时需要注意的g u i d 以及多线程问题, 列出了系统对不同波形、频率的输入信号进行测试的结果,并以测试结果为根据 对系统的极限采样频率进行了估算。最后还对此系统在不同情况下波形失真的问 题进行了分析,提出了解决方案。 把数据采集器和u s b 总线结合,充分发挥u s b 总线的优势,使得数据采集 器应用更加便捷,必将成为数据采集系统的一个新的发展方向。 关键词:u s b 总线数据采集w d m 驱动程序p d i u s b d l 2 忸苏太学硕士学位论文 a b s t r a c t d a t aa c q u i s i t i o ni sa ni m p o r t a n tb r a n c ho fi n f o r m a t i o nt e c h n o l o g y i ts t u d i e sd a t a a c q u i s i t i o n ,d a t as t o r i n g ,d a t ap r o c e s s i n ga n d s oo u i tc a l lb ew i d e l yu s e di nt h ef i e l d o f v i r t u a li n s t r u m e n t i n t e l l i g e n ti n s t r u m e n ta n ds of o n l l a tt h es a i t t et i m ea st h ew i n d o w s 2 0 0 0o p e r a t i o ns y s t e ms u p p o r t st h eu s b s p e c i f i c a t i o nc o m p r e h e n s i v e l y , t h ea p p l i c a t i o no fu s b i sg o i n ga h e a db yl e a p sa n d b o u n d s t h i sp a p e r j u s tf o c u so nh o w t od e v e l o p m e n tas i m p l ed a t aa c q u i s i t i o ns y s t e m b a s e do nu s b f i r s t l y , t h i sp a p e ri n t r o d u c e st h eu s b 1 1 s p e c i f i c a t i o n ,e s p e c i a l l yf o c u s i n go n t h et r a n s f e rt y p ea n db u sp r o t o c o lo fu s b 。t h e ni ti n l r o d u c e st h ew a yt ob u i l d 叩a d a t aa c q u i s i t i o ns y s t e m ( b o t hh a r d w a r ea n ds o f t w a r e ) ,a n dt h i ss y s t e mu s ep d i u s b l 2 a st h eu s bi n t e r f a c ec h i p ,a t 8 9 c 5 2 a st h em i c r o p r o c e s s o r , a n da d c 0 8 0 9a st h ea d c o n v e r tc h i p s e c o n d l y ,i ti n t r o d u c e st h eo v e r a l ls t r u c t u r e ,e v e r ym o d u l e sf u n c t i o na n di t s c h a r a c t e ro ft h ew d md r i v e r a tl a s t ,c o m b i n e dw i t ht h ep r a c t i c eo ft h ea u t h o ri n d e v e l o p i n gau s b d e v i c e ,t h i sp a p e rp r e s e n t sh o w t od e v e l o pau s bd e v i c eb yu s i n g au s bi n t e r f a c ec h i p ,h o wt ob u i l daw d m d r i v e rb a s e do nu s b d i ,a n dh o wt ow o r k o u tt h ec o m m u n i c a t i o nb e t w e e nt h e m a tl a s t ,i ti n t r o d u c e st h ep r o b l e mo fg u i da n dm u l t i - t h r e a d e d w h e n p r o g r a m m i n gt h ed a t aa c q u i s i t i o ns y s t e m sa p p l i c a t i o n s o f t w a r e c o n n e c t i n gd a t aa c q u i s i t i o nd e v i c et ou s b ,s u f f i c i e n t l yt a k i n gt h ea d v a n t a g eo f u s b ,i tm u s tb ean e w d i r e c t i o no f d a t aa c q u i s i t i o ns y s t e m k e yw o r d s :u s b d a t a a c q u i s i t i o n w d md r i v e r p d i u s b d l 2 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学位保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借 阅。本人授权江苏大学可以将本学位论文的全部内容或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 学位论文作者签名 次村嗡 晦年6 月;目 指导教师签名:南昌献 西年石月? 日 书权 授 本用 适 后 密 解 年 在 , 口 i 密 密保 保 不 属文论发学本 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进 行研究工作所取得的成果。除文中已注明引用的内容以外,本论文不 包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研 究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完 全意识到本声明的法律结果由本人承担。 学位论文作者虢张捕嘲 日期:0 9 年厂月3 曰 江苏大学硕士学位论文 第一章绪论 现代工业生产和科学研究对数据采集的要求日益普遍,在瞬态信号测量、图 像处理等一些测量中,都需要进行数据采集。现在通用的数据采集卡一般多是利 用微机机箱内的p c i 插槽或i s a 插槽进行扩展。通过数据采集系统,可以简洁、 通用化的硬件配合以相应的软件实现以往专用测试仪器的功能;完成“软件既仪 器”的理念。 对于数据采集系统而言有两个关键性问题:一是控制a d 转换和数据传输的 控制器,一是采集系统与上位机p c 的传输方式。其中控制器一般采用通用的单 片机,包括4 位、8 位、1 6 位以至3 2 位的各类单片机;这些单片机芯片优势在 于价格低廉、结构简单、接口扩展能力强等,但是其数字运算能力较差,所以目 前出现了许多以d s p 芯片作为数据采集系统控制器的数据采集系统。本课题为简 化开发难度,充分利用现有的工作环境采用较常用的a t 8 9 c 5 2 单片机作为系统控 制器。 对于数据采集系统与上位机的通讯方式,现行的常用方式是利用p c 机箱内 的p c t 、i s a 插槽进行扩展;其传输速度分别为1 3 2 m s 、1 6 m s 、但是由于p c 机 接口资源有限,且需要对接口卡硬件资源进行合理配置,故其存在以下缺点:安 装麻烦;价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在 一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,易导致采集的数据失 真。 本课题旨在使用新型的通用串行总线u s b 完成数据采集系统的构架,充分 发挥u s b 总线接口简洁、使用方便的优势;并为后续的使用u s b 总线对实验室 现有的“频率特性测试系统”改进作前期准备工作。课题主要完成四个方面的工 作:数据采集系统硬件设计、固件设计、应用程序及w d m 设备驱动程序设计。 使用到的软件工具包括p r o t e l 9 9 、k e i lc 5 1 、m i c r o s o f tv i s u a ls t u d i o6 0 、w i n 2 0 0 0 d d k :使用到的硬件工具包括单片机写入器、万用表、示波器等等。采用的操 作系统平台为w i n d o w s2 0 0 0 。 江苏大学硕士学位论文 1 1 总线的概念和分类 所谓总线是计算机各个模块之间的传输通道,或者说是许多信号线的集合, 总线的主要特征表现为共享性和可扩充性。所谓“共享特性”是指总线是一组公 共信号线,在总线上可以挂接多个芯片或部件,并分时使用总线。所谓“可扩充 性”是指总线上的信号一般具有通用性,像数据总线、地址总线和控制总线都具 有通用性,是连接的部件有较强的兼容性。 根据总线在系统中所处的位置,并按照总线的主要作用和传输性质,总线可 按照下图分类。 2 3 1 1 2 0 l 图1 1 常见总线分类 片内总线:片内总线位于集成电路的内部,用于连接各功能单元的信息通路, 例如,c p u 片内总线是a l u 同寄存器和控制器之间的信息通路。 片外总线:指一台单板机或者一块c p u 插件板上使用的板上总线,用于芯片 级的连接。它一般是c p u 引脚的延伸,与c p u 关系密切,负责和c p u 通信。 但板内总线较多时往往需要增加锁存、驱动等电路,以提高驱动能力。 系统总线:是微机系统最重要的一种总线。一般谈到的微机总线指的多为此 类总线。有的系统总线是片内总线经过重新驱动和扩展而成,其性能与c p u 性 能有关。但有不少系统总线并不依赖与某种型号的c p u ,可为多种型号c p u 及 配套芯片所使用。在用各种插件板组成和扩展微机系统时,就需要恰当的选用系 江藏大学硕士学位论文 统总线,并按总线的规定来操作这些插件板。系统总线有多种标准,例如p c i 、 i s a 等:其数据地址线不同,以适用不同的应用系统。 外部总线( 又称通信总线) :它用于在系统之间进行互连,有串行和并行两种; 用于微型机之间,微型机与外设之间。常用的有r s 一2 3 2 、r s - 4 8 5 、i e e e 一1 3 9 4 等等。u s b 总线正属于此类总线。 1 ,2p o i 总线和i s a 总线 现行的计算机测控系统( 例如,数据采集卡、运动控制卡) 中,大多使用 p c i 总线或i s a 总线来完成板卡和p c 的通信,其存在使用不便的缺陷。 圈1 2i s a ( 深色) 和p c i ( 浅色) 插槽 i s a 总线( i n d u s t r ys t a n d a r da r c h i t e c t u r e ) 是计算机发展历程中应用最 广泛的总线形式。它是由i b m 公司开发的1 6 位扩展接口总线,因最早用于p c a t 机中,故而又称p c a t 总线。现行的i s a 插槽有4 9 对9 8 条引脚,数据总线为 1 6 位。i s a 系统总线用于连接插件板,它以通道形式经过扩充和再驱动而连接到 扩充槽,进而连接到系统主板上。 p c i ( p e r i p h e r a lc o m p o n e n ti n t e r c o n n e c t ) 局部总线是i n t e l 公司为适应奔 腾而开发的3 2 位总线,它的总线时钟频率为系统主板时钟频率的1 2 ,是i s a 总线的4 倍,其传输的最大速率可达1 3 3 m b s ,是i s a 的2 4 倍。目前个人电脑 中所使用的p c i 总线通常都是3 2 位的,但p c i 总线支持6 4 位的操作a 江袁土学硕士学位论文 1 3u s b 串行总线的优势1 4 1 5 】 通用串行总线u s b ( u n i v e r s a ls e r i a lb u s ) 是1 9 9 5 年康柏、微软、i b m 、d e c 等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装 方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于 u s b 的高速数据采集卡充分利用u s b 总线的上述优点,有效解决了传统数据采 集卡的缺陷 u s b 从传统i 0 模式的桎梏中解放出来,开辟了一条外设同p c 机连接的新 方法。与其他的老式p c 机接口相比,u s b 具有如下优点: ( 1 ) 热插拔:用户可以把u s b 外设连接到一台正在运行的p c 机上,操作系统能 自动识别,并且用户可以立即使用,而不需要重新启动。用户也可以在任何时候 断开u s b 设备,而不管计算机是否正在运行,这都不会损坏计算机。 ( 2 ) 日l j 插即用:u s b 实现了自动配置,它不需要用户手动配置i o 地址和中断请 求( i r q ) 。当u s b 外设接入p c 时,操作系统会自动检测到这个连接。并加载 适合的驱动程序。对用户来说,只需要等待几秒钟,u s b 外设的安装就会完成。 ( 3 ) 共享式接口:u s b 端口支持多个外设的连接,通过u s b 集线器,一个u s b 主控制器可以连接多达1 2 6 个外设。 ( 4 ) 接口体积小巧:和其它老式的p c 接口相比,u s b 接口小且薄,更适合于外设 体积的小型化。 ( 6 ) 使用灵活:u s b 支持三种类型的传输速率,1 5 m b s 的低速传输、1 2 m b s 的 全速传输和4 8 0 m b s 的高速传输。u s b 支持四种传输类型,块传输、同步传输、 中断传输和控制传输。这使得u s b 总线适合多种外设的传输需要。 ( 7 ) 提供电源:u s b 电缆向外设提供一根+ 5 v 的电源线,电流的大小取决于集线 器端口。用户可以直接使用这个总线电源。 当然,u s b 总线还存在许多缺陷,比如u s b 2 0 所支持的4 8 0 m b s 速率不及 i e e e 1 3 9 4 的六分之一;u s b 总线传输距离有限;u s b 总线协议复杂等。但随 着操作系统、硬件厂商对u s b 的进一步支持,其在p c 外设方面的将大有可为。 江苏大学硕士学位论文 1 4 本课题研究的内容和意义 本课题旨在对u s b 总线的结构、协议和系统体系进行充分研究的基础上, 完成一个实际的u s b 数据采集系统软硬件的构架。具体需要做的工作包括软件 和硬件两部分。 硬件方面,该系统使用p h i l i p s 公司的p d i u s b d l 2 芯片作为设备的u s b 接 口芯片;采用常用的a t 8 9 c 5 2 作为系统的c p u :a d c 0 8 0 9 芯片作为a d 转换芯 片。配合其它辅助芯片和单片机固件完成输入模拟信号的采集、存储和向p c 主 机的传输。 软件方面分如下几部分: 单片机固件: 本系统中的单片机固件采用c 语言编写,使用k e i lc 5 l 编译器为开发工具。 固件中主要完成对u s b 协议规定的诸多标准请求以及用户自定义请求的响应: 此外还包括控制a d c 0 8 0 9 芯片完成对模拟信号的转换代码,以及u s b 设备所需 各种描述符的定义。 主机设备驱动程序: u s b 外设的驱动程序只能为w d m ( w i n d o w sd r i v e rm o d l e ) 形式的驱动,课 题中采用以d d k 2 0 0 0 为开发工具,在v c 6 0 集成开发环境编写,编译时直接在 d d k 2 0 0 0 的d o s 窗口中编译。 用户应用程序: 应用程序是采集到数据最终显示、处理的地方。系统用户应用程序界面模仿 传统示波器的外形;以图形的方式动态的显示采样数据;具体的采样数值也可以 写入“记事本”文件中,进而可以用其它专门软件进行处理。 p h i l i p s 公司提供了p d i u s b d l 2 的开发包,包括软件和硬件两部分。为用户 使用该种型号的u s b 接口芯片进行设备开发提供一个基础和工作平台。 该数据采集系统的目的在于为实验室现有的套频率特性测试仪的改进做 前期工作。但系统应用的潜力并不局限与此,比如在增加与被测信号相适应的传 感器、采样保持、滤波和隔离电路后系统可以方便的应用于家庭医疗护理方面, 可以用于对人体的心率、脉搏、体温等参数的测试。在个人电脑逐步进入家庭的 当今,这样的系统应当具有一定的应用前景。 江雳土学硕士学位论文 第二章u s b 系统简介 2 1u s b 线缆和信号 u s b 总线采用自己独特的四芯线缆、接头和n r z i 信号编码方式。本节这些 内容进行简要介绍。 2 1 1u s b 接头和电缆 u s b ( u n i v e r s a ls e r i a l b u s ) 协议是由m i c r o s o f t 、i n t e r 等多家公司为取代p c 现有的各种外围接口,使外围设备的连接具有单一化、即插即用、熟插拔等特性 而制定的新型串行通信接口。在此背景下软件与硬件商纷纷推出支持u s b 的产 品,u s b 接口被广泛使用起来。 u s b 总线采用的是非对称的主从结构,为避免连接错误,u s b 接口有两种 形状的插口。分别称为a 型口和b 型口。其中a 口主要用于主机方向插口,也 可用于设各方向插口。b 型口只用于设备方向插槽,且其为可选口型,用于对体 积要求较严格的设备上。 u s b 电缆由电源线( v b u s ) 、 地线( g n d ) 和两条双绞数据线 f d + 和d - ) 组成。图2 1 所示的高 速电缆线的剖面图,其中一对的 电源线采用2 0 2 8 a w g ( a m e r i c a , w i r eg a u g e ,美国线规 范) 的导线。另一对为传递差分 数据的导线,可以使用2 8 w a g 图2 1 u s 丑电缆剖面 的导线。但全速差分数据信号线必须采用绞线形式,而且还需加屏蔽的处理方可。 屏蔽的作用是防止高速传递时所产生的电磁干扰。但对于低速的差分信号数据信 号线就无需使用绞线、屏蔽处理。h l ( 6 号线就无需使用绞线、屏蔽处理。h l ( 6 江苏大学硕士学位论文 2 1 2u s b 接口电器特性 如图2 2 展示了一个全速设备与p c 主机之间电器特性的连接实例。除了v c c ( + 5 v ) 与接地线外,需要特别注意的是d + 与d 的差分数据信号线。首先, 在连接至u s b 收发器之前必须串接2 9 4 4 0 的电阻。而后根据不同的u s b 设备 传输速度( 全速或慢速) ,改变在设备端的提升电阻( 1 5 kq ) 的位置。对于全 速设备( 1 2 a b p s ) ,就将提升电阻器接至d + 信号线与电源之间的位置。如果是 慢速设备( 1 _ 5 m b p s ) ,则将提升电阻器接至d 一信号线与电源线之间的位置。这 个电源的范围在3 o 3 6 v 之间( 可由5 v 的总线电压转换得到) 。最后,d + 与 d 一两条信号线在p c 主机的根集线器或集线器端同时接上1 5 k 的下拉电阻并连接 至地线。 图1 2 金速设备与p c 主机之问电器特性连接图 当设备未连接至p c 主机的根集线器或集线器的连接端时,由于d + 、d 一两条 信号线因为下拉电阻的关系,几乎都视为接地( 0 v ) ,但是若有一个设备刚连接 上时,提升电阻( 1 5 k ) 与下拉电阻( 1 5 k ) 就会形成一个分压器。因此其中有 一条数据信号线( d + 或d 一) 的电位将被提升至电源电压的9 0 左右。此时, 当集线器测得一条数据信号线电压趋近v c c 时,另外一条仍维持接地状态时就可 以确定有一设备已经连接上了。 当d + ( 或d - - ) 信号线电压上冲超过2 0 v d c 且保持2 5 i ts 以上时,集线 器就确认设备已经连接上了。反之,当d + ( 或d 一) 信号线电压低于0 8 v d c 并 保持了2 5 “s 以上时,集线器就可以确认设备已经脱离了。这里的2 0 v d c 与 0 8 v d c 。就是u s b 规格书中所定义的d + ( d 一) 电压的两个临界值,分别称为 v s e ( m a x ) 与v s e ( m i n ) 。 主机将不断的没隔一个周期来轮训根集线器,检查d + 或d 一的电位变化, 江苏大学硕士学位论文 借以了解设备的连接状态。i j s b 规格书中将信号的传递状态分为j 、k 两种状态, 但是这两种状态的定义在全速和低速设备中的定义刚好相反;对于全速设备而言 其j 状态对应差分1 ,对于低速设备而言其恰好对应差分0 ;而k 状态对应全速 设备差分0 ,低速设备差分1 。 所谓差分信号l 指的是( d + ) 一( d 一) 2 0 0 m v ,且d + 或d 一大于v s e ( m a x ) 。差分信号0 则是指+ ) ( d - ) m a j o r f u n c t i o n i r p _ m j _ x x x x = x x ) ( ) ( ;这些语句的目的是 告诉系统哪些i r p 由哪个例程处理。而这些例程的具体代码内容在驱动程序的其 他位置说明。d r i v e r e n t r y 完成的就是这些工作,生下的就是编写这些例程,让其 各司其职。关于d r i v e r e n t r y 还有一点要说明,就是以下的这些i r p 必须处理。 江苏大学硕士学位论文 ir p j _ c r e a t e :当以打开文件( c r e a t f i l e ) 的名义打开设备准备读写时,调 用它做准备。 i r p - m j _ c l o s e :当用户关闭文件( c l o s e h a n d l e ) 时,调用它清理系统。 ir p j p n p :处理即插即用的操作。 lr p j p o l i v e r ;处理和电源有关的操作。 ir p m j r e a d :处理读操作。 ir p m j - w r i t e :处理写操作。 ir pm jd e v l o ec o n t r o l :设备操作。这个操作般是对硬件发出一些控制命 令。这种类型的i r p 一般还有1 0 控制,这些控制代码在用户的头文件中定义。 处理此i r p 的例程可以根据不同的1 0 控制代码来完成对设备的控制任务。【7 】 2 4 l 4 2 2 分发倒程 驱动程序的分发例程主要用于处理用户软件发出的各种i o 请求,并为用户 提供操作设备的接口。即用户的w i n 3 2 应用程序将通过该分发例程与特定的设 备进行通信。用户软件发出i o 请求也是以i r p 的形式传递给驱动程序,例如: 当w i n 3 2 应用程序调用c r e a t e f i l e 函数为指定设备创建一个句柄时,该调用将最 终转换为一个主功能代码为i r pm jc r e a t e 的i r p ,并发送给设备的驱动程序。 下表列出了几种常用的分发例程及其对应的w i n 3 2 函数,其分发例程的函数 名可变。 表4 - 1 分发历程对应关系 分发例程1 r p 主功能代码w i n 3 2 函数 d 1 2c r e a t e i r p m j c r e a t e c r e a t e f i l e d 1 2c l o s e i r p m j c l o s e c l o s e h a n d l e d 1 2r e a d i r p m j r e a d r e a d f i l e d 1 2w r i t e i r p m j w r i t e w r i t e f i l e d 1 2i o c t l i r p m j c o n t r o l d e v i c e l o c o m r o l 驱动程序不必支持所有的这些分发i r p ,但是必须支持i r p m j c r e a t e , 因为如果不支持此i r p ,w i n 3 2 系统将无法使用c r e a t f i l e 函数来获取设备的句柄。 同样,也必须支持i r p m jc l o s e ,以处理w i n 3 2 的c l o s e h a n d l e 函数发出的关 闭设备旬柄请求。是否需要支持其他的i r p ,要根据驱动程序的具体情况而定。 如果支持,驱动程序必须在其d r i v c r e n t r y 例程中指定这些i r p 所对应分发例程 江苏太学硕士学位论文 的函数名,如上面列出了d r i v e r e m r y 例程代码所示。 其中最重要的是上表中列出的五种i r p ,其分发例程分别是d 1 2 一c r e a t e 、 d 1 2 一c l o s e 、d 1 2 一r e a d 、d 1 2 一w r i t e 和d 1 2 _ i o c t l 。其具体实现代码较复杂 在文中不便列出。 4 3u s b 设备驱动程序编程接i = 1 1 6 1 2 4 1 2 5 l u s b 设备驱动程序在和其硬件设备进行通信时,一般需要使用u s b 总线驱 动程序接口( u s b d i ,u s bd r i v e ri n t e r f a c e ) 。u s b d i 是w i n d o w s 操作系统提供的 u s b 总线驱动程序接口,它实现了u s b 数据传输的底层协议。u s b 设备驱动程 序可以直接使用该接口与其物理设备进行通信,而不必考虑诸如总线如何列举、 数据如何传输等细节问题。u s b d i 是w d m 分层结果的一部分,提供u s b 设 备驱动程序访问u s b 主机驱动程序栈的接口。是两者通信的桥梁。图? ? 展示 了一个包含u s b d i 的w d m 驱动程序分层结构;及其在其中的位置。 圈4 3 u s b d i 和w d m 分层结构 b u i k u s b s y s :就是需要设备开发者自己编写的所谓“功能驱动程序”。 u s b h u b s y s :u s b 集线器驱动程序。 u s b d s y s :u s b 总线驱动程序,负责处理u s b 总线中与硬件无关的操作。 u h c d 。s y s 和0 p o n h c i s y s :u s b 主控制器驱动程序,分别对应通用型和开放 型两种主控制器,负责处理u s b 总线的硬件接口。 p c i 列举器:在系统检测u s b 总线时,负责加载u s b 主机驱动程序栈中的 各个组件。 u s b d i 使用i r p ( 1 1 0 请求包) 管理u s b 设备驱动程序和u s b 主机驱动程 5 0 江苏大学硕士学位论文 序栈之间的通信。这些i r p 具有相同的主功能代码 i r p m j _ i n t e r n a l d e v i c e c o n t r o l ,且其下一i o 栈单元的 p a r a m e t e r s + d e v i c e l o c o n t r 0 1 i o c o n t m l c o d e 字段必须被设置为u s b d i 的内部 i o c t l ,以指明该i r p 所实现的具体功能。u s b 设备驱动程序可以调用 i o b u i l d d e v i c e i o c o n t r o l r e q u e s t 函数来创建该i o c t li r p 。这些u s b d i 内部的 i o c t l 只适合与内核模式( 驱动程序中) ,不应该在应用程序中使用之。具体的 每个i o c t l i r p 的功能在w i n d o w s2 0 0 0 d d k 中的说明文档中有详细说明。 u s b 设备驱动程序通常向u s b 主机驱动程序栈发出i r p ,以启动其和u s b 设备见的数据传输。此时u s b 设备驱动程序一般要使用到u r b ( u s br e q u e s t b l o c k ,u s b 请求块) 。所谓u r b 是一种由1 8 种不同类型的结构体构成的联合 型数据结构;u s b 设备驱动程序把它作为一个参数填入i r p 中,用于完成各种 请求功能。 4 4 设备驱动程序开发 设备驱动的开发是课题中遇到的最大难点,此类程序具有自己独特的编程 方式和工具。在课题进行中进行了反复的实践比较后采用了w i n d o w2 0 0 0 作为 系统的工作平台,使用d d k2 0 0 0 作为设备驱动开发工具。 4 4 1 驱动开发工具的选择 开发u s b 设备驱动程序需要专门的开发工具,目前应用广泛的工具主要有 两大类。一类是m i c r o s o f t 公司提供的w i n d o w sd d k ( d e v i c ed r i v e rk i t ) 。它有 w i n d o w s9 8d d k 和w i n d o w s2 0 0 0d d k 两个版本。w i n d o w s9 8d d k 能够开发 w i n d o w s9 5 9 8 m e n t 下的v x d 、k r i d 和w d m 驱动程序。 另一类是n u m e g a 公司提供的d r i v e r s t u d i o ,它是一个大的开发工具包,包 含v t o o l s d 、s o f t l c e 和d r i v e r w o r k s 等开发工具。v t o o l s d 开发包提供了对v x d 编程的c c 抖类库支持,利用v t o o l s d 中的q u i c k v x d 工具可以快速生成v x d 的c c + + 代码框架,开发者可以在此基础上根据各自的需要添加自己的代码。 d r i v e r w o r k s ,提供了v c + + 下的开发向导d r i v e r w i z a r d ,按照它的提示可以迅速 地生成驱动程序的框架。这个框架结构提供可以正确执行w d m 动态环境中i r p 江苏大学硕士学位论文 的请求,而且,也包含用于简化系统提供的标准类驱动程序( 如h i d 、流) 和总 线驱动程序( 如p c i 和u s b ) 接口的类等。利用d r i v e r w o r k s 开发w d m 驱动程 序,可以大大简化开发人员的工作量、缩短开发周期以及降低开发驱动程序的难 度。 但是在此u s b 数据采集系统中,考虑到目前专门讲解d r i v e r s t u d i o 软件的 书籍较少,再者这种高度自动化的代码生成软件掩盖了w d m 驱动程序的一些具 体的体系结构、其内部用到的类库本身也需要定时间来理解消化。所以没有采 用这种方法进行系统驱动程序的编写,而是采用了最基础的w i n d o w s2 0 0 0 d d k 方式。 4 4 2 驱动程序的编写 实际上此类内核模式下的驱动程序具有较强的模式化风格,不同的驱动往往 具有很多相同的而且是必须的历程;所以从编程的角度来说,在个已有的驱动 程序源代码基础上进行相应的改动和扩展来完成驱动程序编写是一个实际的方 法。这样的范例代码可以从开发套件中或是网络上相关网站上得到。此外,d d k 中也附带了对于各种不同形式的驱动程序的范例代码。 在所购买的p d i u s b d l 2 开发套件中,提供了一个测试用的w d m 驱动程序 源代码范例。这个测试驱动程序本身是采用w i n d o w s2 0 0 0d d k 编写的。其中就 包括了一个u s b 总线设备驱动程序最基本、最典型的各种例程。本系统所使用 的设备功能驱动程序就是在此范例的基础上进行必要的修改后重新在d d k 环境 下编译而得到的,这样可以充分利用开发套件,减轻编程方面的压力。下面简要 介绍其中的一些基本例程和本数据采集系统中为完成a f d 转换启动控制而添加 的部分代码。 驱动程序中与刖d 转换相关的代码 在本系统的设备驱动程序的设备控制例程中,需要支持一个特殊的输入输出 控制功能:用以传递从应用程序中启动的a d 转换的指令。设备控制例程在上 面的驱动程序入口例程代码中指派过: 江苏大学硕士学位论文 从上面的代码可以看出i o 控制i i 理的处理函数已经指派给函数 d 1 2p r o c e s s i o c t l 来处理。此类主功能代码为i r pm jd e v i c ec o n t r o l 的i r p 负责设备的控制,主要是之对设备进行一些操作命令的发送或者一些标志 的读取。而大批量的数据读取和写入则由i r pm jr e a d 和i r pm jw r i t e 完成。 为使驱动程序支持a d 转换启动命令,首先需要在定义i o c t l 的头文件中 定义一个负责启动a d 转换的i o c t l 如下: 而后在1 0 控制i r p 处理函数中进行相应的修改,增加对a d 转换启动请求 的响应: 如此操作之后就能使设备驱动程序可以接收从应用程序传来的启动a d 转换的 命令,并传递该命令到主机设备驱动程序栈。 讧苏土学硕士学位论文 当然除此而外,驱动程序中还应有其它的各种必须的历程;但是这些历程一 般具有很强的相似性。在不同功能的u s b 设备对应的设备驱动程序中,都会具 有诸如即插即用历程、电源管理历程和设备控制历程等基本历程的处理代码。这 些内容非常庞杂,且在不同设备驱动程序中其内容往往相似;故而本论文中不再 作一一说明。 4 4 3 驱动程序编译的方法【6 】【7 1 2 4 本系统的功能驱动程序开发工具为w i n d o w s2 0 0 0d d k 和v c + + 6 0 集成开 发环境。有两种方式进行驱动程序的编译,一种是直接d o s 窗口中通过命令提 示行中进行d d k 编译;再者是通过适当的设置在v c + + 6 0 集成开发环境中调用 d d k 进行编译。d d k 在源代码级兼容,也就是说使用w i n d o w s 2 0 0 0d d k 中可 以将驱动程序源代码编译成w i n d o w s 2 0 0 0 系统的驱动程序,也可以编译成 w i n d o w sx p 的驱动程序,但是编译完成后的驱动程序只能在相对应的操作系统 中运行。 在写程序时首先可在v c + + 6 0 集成开发环境中创建一个m a k e f i l e 的项目, 在其中加入驱动程序的相应头文件、源文件。源文件和相应头文件既是上面所提 到的各种例程的处理过程代码所在的文件。除此而外还要在该项目的文件夹中加 入一个s o u r c e 文件和一个m a k e f i l e 文件才能使d d k 的b u i l d 工具成功的编译 该内核模式的设备驱动程序。 驱动程序的编译和s o u r o e 文件 s o u r c e 文件使用一些宏定义来指明该驱动程序编译和连接的基本信息,如指 明b u i l d 工具所创建文件的文件名( 不包括扩展名) 、文件的存放目录和文件的 类型及其对应的扩展名等信息;同时s o u r c e :文件列出了各个处理例程所在源文件 的文件名( 但不包括头文件) 。其文件名就叫作“s o u r c e ”且没有扩展名。 指明目标程序源文件的文件名( 包括它们的扩展名) ,其各个文件名之间可 以用空格键或者”t a b ”键分隔。且它们都必须存放在该s o u r c e 文件所在的目录中。 对于u s b 设备驱动程序, 江苏大学硕士学位论文 系统驱动程序的s o u r c e 文件 另外,在设备驱动程序源文件所在的文件夹中还应包括一个m a k e f i l e 文件, 其文件名为m a k e f i l e ( 没有扩展名) 一个标准的m a k e f i l e 文件将激活d d k 提供的宏定义文件m a k e f i l e d e f , 该文件指明传递给编译器程序和连接程序的表 示,以简化设备驱动程序的创建过程。一般情况下这个文件的内容是固定的,驱 动开发人员一般不应该修改该文件。所以开发时可以在d d k 中提供的范例代码 中引用此文件。 m a k e r i i e 文件 一般的m a k e f i l e 文件只包含如下语句即可: 除此而外的都是注释语句。 至此,已经在新建的工程中加入了所需的头文件、源文件、s o l i c e 文件和 m a k e f i l e 文件。但是因为v c 6 0 不能编译内核模式下的u s b 设备驱动程序,所 以此时应该在v c 6 0 集成开发环境中存盘,并退出v c 6 0 。 从开始 程序 d e v e l o p m e n tk i 卜一 w i n d o w s 2 0 0 0d d k f r e e b u i l de n v i r o n m e n t 进入d d k 编译器的d o s 窗口。使用d o s 命令“c d 一”进入刚 才所建立的工程文件夹中,键入b u i l d 命令,编译出可执行的驱动程序。如果编 译过程中发现错误,d o s 窗口会显示提示信息,指出发生错误的源代码文件以 江苏文学硕士学位论文 及错误语句的行号。根据此提示信息重新进入v c 6 0 开发环境改正相应的错误, 周而复始直至编译成功。编译成功后的可执行驱动程序存放在s o u r c e 文件中 t a r g a t p a t h 宏设定的位置。 4 4 4 驱动程序的安装和1 n f 文件【5 】【2 4 】 当w i n d o w s 发现有u s b 设备连接时,其设备管理器会把系统的所有i n f 文 件中的数据和该u s b 设备的设备信息或接口信息进行比较,以找到与之匹配的 i n f 文件。对于w i n d o w s 2 0 0 0 系统,其将设备驱动程序的i n f 文件信息存储到 系统所在分区中一个特定的文件夹w l n n t f i n f 中,并且将文件名改为“o e m ” w i n d o w s 系统从u s b 设备的固件中得到硬件i d 或者兼容i d 后,将利用这两个 文件中的信息来查找与该设备相匹配的i n f 文件,其处理过程一般如下: 首先,w i n d o w s 使用u s b 设备中设备描述符的供应商字段和产品字段( 即 i d v e n d e r 、i d p r o d u c t 、b e d d e v i c ) 来形成该设备的硬件i d ,并查找与该硬件i d 相匹配的i n f 文件。 而后,如果找不到,w i n d o w s 将使用接口描述符的类字段、子类字段和协议 字段( 即b i n t e r f a c e c l a s s 、b i n t e r f a c e s u b c l a s s 和b i n t e r f a c e p r o t o c 0 1 ) 来形成该设 备的兼容i d ,并查找与之相兼容的i n f 文件。 如果这样仍然找不到与设备相对应的驱动程序,w i n d o w s 将提供用户定位该 u s b 设备i n f 文件所在的目录,以便安装正确的设备驱动程序。 当本数据采集系统硬件首次插入p c 的u s b 接口时,由于系统中没有安装 其设备驱动程序;也无法找到兼容的驱动程序。所以系统会提示用户定位i n f 文件所在的目录,要求安装其设备驱动程序。安装了设备驱动程序后,再次插入 此设备时,系统将自动将设备驱动程序载入内存中。 有趣的是在i n f 文件中的必须包含的s i g n a t u r e 项,即驱动程序的数字签名。 一般对于w i n d o w s 9 8 下的驱动程序其数字签名为”$ c h i c a g o $ ”,对于 w i n d o w s 2 0 0 0 其数字签名为“$ w i n d o w s n t $ ”。正规的获取方式是对所编写的设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论