(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf_第1页
(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf_第2页
(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf_第3页
(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf_第4页
(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(光学工程专业论文)车辆及机械设备测控关键技术的研究与应用.pdf.pdf 免费下载

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

文档简介

重庆大学硕士学位论文 中文摘要 摘要 汽车的噪声和振动是影响汽车舒适性的主要因素,降噪减振是汽车设计和制造 中重要的课题。利用计算机辅助测试系统检测噪声振动信号是分析查找噪声和振动 源头的主要手段之一。w i n d o w s 操作系统因其界面友好、使用简单得到了广泛的使 用。以前的计算机辅助测试系统在w m d o w $ 操作系统环境下已不能满足要求。在新 环境下仍然有许多难点和疑点急待搞清和解决。 首先分析了普通应用程序在w i n d 0 w 89 8 操作系统中使用查询采样掉点以及 w i n d o w s2 0 0 0 不能访问硬件的原因和机理。深入的学习了使用d d k 编写w d m 的 w i n d o w s 驱动程序。通过驱动程序实现了查询采样和中断采样,对两种采样方式作 了详细的阐述。 扭矩和转速的测量可以采用计时法和数字计数法。计时法通过直接使用系统自 身的计数器8 2 5 4 和外部时钟对扭矩传感器产生的方波信号进行计时,得到扭矩和转 速值。数字计数法根据计算扭矩并不需要具体的时间值而是两个时间比值的原理, 采用数字脉冲计数求得扭矩值。并对两种方法的优缺点进行了比较,同时对数字计 数法的精度和误差进行了分析。 使用p c 机控制步进电机,在开环控制系统中比较常见。该文对在w i n d o w s 下 控制步进电机作了研究。在分析了步进电机频矩特性的基础上,编写了使用a d 卡 中的8 2 5 5 控制步进电机的软件。软件根据步进电机的特性和具体的负载计算出步进 电机加、减速步进频率和最高运行频率,然后通过驱动程序发出控制步进电机的脉 冲信号完成开环控制。 关键词:d d k ,驱动程序,数据采集,扭矩,转速,步进电机 重庆大学硕士学位论文 英文摘要 a b s t r a c t t h en o i s ea n dv i b r a t i o no fa u t o m o b i l ea r et h em a j o rf a c t o rt h a ti n f l u e n c e st h e c o m f o r to fa u t o m o b i l e r e d u c i n gn o i s ea n dv i b r a t i o ni so n eo ft h ei m p o r t a n ts u b j e c t si n d e s i g na n dm a n u f a c t u r e t h em e t h o dt h a tm e a s u r i n gs y s t e m sa i d e db yc o m p u t e ri su s e d t oc h e c ko u tt h es i g n a l so fn o i s ea n dv i b r a t i o ni so n eo fm a j o rm e t h o d st ol o c a t et h e s o a r c eo fn o i s ea n dv i b r a t i o n w i n d o w so p e r a t i n gs y s t e mh a v eg o t t e nt h ee x t e n s i v eu s e b e c a u s eo fh i sc l o s ef r i e n d l yi n t e r f a c ea n du s e t h eo l dm e a s u r i n gs y s t e ma i d e db y c o m p u t e r s c a n tb ea p p l i e dt ot h ew i n d o w s o p e r a t i o ns y s t e m t h e r ea r em a n yd i f f i c u l t i e s i nn e we n v i r o n m e n tt ob es o l v e d f i r s t l y , r e a s o na n dm e c h a n i s mo fl o s i n gd a t ai ns a m p l i n gu n d e rw i n d o w s 9 8 o p e r a t i n gs y s t e m w a s i n q u i r e d a sw e l la sh a r d w a r ec a l ln o tb ev i s i t e du n d e r w i n d o w s 2 0 0 0i nt h eo r d i n a r ya p p l i c a t i o n t h es t u d yo fc o m p i l i n gt h ew i n d o w s sw d m d r i v et h r o u g hd d kh a sb e e ng o n ed e e pi n t o q u e r ys a m p l i n ga n di n t e r r u p t s a m p l i n gh a v e b e e nr e a l i z e db yw a yo ft h ed r i v ep r o c e d u r e a n dt h et w ok i n d so fs a m p l i n gm e t h o d sa r e e x p o u n d e d d e t a i l e d t h em e a s u r e m e n tt o r s i o na n dr o t a t i n gs p e e dc a na d o p tt i m er e c k o n i n ga n dt h e n u m e r a lc o u n tl a w t h ec o u n t e r8 2 5 4o f t h es y s t e ma n dt h eo u t s i d ec l o c ka r eu s e dd i r e c t l y i nt h et i m er e c k o n i n gm e t h o dt or e c k o nt h et i m eo f s q u a r ew a v eg i v e i lr i s eb yt h et o r q u e s e n s o r t h et o r s i o na n dt h er o t a t i n gs p e e dv a l u ec a nb eg o t c e n t h en u m e r a lc o u n tl a wg e t t h ev a l u eo ft o r s i o nt h r o u g hn u m e r i cp u l s e sa c c o r d i n gt ot h ep r i n c i p l et h a tt h et o r s i o n v a l u eo b t a i n e dd o e sn o tn e e dc o n c r e t et i m es p a nb u tt h er a t i oo f t w ot i m es p a n s t h e nt h e m e r i ta n ds h o r t c o m i n go ft w ok i n d so fm e t h o d sh a v eb e e nc o m p a r e d ,a n dt h ep r e c i s i o n a n de r r o ro f t h en u m e r a lc o u n tl a wh a v eb e e na n a l y z e d i ti sf a i r l yc o m m o ni nt h eo p e n l o o pc o n t r o ls y s t e mt h a tp ci su s e dt oc o n t r o l s t e p p i n gm o t o r t h er e s e a r c hf o rc o n t r o l l i n gs t e p p i n gm o t o ru n d e rw i n d o w sh a sb e e n d o n e t h es o f t w a r ef o rc o n t r o l l i n gs t e p p i n gm o t o rh a sb e e nc o m p i l e di nt h ec h i p8 2 5 5o n a db o a r da f t e r a n a l y z i n gt h er e l a t i o n s h i po fs t e p p i n gm o t o rb e t w e e nt o r s i o na n d f r e q u e n c y t h es o f t w a r ef i g u r eo u tt h ef r e q u e n c yi n t h ep r o c e s s e so fa c c e l e r a t i o n , d e c e l e r a t i o na n da tt h eh i g h e s ts p e e da c c o r d i n gt h ep r o p e r t yo fs t e p p i n gm o t o ra n dt h e c o n c r e t el o a d ,t h e nt h ep u l s es i g n a l sa r es e n tt oc o n t r o lt h es t e p p i n gm o t o ra n dc o m p l e t e t h eo d e nl o o pc o n t r 0 1 k e y w o r d :d d kd r i v e r , d a t aa c q u i s i t i o n ,t o r s i o n , r o t a t i n gs p e e d ,s t e p p i n gm o t o r l i 重庆大学硕士论文 1 绪论 1 绪论 1 1 本课题研究的意义 汽车的噪声和振动是影响汽车舒适性的主要因素。 机动车辆的噪声对人们的工作生活、以及身心健康产生日益严重的影响,并成 为现代都市噪声的主要来源。为此,我国已于1 9 9 6 年颁布实施了环境噪声污染防 治法,要求从汽车及其配套设计、生产、销售等各个环节严格把关,从而降低噪声 带来的危害川。 汽车在行驶中始终处于振动状态,由于路面不平,车速和运动方向的改变,发 动机工作激励以及传统系统的不平衡质量,产生整车和局部的强烈振动。这些振动 严重影响汽车的平顺性、操作稳定性、结构耐久性和通过性【5 1 。 由于噪声、振动的危害性,降噪减振成为汽车设计和制造中重要的课题之一。 汽车的结构、传动系统、发动机等都可能是振动和噪声的源头,因此降噪减振首先 需要找到噪声源和振动源才能做到有的放矢。噪声和振动源的确定方法很多,其中 利用计算机辅助测试系统把噪声和振动等物理信号转变为电信号,然后通过时域分 析、频谱分析查找噪声和振动源头是主要手段之一。随着计算机的飞速发展和用户 的要求提高,以前的计算机辅助测试系统已经远远不能满足要求。雨在新的操作系 统环境下仍然有许多难点和疑点急待搞清和解决,为进一步的工作提供必要的支持。 1 2 计算机辅助测试系统”叫 计算机辅助测试系统( c o m p u t e r a i d e d t e s ts y s t e m ) 主要由微机( 台式或便携式) 、 a d 转换装置、信号预处理器、各类传感器、前置放大器、打印机和分析软件包组 成。其中,信号预处理器起滤波、放大、直流电平调整、转速整型和硬件解调等作 用;传感器把物理量转换为电量、a d 转换装置把模拟量转换为数字量;前置放大 器把微小量进行放大:分析软件包对采集信号进行分析、处理的作用,是系统的核 心部分,主要功能包括有:信号检测与采集、信号处理、瞬态分析、模态分析、离 线分析等五个部分。计算机辅助测试系统可以对振动、电量、噪声、应变应力、力、 温度、扭矩、转速等各种动态物理量进行数据采集和各种分析,获得信息的特征, 分析产生的原因,进而找出处理的对策。特别广泛应用于机械设备的状态监测和故 障诊断中,并取得了良好的效果。 1 3 计算机辅助测试系统的发展与现状“叭馏 1 9 6 7 年世界上第一台基于f f t 的动态信号分析仪问世,为动态信号分析技术在 重庆大学硕士论文 1 绪论 振动、冲击、噪声等领域的应用开辟了新纪元。3 0 年以来,动态信号分析经历了四 次浪潮,取得了飞速的发展。 第一次浪潮( 1 9 6 7 1 9 7 6 ) :首台f f t 分析仪问世,并成功应用于动态信号分析 和振动试验。1 9 6 7 年l o 月美国加州的t i m e d a t a 公司研制成功世界上第一台基于快 速傅立叶变换的f f t 分析仪。1 9 7 2 年又推出了基于小型计算机p d p i l 的1 9 2 3 型 f f t 分析仪。由于收购t i m e m a t a 公司的通用无线电公司未能理解f f t 的巨大潜力, 因而没能让这一技术在工业界得到推广应用。 同样位于加州的h p 公司由于一开始就得到了公司最高决策人的重视,于6 0 年 代后期推出了基于h p 小型计算机的h p 5 4 5 0 动态信号分析仪。随后,又于1 9 7 2 年 研制成功h p 5 4 5 1 ,并很快应用于飞机地面和飞行振动试验中。与此同时,该仪器 在振动台随机振动控制、振动模态分析和特征信号分析中获得巨大成功,形成了动 态信号分析技术的第一次浪潮。 第二次浪潮( 1 9 7 7 1 9 8 6 ) :大批独立仪器式f f t 分析仪涌现,并在振动、冲击、 噪声等工程领域得到广泛应用。在第一次浪潮中研制成功的f f t 分析仪大多以小型 计算机为基础,整个仪器系统体积庞大( 高近2 米) ,价格昂贵( 5 - 1 0 万美元) ,不 利于推广。于是有关厂家相继研制用c p u 芯片代替计算机的所谓独立仪器式 ( s t a n d a l o n g ) f f t 分析仪。获得广泛使用的主要型号有:i - i p 公司 h p 5 4 2 0 ,3 5 8 2 3 5 6 2 :s d 公司s d 3 7 5 3 8 0 :b & k 公司b k 2 0 3 1 2 0 3 2 2 0 3 4 2 0 3 5 ;小野 测器c f 91 0 9 2 0 9 3 0 。 在第二次浪潮中,不仅各种型号的f f r 分析仪大量涌现,而且性能普遍提高。 典型指标为:分析频率范围为0 - 5 0 k h z ,动态范围8 0 d b ,幅值精度0 2 d b 。动态 信号分析在振动、冲击与声学工程中获得广泛应用,除了常规的信号分析( 包括频 域中各种谱分析,瞬态信号和相关分析等时域分析,以及概率密度、概率分布等到 幅值域分析) 之外,还形成了振动模态分析、旋转机械特征分析、声压、声强分析 和振动台振动控制等四大领域。 第三次浪潮( 1 9 8 7 1 9 9 6 ) :多通道、高性能动态信号分析系统推出并广泛应用 于航空、航天、汽车、土木等复杂工程结构动态分析与设计,p c 仪器化使动态分析 与设计,p c 仪器化使动态信号分析在工业界进一步普及。为满足大型、复杂结构动 态测试的需要,以及高性能计算机工作站的出现,多通道动态信号分析系统应运而 生。这类系统的特点是由模块化“前端”完成数据采集和f f t 等信号分析,通过标 准总线与计算机相联,通过计算机进行测量、控制,以及二次信号处理和进一步分 析( 如振动模态分析) 。 h p 公司的h p 3 5 6 5 是第三次浪潮初期的典型而成功的多通道信号分析系统,该 系统的常规配置为1 6 6 4 通道。类似的有z o n i c 公司的7 0 0 0 系列系统,b & k 公司 重庆大学硕士论文 1 绪论 的3 5 5 0 3 5 5 1 ,d i f a 公司的c a t a s 系统等。随着p c 机的发展,出现了价格较低的、 p c 机加模块化前端构成的多通道动态分析系统,如h p 3 5 6 6 、国产d a t a 一8 、h p 公 司的e 1 4 3 2 数字测试系统、b k 3 5 6 0 p u l s e 多分析仪系统等。新一代系统将多通道 和多功能较完善地结合起来,使一套系统同时具有数据采集、记录、振动冲击分析、 声压声强测试以及旋转机械分析等各种功能。、 p c 机性能的提高引发了测试仪器领域的一场革命性变化,即产生了插卡式加软 件的所谓虚拟仪器。典型的有c s iw a v e t e k ,d p 4 2 0 ,s d 3 9 0 ,o r 2 5 ,d s p s i 西a b 等等。其中基于笔记本式p c 的f f t 分析仪由于体积小、重量轻,便于外场使用而 尤其受到欢迎,并很快在工业界普及、推广。 在第三次浪潮中,硬件式f f t 分析仪也有新发展,基本指标进一步提高,如普 遍采用1 6 位a d c ,动态范围达到9 0 d b 。另一特点是向综合化发展,增加多种功能 模块。在同一台仪器上除了常规时、频域信号分析外,还能实现倍频程声学分析、 声强测试分析和阶比跟踪旋转机械动态分析等。典型的仪器有h p 3 5 6 7 0 , b i 8 ) ; o u t p ( o x e f 5 ,c t c l & 0 x f f ) ; _ o u t p ( o x 2 f 5 ,e t c l 8 ) ; ) v o i dc a d t r a n s f o r m :s e t c h a n n e l ( i n t e 1 )设置通道号 _ o u t p ( 0 x 2 e 4 ,c h a n n e l ) ; ) 在进行查询采样时,要不断的询问状态端口检查a d 转换是否完成 v o i dc a d t r a n s f o r m :w a i t a d ( i n tt e s t )膳环等待 w h i l e ( ( a d _ e _ a 1 0 t c s t ) 幻) ; ) 6 重庆大学硕士论文 2 使用应用程序进行查询采样及其问题 i n tc a d t r a n s f o r m :a d _ e _ a 10 i e t l 1 r n _ i n p ( 0 x 2 e 2 ) ; 访问状态端口 ) 当a d 转换完成之后,马上从数据端口读出采样值 i n tc a d t r a n s f o r m :t a k e a d ( ) ,读出采样值 i n tn v m u e = j n p w ( 0 x 2 e 0 ) ; r e t u r nn v 甜u e ; ) 应用该采样程序,在w m d o w s9 8 下确实实现了采样。经反复的实验,在同样采 集5 1 2 点和相同采样频率的情况下,得到了图2 2 的两种情况( a ) 、( b ) 。 ( a ) 图2 - 2 采样图 f i g 2 - 2t h es a m p l i n gf i g u r e s 对比曲线a 和曲线b 可以看出,a 的正弦曲线光滑连续,b 在一处明显不连续。 说明曲线b 掉了点。在同样条件下经多次采样发现,掉点的位置和次数都不相同, 说明有一个随机事件在影响着我们的查询采样。而这一事件正是时钟中断。时钟中 断是操作系统固有的,在d o s 下同样存在时钟中断。解决这一问题的方法就是关 重庆大学硕士论文 2 使用应用程序进行查询采样及其问题 闭包括时钟中断在内的所有中断。在应用程序中加入关中断的语句,让其在w i n d o w s 2 0 0 0 下运行会出现下面的错误提示框。 图2 - 3 在w i n2 0 0 0f 的错误警告框 f i 醇- 3t h ef r a m ef o rw a r n i n gi nw i n2 0 0 0 查阅了w m3 2 错误代码表,发现0 x c 0 0 0 0 0 9 6 是一个称为 s t a n ,sp r j v i l e g e di n s t r u c l r l 0 n 的错误。也就是在应用程序中使用了不允许 在应用程序中调用的特权函数。去掉_ i n p 和_ o u t p 等函数后,就不会出现运行错误, 这说明i n p 和 就是这样的特权函数。已经从9 8 发展到了,_outp w m d o w s2 0 0 0 w i n 2 0 0 0 的特点是安全稳定。在工控机中,安全性和稳定性是第一位的。所以有必 要搞清出现这种情况的原因。 2 3 出错原因 查阅了大量资料,发现出现特权指令错误有两个原因。下面就出现问题的两个 原因进行具体分析。 2 3 1 处理器的原因明 3 8 6 以上的微处理器有一个寄存器称为标志寄存器( e f l a g s ) ,其中有一个 i o p l 字段用来标志i o 的特权等级。该字段包含两位表示o 3 级4 个i o 特权级。 操作系统可以为每个任务指定一个i 0 特权级,存放在各任务的标志寄存器副本的 i o p l 字段中。与i o 操作有关的指令( 如玳、o u t 、i n s 、o u t s 等) 只有在其当 前特权级高于指定的i o 特权级( 即c p l i o p l ) 时才允许执行。例如在典型的保 护环境下,将i o p l 设置为1 ,这样只有特权级为0 和1 的操作系统和设备驱动程序 才能实现y o 操作,而特权级为3 和2 的应用程序则不允许进行y o 操作。应用程 序要访问i o 地址空间必须通过操作系统和特权级较高的设备驱动程序来进行。 2 3 2 操作系统的原因伽。1 3 从上面的分析可以看出,处理器为我们提供了进行特权指令的硬件基础。 重庆大学硕士论文2 使用应用程序进行查询采样及其问题 w i n d o w s 的操作系统又是怎样的利用这一处理器的特点的呢? w 访d o w s 操作系统是一个多任务的操作系统。在多任务的环境中,有许多的事 情不允许应用程序去做。因此w i n d o w s 就利用硬件强制的特权检查机制来保护系统 完整性。为了避免硬件的依赖性,w i n d o w s 使用一个简化的模型描述硬件特权级。 如果微处理器要支持w i n d o w s 硬件特权模型,它必须能够以用户模式或内核模式运 行。 w i n d o w s 操作系统分为用户模式和内核模式两层。在内核和用户模式下都可以 运行程序。区别在于用户模式是不被操作系统所信任的并且限制了特权行为,而内 核模式是被完全信任的可以进行所有的操作。下图是应用程序要进行硬件访问的流 程图。 用户模式 应用程序 w i n 3 2 子系统 a p i 调用 系统服务接口 内核模 i o 管理器 设备驱动程序 设备 传给分发例程 的i p , p i a l 调用 与平台有关的 操作 图2 4 硬件访问流程图 f i g 2 - - 4t h ef i g u r eo f m a n i p u l a t i n gh a r d w a r e s 一个用户模式下的程序需要从一个设备上读出数据,那么它调用r e a d f i l e 这样 的a p i 函数。在w i n3 2 子系统中执行该a p i 函数,并且调用某些与平台有关的系 统服务函数以进入内核。进入内核后,由i o 管理器创建一个被称为i o 请求数据 包( i r p ) 的数据结构,这些数据包将被传递到设备驱动程序。就r e a d f i l e 函数来 说,创建了一个含有i r p m j r e a d 的主功能代码的i r p 。然后驱动程序去访问实 9 重庆人学硕士论文 2 使用应用程序进行查词采样及其问题 际的硬件来执行读操作,其中硬件可以是i o 端口或者是寄存器。在驱动程序完成 了i 0 操作以后,驱动程序调用特定的内核服务例程来完成读请求的冲。接着等 待的应用程序就可以继续执行下去了。 2 3 3 解决方法 从以上出错的原因可以看出,应用程序要对硬件进行操作必须遵循一定的规则。 如果不遵循这一规则,则被操作系统认为是破坏系统的安全和稳定性而不予支持。 因此就出现了有关特权指令的错误。 在进行“读”硬件的流程中,驱动程序起着关键的作用,一切对硬件的操作都 是在驱动程序中执行的。对于象打印机的这种资源,在操作系统中被称为临界资源。 如果不对其使用进行控制,很容易出现多个进程进行竞争访问,从而导致系统速度 变慢,甚至造成死锁直至系统崩溃p 目。在内核中用驱动程序访问硬件能有效的避免 竞争访问和死锁。在用户模式下的应用程序就可以不考虑这些可能造成严重后果的 问题。 综上所述,我们需要在w m d o w s 下对a d 卡开发驱动程序,让应用程序通过驱 动程序对a d 卡进行操作。 下面几章就针对驱动程序的开发和应用进行详细的讨论。 重庆大学硕士论文 3 d d k 一驱动程序开发工具简介 3 d d k 一驱动程序开发工具简介 3 1 驱动程序开发工具的选择瞳们腔” 目前,用于开发设备驱动程序的工具比较多,如m i c r o s o f t 公司的d d k ,v i r e o s o f t w a r e 公司的v t o o l s d 以及强t e c h 公司的w i n d r i v e r 等都是非常好的驱动程序 开发工具包。 v t o o l s d 包括一个可视化的v x d 代码生成器q u i c kv x d 、可加载和卸载v x d 的 工具v x d l o a d ,可给出系统以加载信息的v x d v i e w ,以及a n s i 运行库、v m m v x d 服务库、v x d 的c + 斗类库。此外,v t o o l s d 还为刚接触它的新手提供了大量的c 或 c + 斗例程。v t o o l s d 的基本编程方法是:运行v t o o l s d 的代码生成器q u i c k v x d 程序 生成v x d 框架,在v c + + 或b o r l a n dc + + 中打开此框架的工程文件,并写进特定的 处理代码,编译后即可得到需要的v x d 程序。 m i c r o s o f t 公司提供的d d k ( d r i v e r d e v e l o p m e n tk i t ) 中有许多工具、函数及实 例,还有详细的开发文档,使用起来比较方便。尤其在w d m ( w m d o w s 驱动程序 模型) 出现以后,使用d d k 开发驱动程序变得更加简化。w m d o w s9 x 和w i n d o w s n t 采用的驱动程序体系不同,所以大多数情况下驱动程序不能在这两种体系的操 作系统中通用,如果需要在w i n d o w s 9 x n t 下使用,一般需要设计w i n d o w s9 x 和 w m d o w sn t 的两个驱动程序版本。但是利用w d m 就可以开发出适用于两种体系 的操作系统的驱动程序。从长远来看,今后只要使用d d k 开发w d m 驱动程序就 行了。 比较了两种开发工具,决定选用d d k 作为开发工具。 3 2d d k 的基本原理2 羽 3 2 1 设备驱动程序的组成 一个驱动程序可以做下面的工作: 初始化它自己 创建和删除设备 处理w i n 3 2 打开和关闭文件句柄的请求 处理w i n 3 2 输入愉出( i o ) 请求 串行化对设备的访问 访问硬件 重庆大学硕士论文3d d k 一驱动程序开发工具简介 调用其他驱动程序 取消i o 请求 超时i o 请求 处理一个可热插拔的设备被加入或删除的情况 处理电源管理请求 使用w i n d o w sm a n a g e m e n ti n s t r u m e n t a t i o n ( w i n d o w s 管理诊断,w m i ) 和n t 事件向系统管理员报告 下面简要的介绍其中比较重要的几个部分。 3 2 2 驱动程序的初始化 严格的说,驱动程序只有“初始化”是不可缺少的部分。 驱动程序有个主要的初始化入口点,一个必须称为d r i v e r e n t r y 的例程。当 驱动程序被装入时,内核调用d r i v e r e n t r y 例程。一个指向驱动程序对象的指针和 指向一个包含驱动程序的注册表路径代码串的指针被作为参数在它的d r i v e r e n t r y 入口点处传递给驱动程序。在d r i v e r e n t r y 处理过程中,驱动程序执行内部初始化, 查找和初始化它将要控制的硬件。 如果i o 管理器对d r i v e r e n t r y 调用时,驱动程序将一个错误状态返回,驱动 程序就会从系统中卸载,并且t o 管理器不再进一步引用驱动程序。如果从 d r i v e r e n t r y 成功返回,根据用户的请求,i 0 管理器开始以i r p 的形式将i l o 请求 传递给驱动程序。下表是d r i v e r e n t r y 入口点的原型。 表3 - ld r i v e r e n t r y 入口点 t a b l e 3 一lt h ed r i v e re n t r y 3 2 3 创建设备 创建设备可以在两个时候做,要么在d r i v e r e n t r y 例程中,要么在即插即用( p n p ) 管理器让我们这样做的时候创建设备。在执行过程中,当驱动程序卸载或者在p i l p 1 2 重庆大学硕士论文3d d k 一驱动程序开发工具简介 管理器告诉设备已经被删除时,我们要删除这些设备对象。 大多数的w d m 设备对象都是在p n p 管理器调用a d d d e v i c e 入口点时创建的。 这个例程是在插入新设备和安装i n f 文件指示这个驱动程序要运行时被调用的。在 a d d d e v i c e 例程中,驱动程序使用i o c r e a t e d e v i c e ( ) 函数创建设备对象。表3 2 给 出了它的原型。在此之后,系列的p i l pi r p 被发送到驱动程序,指示设备应何时 启动和查询它的功能。最后,一个“删除设备”p n p i r p 指示设备进行删除。 表3 - 2l o c r e a t e d e v i c e 函数原型 t a b l e 3 - 2t h ep r o t y p eo f i o c r e a t e d e v i c e 那么应用程序怎么知道哪些设备存在呢? 我们必须为每个设备对象创建w m 3 2 可见的符号链接。有两个创建这些符号链接的技术。第一个技术是使用显式的“硬 编码”符号链接名,应用程序必须把设备名硬编码到源代码中。另外一个技术是使 用设备接口,每个设备接口由一个全局唯一标识符( g u i d ) 标识。把设备注册为 有一个特定的设备接口就创建了一个符号链接。用户态程序可以搜索有特定g u i d 的所有设备。 重庆大学硕士论文 3d d k 驱动程序开发工具简介 3 2 4 处理w i n 3 2 请求 表3 3 列出了用于访问设备的最常用的一些w i n 3 2 函数。对设备的一个 c r e a t e f i l e 调用最终转换为一个“创建”i r p ,它是一个主功能代码为 i r pm jc r e a t e 的i o 请求包。处理这个i r p 的驱动程序例程可以是任何名字, 但我对“创建”1 r p 处理程序使用通用的名字c r e a t e 。在我的驱动程序中,通常在 这个名字前加一个短的名字或缩写词。a d c a r d 设备驱动程序的“创建”i r p 处理程 序的名字是a d c a r d c r e a t e 。i r p 也可以由w i n d o w s 以应用程序的名义发出,例如, 如果一个应用程序异常终止,操作系统会对每个文件发出一个i r pm ,c l o s e 关 闭任何打开的文件。 一个驱动程序不必处理所有这些请求,但至少需要处理“创建”和“关闭”这 两个i r p 。驱动程序的d r i v e r e n t r y 例程设置合法的入口点。如果不设置一个入1 2 1 点, 则i o 管理器就不能处理w i n 3 2 请求。 d r i v e r e n t r y 中的下面这一行设置a d c a r d r e a d 例程为r e a di r p 的处理程序。 d r i v e r o b j e c t - m a j o r f u n c t i o n i r pm j r e a d 】_ a d c a r d r e a d ; 表3 3 常见的w m 3 2 请求函数及其分发例程 3 2 5 调用其他驱动程序 w m d o w s 使用分层的驱动程序模型处理i o 请求。在这个模型中,驱动程序被 组织到堆中。如果有的话,堆栈中的每个驱动程序负责处理它能够处理的请求的一 部分。如果驱动程序对请求进行了处理并导致它的完成,驱动程序就会调用函数 i o c o m p l e t e r e q u e s t ( ) 完成这个请求。如果无法完成,就会设置堆栈中下一个较低 等级的驱动程序的信息,然后把请求传递给这个驱动程序进行处理。为了将i r p 传 递给另一个驱动程序,驱动程序必须为这个将要传递到底层驱动程序的请求设置下 一个i o 的堆栈位置。驱动程序调用i o g e t n e x t l r p s t a c k l o c a t i o n ( ) 函数获得指向 下一个f o 堆栈位置的指针。使用这个指针,驱动程序添入需要传递到次低等级驱 1 4 重庆大学硕士论文 3 d d l 0 一驱动程序开发工具简介 动程序的请求参数。这个请求然后通过调用i o c a l l d r i v e r ( ) ,被传递给一个特定的 较低等级驱动程序。这个函数如表3 _ 4 所示。 表3 _ 4l o c a l l d r i v e r 函数原型 3 2 6 电源管理 如果一个设备的功率损耗可以控制,那么它的驱动程序应该支持w i n d o w s9 8 和w i n d o w s2 0 0 0 中的电源管理。这适用于w d m 和n t 式设备驱动程序。电源管理 节省便携机中的电池电能,并减少台式机中的功率损耗和磨损。相反,一些人让系 统一直休眠,使得它能很快再次启动。 电源管理可以发生在系统范围内,或者发生在设备特定的范围内。电源管理可 以请求整个系统关闭。有6 个系统电源状态,除了完全开启和完全关闭状态外,还 有2 个睡眠状态。一个设备可以关闭它自己,即使系统的其余部分正全速运行。 驱动程序通过处理“电源”i r p 来支持电源管理功能。一些驱动程序只是把“电 源”i r p 向设备栈下面传递。但是,我们的驱动程序可能是唯一知道如何改变设备 电源使用的驱动程序,所以必须正确支持“电源”i r p 。 3 2 7 串行化硬件的访问 访问硬件的任何设备必须使用某种机制保证驱动程序的不同部分不同时访问相 同的硬件。在一个多处理器系统中,“写”i r p 处理程序可以同时在两个不同的处理 器上运行。如果它们两个都试图访问硬件,则会出现不可预测的结果。同样,如果 在一个“写”i r p 正试图访问硬件的同时发生了一个中断,那么这两个任务都可能 发生严重的错误。 有两个不同的机制用于排除这些冲突源。第一个机制是临界段例程,使用这些 临界段例程保证代码不会被中断处理程序中断,即使在另一个处理器上。 第二个技术是使用s t a r t l o 例程串行处理i r p 。每个设备对象有一个内部的i r p 队列,驱动程序的分发例程把i r p 插入这个设备队列中。内核i o 管理器从这个队 列一个个的取出i r p ,并把它们传递到驱动程序的s t a r t l o 例程。所以s t a r t i o 例程 重庆大学硕士论文 3 d d l 0 一驱动程序开发工具简介 串行化处理i r p ,保证不与其他i r p 处理程序冲突。s t a r t l o 例程仍需要临界段例程 避免与硬件中断的冲突。下表是s t a r t i o 入口点的原型。 表3 - 5s t a r t l o 入口点 t a b l e 3 - 5t h ee n t r yt os t a r t l o ni s l a n j s s t a r t l o ( i np d e v i c e _ o b j e c td e v i c e o b j e c t , i np i r pi r p ) ; d e v i c e o b j e c t :一个指向驱动程序创建的设各对象的指针,i 0 请求在这个设备对象上 被执行。 t r d :一个指向i o 请求包的指针,这个请求包描述将要执行的i o 操作。 w h e nc a l l e d :用系统排队在驱动程序中启动一个i o 请求。 c o n t e x t :任意 i r q l :d i s p a t c h _ l e v e l 如果在任何队列中保存一个i r p ,在用户线程突然终止或则它调用w n 3 2 函数 c a n c e l l o 时,必须准备好取消这个i r p 。这可以通过给排队的每个i r p 挂接一个取 消回调例程来实现。取消i r p 是很麻烦的,因为必须考虑i r p 已从队列取出并正在 s t a r t l o 例程中处理的情况。 如果用户态应用程序关闭设备的文件句柄,而这个设备有重叠请求在等待,则 必须处理“清理”i r p 。“清理”i r p 要求取消与一个文件旬柄的所有i r p 。 3 2 8 硬件资源分配与访问以及硬件问题 底层的驱动程序需要知道为它们分配了哪些硬件资源。最常见的硬件资源是i o 端口、存储器地址、中断和d m a 线。处理p 1 1 pi r p 的w d m 驱动程序在收到“启 动设备”p n pi r p 时被告知设备的资源。 一旦获得了i o 端口或内存的地址,读写硬件寄存器等的工作就变得非常直接。 访问硬件不要占用处理器超过5 0 1 ts 的时间。如果需要对硬件长时间的访问,考虑 使用系统线程或者工作者线程。 中断的处理要稍微复杂些,需要注册中断服务例程。这必须检查自己的设备是 否引起这个中断,并尽可能快地处理这个中断。但是,这也是问题的复杂陛之所在。 让中断处理程序调用大多数的内核函数是不安全的。如果一个中断指出“写”请求 的最后一部分已经完成,那么可能想告诉i o 管理器我们已经完成了这个i r p 的处 理。但是,中断处理程序不能做这个工作,而必须要求驱动程序的延迟过程调用( d p c ) 例程运行。d p c 例程可以使用大多数的内核函数,所以让它进行完成i r p 等工作。 重庆大学硕士论文 3 d d k 一驱动程序开发工具简介 一些驱动程序必须设置设备和内存之间大量数据的直接存储器访问( d m a ) 传输。 d m a 通常是使用共享的系统d m a 控制器实现,但一些设备有内置的总线管理功能并 允许它们自己使用d m a 。 硬件在运行当中注定要出错。所以要能够预知产生硬件问题的常见方式:中断 不能到达,缓冲区过载,打印机缺纸和电缆断开。其中的一些问题是与时间有关的。 必须尽可能地保证,驱动程序在所有时候能够可用于处理快速的i o 事件。一定要 检查所有的硬件状态位( 如缺纸指示) 。而且,保证一个合法的错误消息送回到用户 态应用程序。如果出错,一定要实现超时重传。i 0 管理器提供一个容易的方法检 查1 秒为单位的超时。并且实现更小间隔的定时器也是很容易的。如果在几次重试 后传输仍失败,必须终止这个i r p 并指示合适的错误。 3 3 构造驱动程序帅1 有了源程序之后,就需要进行编译生成驱动程序。下面就生成驱动程序的需要 的主要工具和主要步骤进行简要的介绍。 3 3 1 b u i l d 实用程序m 1 d d kb u l i d 命令行实用程序是构造驱动程序的主要工具,它使用正确的编译器 和链接程序设置调用n m a k e 实用程序来构造驱动程序。图3 1 给出了它的工作过程。 图3 - ib u i l d 实用程序的工作过程 f i g 3 - 1t h ew o r k i n gp r o c e d u r eo f b u i l dp r o g r a m b u i l d 自身实际上是个相当简单的软件,构造过程的大部分工作由b u i l d 传递给 n i , a k e 的一组标准命令文件控制,这些文件包含有一个b u i l d 产品需要的所有平台 特定的规则和选项设置。 重庆大学硕士论文 3d d k 一驱动程序开发丁具简介 3 3 2 构造驱动程序的步骤0 2 1 一旦准备好了源代码,执行以下步骤生成驱动程序。 在放有驱动程序代码的目录中,创建一个叫做s o u r c e s 的文件,标识最终 驱动程序的组件。 在同一个目录中,创建文件m a k b f i l e ,它只含有下面这一行: ! i n c l u d e $ ( n t m a k i e e n v ) m a k b f i l e d e f 使用文件管理嚣或m k d i r 建立b u i l d 产品的目录树。 在文件管理器的d d k 组中,双击c h e c k e db u i

温馨提示

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

评论

0/150

提交评论