(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf_第1页
(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf_第2页
(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf_第3页
(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf_第4页
(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机软件与理论专业论文)警戒雷达终端系统软件设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 雷达终端是雷达系统的重要组成部分,通过该终端系统,操作员可以获得雷 达监视区域的情况,并且可以对雷达进行控制,所以该终端要能直观、准确的显 示信息并且易于操作。但是由于早期的雷达终端主要采用模拟技术的方式显示雷 达原始图像,很难达到以上的要求。 随着计算机技术、图像处理技术和软件技术的发展,将通用计算机作为雷达 终端已经成为一种新的趋势。计算机能够非常灵活的在数字域完成数据处理工作, 计算机图像处理技术和强大的计算机软件为设计雷达终端带来了极大方便,同时, 显控终端的软件化也使整个系统的兼容性和可扩充性更强,为雷达终端的发展提 供了新的途径。 本文介绍了在w i n d o w s 2 0 0 0 环境下以通用计算机作为终端,以v i s u a l c + + 6 o + m f c 作为开发工具的警戒雷达终端系统软件的设计和实现。 首先介绍了p c i 总线的规范,并且以w i n d r i v e r 和v i s u a lc + + 为工具,阐述了 p c i 驱动程序的开发过程;其次介绍了如何用w i n d o w s a p i 在v i s u a lc + + 下编写多 线程串口通信程序,之后介绍了组件式g i s 的技术基础和特点,比较了各种平台 下g i s 的开发,并且阐述了以m a p x 作为g i s 开发平台在本项目中的应用情况; 最后借助m f c 的强大的文档视图机制和w i n d o w s 消息映射机制,可以很方便的绘 制目标信息,设计出友好的人机界面。 关键字:雷达终端p c i 总线g i s 设备驱动程序多线程串行通信 a b s t r a c t a b s tr a c t r a d a r dt e r m i n a li so n eo ft h ei m p o r t a n tp a r t so fr a d a rs y s t e m ,t h eo p e r a t o r sc a l lg a i n t h ec i r c u m s t a n c eo ft h eg u a r d e dr e g i o na n dc o n t r o lt h er a d a rb yt h et e r m i n a l ,s oi tm u s t d i s p l a yt a r g e t si n f o r m a t i o n 谢t l lv i s u a l ,a c c u r a t em o d ea n db ee a s yt oo p e r a t e t h ee a r l y r a d a rt e r m i n a ld i s p l a y st h er a d a ro r i g i n a lv i d e o 谢t l ls i m u l a t i o nt e c h n i q u e ,s oi tc a nn o t b em e e tt ot h en e e d s w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rt e c h n o l o g y , i m a g ep r o c e s s i n gt e c h n o l o g y a n ds o f t w a r et e c h n o l o g y , i th a sb e c o m ean e wt r e n dt ot a k eg e n e r a lp u r p o s ec o m p m e r s a sr a d a rt e r m i n a l s c o m p u t e r sc a np r o c e s sd i g i t a ld a t af l e x i b l y , a n di m a g ep r o c e s s i n g t e c h n o l o g ya n dc o m p m e rs o f t w a r ew i ms t r o n gf u n c t i o nc a nm a k ed e s i g no fr a d a r t e r m i n a lm o r ee x p e d i e n t l y m e a n w h i l e ,d e s i g n i n gr a d a rt e r m i n a lw i t hs o f t w a r e s t r e n g t h e nr a d a rs y s t e m sc o m p a t i b i l i t ya n de x t e n s i b l ew h i c hp r o v i d ean e ww a yf o r r a d a rt e r m i n a l sd e v e l o p m e n t t h ep a p e rd i s c u s s e st h ed e s i g na n di m p l e m e n t a t i o no fg u a r d i n gr a d a rt e r m i n a l s o f t w a r ew h i c ht a k e sg e n e r a lp u r p o s ec o m p u t e r sa sr a d a rt e r m a i n a li nw i n d o w s2 0 0 0 e n v i r o n m e n ta n du s e sv c + + 6 0a n dm f ca sd e v e l o p m e n tt o o l s f i r s t l y , t h ep a p e rp r e s e n t st h ep c ib u sc r i t e r i o na n dd i s c u s s e st h ep c id r i v e rp r o g r a m d e s i g nb yw i n d r i v e ra n dv i s u a lc + + ;s e c o n d l y , w ei n t r o d u c eh o wt oc o m p l es e r i a l c o m m u n i c a t i o np r o g r a mw i t hw i n d o w sa p ii nv i s u a lc + + c o n d i t i o n s ;t h i r d l y , t h ep a p e r c o m p a r e ss e v e r a la p p l i c a t i o np l a t f o r mo fg i sa n dd e t e r m i n e st oa d o p tm a p xa s d e v e l o p m e n tp l a t f o r mi nt h i ss y s t e m ;f i n a l l y , w i t ht h eh e l po fm f c sd o c u m e n t v i e w m e c h a n i s ma n dw i n d o w sm e s s a g em a p p i n g ,i ti se a s yt od i s p l a yt h et a r g e ta n dd e s i g na f r i e n d l yi n t e r f a c e k e y w o r d s : r a d a rt e r m i n a lp c ib u sg i sd e v i c ed r i v e r m u l t i t h r e a d i n g s e r i a lc o m m u n i c a t i o n 学位论文创新性声明 秉承学校严谨的学风和优良的科学道德,本人声明所呈交的论文是我个人在 导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标 注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成 果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的 材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说 明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切的法律责任。 本人签名:么刍盆 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密,在年解密后适用本授权书。 日期2 丛盘:厶2 日期跏伊。t 。7 第一章绪论 第一章绪论 1 1 研究背景 在现代社会雷达已广泛的应用于地面、空中、海上和太空。地面雷达主要用 来对飞机和太空目标进行探测、定位、和跟踪;船上雷达除探测空中和海面目标 外、还可以作为导航工具;机载雷达除要探测空中、地面或海面目标外,还可用 作大地测绘、地形回避及导航之用;在宇宙飞行中,雷达可用来控制宇宙飞船的 飞行和降落,等等。 不管雷达应用到哪方面,都需要一个终端系统,其基本任务是发现目标、跟 踪监视目标的运动规律和监视雷达系统的运动状态,有时还需要根据回波特点及 其变化规律来判别目标的性质,供指挥员全面的掌握空情,同时,终端中还提供 了许多操作方式,按这些方式指挥员可以控制雷达的状态、设置参数等。 早期的雷达终端显示器主要采用模拟技术来显示雷达原始图像,这种方式设 计复杂、费用高、可移植性差、显示信息难以满足信息扩充的要求,并且难以保 存历史数据和重演目标历史状态。随着电子技术以及软件技术的飞速,现在可以 采用通用微机进行数字化雷达终端的设计,简化开发、节约成本、还方便系统的 再升级和有效数据的保存。这样又出现另一个误区,即完全用软件显示目标信息 ( 如目标回波信息) ,这会带来以下问题,由于目标的回波信息可能会很杂乱、很 繁多,若纯粹用软件绘制,一个是速度跟不上,终端响应迟缓;另一个是使用户 有一种被“隐瞒”的感觉,因为此时显示的回波信息是被软件处理过的信息,而 不是真是的原始信息。 为了解决以上的问题,本文在使用通用p c 开发雷达终端时提出了用f p g a 实 现目标的回波、余辉、拖尾等一次显示信息,而用软件绘n - - 次显示信息。这样 即改善了图像显示效果又提高了软件的兼容性。 1 2 主要工作 本课题主要来源于某部地面警戒雷达,主要完成该警戒雷达终端系统软件的 设计和实现,具体完成的工作如下: 1 完成w i n d o w s2 0 0 0 下p c i 卡的驱动程序,提供访问硬件接口,实现对一 次视频的控制; 2 运用v i s u a lc + + 6 0 和m f c 实现雷达终端软件,主要有以下工作: 2警戒雷达终端系统软件设计与实现 ( 1 ) 利用m f c 的视图文档结构,构建雷达终端的主体界面:将整个终端按功 能分为六部分; ( 2 ) 采用面向对象技术编写多线程串口程序,实现显示板与雷达录取板和接 口板的通信; ( 3 ) 引入m a p x 控件,将电子地图嵌入到雷达扫描区域,并实现目标在电子 地图上的产生和位置动态改变; ( 4 ) 提供鼠标、键盘、鼠标和键盘等多种操作方式,以备指挥员更便利得控 制各种设备; ( 5 ) 通过继承和重写控件完成操作的简便和显示效果的美观; ( 6 ) 以图形和数据列表不同方式显示航迹信息、区域信息和干扰信息等; ( 7 ) 在扫描区实现绘制人工作图、区域、干扰区域等功能; ( 8 ) 实现目标信息在不同显示方式下的切换以及用内存位图改善视图显示效 果。 3 在仿真状态下对雷达终端的三大功能:目标跟踪功能、命令控制功能及航 迹事后重放功能进行测试。 1 3 论文安排 论文的结构安排如下: 第一章:绪论部分介绍了本课题研究的背景以及涉及到的主要工作; 第二章:概括的介绍了接口板、录取板和显示板的主要功能,并且对显示板 的各个功能模块进行了简单的说明; 第三章:介绍了p c i 总线的特点以及p c i 9 0 5 2 芯片,最后运用w i n d r i v e r 驱动 开发工具开发p c i 卡的驱动程序; 第四章:主要介绍了串行通信的一些知识,自定义了多线程串口类完成串口 通信; 第五章:概括介绍了g i s 的基本知识,利用m a p x 组件开发了嵌入雷达扫描 区的电子地图程序; 第六章:通过对雷达界面的多种显示方式分析,提出了运用坐标映射的来简 化目标图像在各个显示方式之间的切换。最后用内存位图的方式改善了图像在高 刷新频率下的显示效果; 第七章:在仿真运行状态下,对雷达终端的各个功能进行测试。 第二章系统结构 第二章系统结构 2 1 系统的硬件组成 根据对雷达终端提出的快速、真实、方便、移植性好等等特点,在整个雷达 系统中,对雷达数据进行分阶段分功能处理,首先,设计接口板用来连接雷达, 有两种雷达数据接入方式,一种是实际雷达回波信号,另一种是产生的模拟雷达 回波信号,两种信号通过一个二选一的开关来控制。其次,设计了录取板,该板 接受接口板的信号,运行雷达录取程序,对雷达目标进行算法上的录取操作。最 后是显示板程序,显示接口板传来的回波信号和二次目标信号及其他辅助信心。 这三部分都为独立的模块来对雷达信号进行不同的处理,它们都拥有自己的处理 器,可独立运行。如同2 1 系统组成框图 视频回波信号。 接 一方位信号 。 r 显 线方位信号 。 口 显示同步信号。 控 显 板吼达视频信号。 一 g p s 。板 刁 器 串口通信 1,r1 。申u 通伍 录取板 图2 1 系统组成框图 1 接口板由嵌入式p c + f p g a 来实现功能,主要功能包括: ( 1 ) 接收来自雷达的模拟视频、一位数字视频等并进行相应的处理,传送给 录取板; ( 2 ) 接收来自雷达的模拟天线方位信息,经过轴角变换成串行数字方位信号, 传送给录取板、显示板和雷达信号处理分机; ( 3 ) 产生仿真工作下的模拟目标视频,触发脉冲和方位信号; ( 4 ) 根据显示模块、录取模块提供的命令和目标数据,完成上报、码声、询 问配对等目标。 2 录取板也是由嵌入式p c + f p g a 来实现功能,主要功能包括: ( 1 ) 接收接口板传送过来的模拟视频、一次数字视频、脉冲和串行方位信号; ( 2 ) 对模拟视频进行a d 变换和实时信号处理,包括动态杂波形成、静态 4 警戒雷达终端系统软件设计与实现 目标的对消,完成目标点迹检测录取; ( 3 ) 接收来自显示板的人工干预命令和手录数据,实现全平面或分区域对多批 目标的手动、半自动或自动录取; ( 4 ) 完成航迹的相关、平滑及外推等航迹处理与跟踪功能。 3 显控终端是整个系统的指挥中心,为了提高其通用性,采用普通p c + f p g a 来实现其功能,其中用f p g a 处理雷达的原始视频使其按照特定的显示方式生成 x y 坐标系的视频数据并存储到帧存储器中,并将图象数据输出。在普通p c 上开 发显控软件,绘制相应的二次视频,建立与接口板和录取板的通信,开发p c i 驱 动程序用来控制f p g a 产生的一次视频,对雷达目标信息进行管理,存储,以备 后期对目标点的重放,最后引入电子地图,使目标能更生动、更形象的在雷达扫 描区内显示出来。 在这三个模块中,显示终端是涉及内容最多,也是本人工作的重点。该系统中是 在普通p c 上开发的显控软件,下面将详细介绍显控终端的主要功能模块。 2 2 显示板的主要功能模块 根据显示终端要完成的任务以及所提出的要求,该系统主要有如图2 2 所示各 个功能模块。 图2 2 显示终端的主要模块 ( 1 ) 人工干预模块:接收键盘、鼠标的人工干预命令,实现参数设置、功能 控制,完成对接口模块、录取模块的管理; ( 2 ) p c i 通信模块:编写p c i 卡的驱动程序,实现控制f p g a 产生的一次视 频,目标原始图像、余辉扫描等功能; ( 3 ) 串口通信模块:用面向对象技术编写了多线程串口类,该串口的两个对 象分别与接口板和录取板通信,传输航迹数据和其他信息以及向接1 :3 板、录取板 发送人工控制命令; 第二章系统结构 5 ( 4 ) 数据管理模块:处理雷达信息数据,包括目标批号、方位、距离、经度、 纬度属性、干扰区域、区域设置等; ( 5 ) 电子地图模块:引入电子地图,打破了传统雷达信息显示方式的局限性, 将指挥人员从离散抽象的数据思维带进形象直观的视觉信息世界; ( 6 ) 图形显示模块:该系统提供了p p i 显、b 显、偏心、空心、延迟等目标 信息显示方式,为了使计算机产生的图形能和雷达视频同屏综合显示,系统中采用 了视频叠加技术,从而实现了计算机二次图形、雷达视频和电子地图的三层显示。 2 3 小结 本章开始介绍按对雷达信号的不同处理过程,分别简单介绍了接口板、录取 板和显示板的硬件组成和功能,指出显示板软件的设计是本人工作的重点,也是 本文将要介绍的主要内容,最后依据显示板要实现的功能,将显示板划分为几个 主要的功能模块。下面各章将分别介绍几个模块的实现。 第三章p c i 驱动程序设计与实现 7 第三章p ci 驱动程序设计与实现 3 1p c i 及p c i 9 0 5 2 3 1 1p c i 局部总线的特点 p c i 总线是一种具有多路地址线和数据线的高性能的3 2 6 4 位总线。它在高度 集成的外围控制器件、外围插件板和处理器存储器之间作为互连机构应用。p c i 总线具有以下一些特点。 1 优越的数据传输性能 总线宽度3 2 位( 可扩展至6 4 位) ,支持突发( b u r s t ) 传输工作方式。p c i 总线规 范2 0 版支持3 3 m h z 总线操作,2 1 版增加7 对6 6 m h z 的支持,3 2 位3 3 m h zp c i 总线在读写操作中峰值传送速率可达13 2 m b s 。 2 可靠性高 p c i 总线标准考虑了负载容限,即使扩展卡超过了负载的最大值,系统也可正 常工作;支持3 2 位、6 4 位扩展版和部件正反向兼容;在局部总线的部件级满足负 载和频率的情况下可以提高附加卡的可靠性和可操作性。p c i 总线标准还对地址、 命令和数据进行奇偶校验,保证了数据传送的完整性和准确性。 3 即插即用 p c i 总线标准提供了全位级的配置寄存器规范,支持自动的设备检测与配置, 使p c i 所需的中断,内存映射,i o 地址等各种硬件资源通过b i o s 在系统启动时 自动配置,从而达到计算机资源的合理配置和p c i 接口的即插即用。 4 良好的兼容性 p c i 总线通过各种总线桥接器与目前已得到广泛应用的各种总线标准实现完 全兼容;p c i 总线部件和插卡的设计独立于处理器,所有现在的和将来的处理器都 能被很好的支持。预留6 4 位扩展,定义了3 3 v 和5 v 两种信号环境。 3 1 2p c i 总线控制器实现方案 目前,实现p c i 总线控制器的方案主要有两种t l 采用可编程逻辑器件 采用可编程逻辑器件实现p c i 总线接口控制具有较强的灵活性,它可以根据用 户的需要实现p c i 的某些功能,同时它可以将p c i 卡上的其它用户资源与p c i 接口逻 8 警戒雷达终端系统软件设计与实现 辑设计在一块芯片上,这样不但节省了p c i 卡的面积,同时有利于系统升级,无需 重新制作印制电路板。有些厂商还提供专门针对p c i 总线接口设计的软件模块,如 x l i n x 的l o g i c c o r e ,a l t e r 的p c im e g a c o r e 等,它们可以嵌入到用户的可编程逻辑器 件中满足设计需要,但是采用可编程逻辑器件实现p c i 总线接口控制必须对p c i 规 范有较深入的了解,而且设计难度较大,一般采用p c i 专用接口芯片来实现。 2 采用p c i 专用接口芯片。 p ci 专用接口芯片将p c i 接口信号封装在一块芯片中,提供p c i 总线和外围设备 传输数据和控制信号的接口。这种芯片具有较强的通用性,用户无需对p c i 规范有 较深入的理解就可以进行p c i 开发,开发的重点主要集中在电路时序的设计和芯片 寄存器的配置,这样大大降低了开发难度,缩短了开发周期。 目前,提供该类芯片的厂商主要有a v i c c 公司和p l x 公司,a l v i c c 公司的产品 主要有$ 5 9 2 0 ,$ 5 9 3 3 ,p l x 公司的产品主要有9 0 5 2 ,9 0 5 4 ,9 6 5 6 等。为了满足雷达数 据传输高速和数据量大的特点,我们对比了芯片功能及性价比,最终选择了p l x 公司的p c i 9 0 5 2 专用接口芯片来设计雷达通信卡。 3 1 3p c i9 0 5 2 特点 p c i9 0 5 2 作为p c i 专用接口芯片成本较低,功能较强,与p c i 2 1 规范完全兼 容,只支持p c i 从设备,它的局部总线( l o c a lb u s ) 可以通过编程设置为8 1 6 3 2 位的复用或非复用总线,数据传送率最高可达到1 3 2 m b s 。p c i 9 0 5 2 的主要功能 如下: ( 1 ) 突发操作:p c i 9 0 5 2 提供一个6 4 字节的写f i f 0 和一个3 2 字节的读f i f o , 从而支持预取模式即突发操作。 ( 2 ) 异步操作:p c i 9 0 5 2 的局部总线与p c i 总线的时钟相互独立运行,两总 线的异步运行便于高、低速设备的兼容。l o c a lb u s 的运行时钟频率范围为 0 m h z - 4 0 m h z ,t l d 电平,p c i 的运行时钟频率范围为0 m n z 一3 3 m h z 。 ( 3 ) 中断产生器:可以由局部总线的两个中断信号l i n t i l 和l i n t i 2 产生一 个p c i 中断信号i n t a # 。 ( 4 ) 串行e e p r o m 接口:p c i 9 0 5 2 具有一个三线串行e e p r o m 接口,通过该接 口可以加载存放于e e p r o m 中的p c i 总线和局部总线的配置信息。 ( 5 ) 五个局部地址空间:各个空间的基地址和范围相互独立,并且可以通过 串行的e e p r o m 或主设备编程控制。 ( 6 ) 四个局部片选:各个片选范围的基地址和范围相互独立,并且可以通过 串行的e e p r o m 或主设备编程控制。 ( 7 ) i s a 总线模式:p c i 9 0 5 2 提供个i s a 逻辑接口,用户可直接使p c i 总 第三章p c i 驱动程序设计与实现 9 线和i s a 总线相连,可以非常容易地将i s a 设计转换到p c i 。 ( 8 ) p c i 锁定机n - 主控设备可以通过锁定信号占有对p c i 9 0 5 2 的唯一访问权。 3 1 4p c i9 0 5 2 寄存器介绍 p c i 9 0 5 2 的内部寄存器为总线接口的设计与实现提供了最大的灵活性,p c i 驱 动程序的很多操作也是控制这些寄存器实现的,下面对p c i 9 0 5 2 的内部寄存器做 简单介绍。 p c i 规范规定任何p c i 设备必须具有一定数目的配置寄存器,以提供必要的配 置信息,便于系统为该设备进行配置。p c i 设备的这些配置寄存器映射到p c i 的 配置空间中,配置空间的容量为2 5 6 个字节,该空间分为头标区和设备有关区两 部分。头标区是每个p c i 设备必须的,安排在配置地址空间的最前面6 4 个字节, 其中前1 6 个字节用来唯一的识别设备,主要包括供应商识别、设备识别、状态、 命令等p c i 设备必需的字段,剩下的字节随各设备支持的功能有所不同,位于偏 移地址0 e h 处的头标类型字段规定了头标的具体布局。目前,规范定义的头标类 型有三种,分别为头标类型0 ,头标类型1 和头标类型2 ,p c i 9 0 5 2 的头标布局属 于头标类型0 ,如图3 1 头标区空间结构。设备有关区安排在配置空间的6 4 2 5 5 字节处,该区并不是必需的,不同的设备根据自己的需要进行定义。 设备识别供应商代码 状态命令 分类代码版本 内含自检头标类型延时计数c a c h e 大小 基址寄存器 c a r d b u sc i s 指针 子系统代码子系统供应商代码 扩展r o m 基地址 保留能力指针 保留 m a xl a tm i ng n t中断引脚中断线 图3 1 头标区空间结构 0 0 h 0 4 h d 8 h 0 c h 1o h 1 4 h 18 h 1 c h 2 0 h 2 4 h 2 8 h 2 c h 3 0 h 3 4 h 3 8 h 3 c h l o 警戒雷达终端系统软件设计与实现 3 2 驱动程序设计 在前面己详细介绍了p c i 总线以及p c i 9 0 5 2 芯片。为了调试p c i 接口,实现 p c i 与计算机之间的通信与数据交换,下面将介绍p c i 设备的驱动程序的开发。 3 2 1w d m 设备驱动程序概述 在w i n d o w s 2 0 0 0 操作系统中,程序要么执行在用户模式,要么执行在内核模式。 执行在用户模式的程序不能直接访问硬件设备,而要通过调用执行于核心态的设 备驱动程序提供的各种服务间接地对硬件资源进行访问。设备驱动程序是提供给 硬件设备连接到计算机系统的软件接口,它使用户应用程序可以用一种规范的方 式访问硬件,而不必考虑如何具体控制硬件。对于应用程序提出的请求,内核模 式中存在有相应的服务例程,它们之间是通过i o 请求包( i r p ) 建立通信的。i o 管 理器将不同的i r p 传递给不同的驱动程序例程,从而完成应用程序的请求。如图3 2 所示。 用户模式 内核模式 回 w i n 3 2 子系统 1r 系统服务接口 上 i o 管理器 土传递i i 冲给驱动程序 设备驱动程序 上 硬件抽象层 派遣例程 图3 2 设备驱动程序调用 w i n d o w s 操作系统的设备驱动程序可以分为v x d 及w d m 两种方式,v x d 设备驱 第三章p c i 驱动程序设计与实现 l l 动程序适用于w i n d o w s 9 x 操作系统,w d m 驱动程序则适用于v i n d o w s 9 8 2 0 0 0 x p 等 多种操作系统。w d m ( w i n d o w sd r i v e rm o d e l ) 是微软公司全新的驱动程序模式,支 持即插即用、电源管理和1 j l m i 技术,w d m 驱动程序全都用c 语言编写,其源代码可 以在w i n d o w s 9 8 2 0 0 0 x p 各系统平台间相互移植。为了实现可配置性,w d m 避免了 直接操作硬件,而是通过调用h a l ( h a r d w a r ea b s t r a c t i o nl a y e r ) 或底层总线驱动 程序来实现对硬件的操作。 在w d m 驱动程序模型中,每个硬件至少包含功能( f u n c t i o n ) 驱动和总线( b u s ) 驱动两个驱动程序。功能驱动程序通常就是硬件设备的驱动程序,它了解硬件工 作的所有细节,负责初始化i o 操作,处理i 0 操作完成后带来的中断事件,并且 为用户提供一种设备合适的控制方式。功能驱动程序通常又包含类驱动程序和微 小驱动程序两个分离的执行文件。类驱动程序了解如何处理操作系统使用的w d m 协 议,以及如何管理整个设备类的基本特征;微小驱动程序包含类驱动程序用于管 理设备实例的厂商专有特征例程。总线驱动程序负责发现总线上的设备,管理硬 件与计算机的连接。一个w d m 驱动程序包含有多个例程,对于不同的i r p 请求,它 会调用不同的例程完成该i r p 操作。其中有五个例程是必需,即d r i v e r e n t r y , a d d d e v i c e ,d i s p a t c h p n p ,d i s p a t c h p o w e r ,d i s p a t c h l j i m i 。另外,还可能有s t a r t l o 例程对i r p 进行排队;用中断服务例程( i s r ) 和延迟过程调用例程( d p c ) 处理硬件中 断等。w i ) m 驱动程序开发者可以根据自己要开发的驱动程序的要求来选择所需的例 程。 基本驱动程序例程:d r i v e r e n t r y ,a d d d e v i c e 。 i o 控带0 例程:s t a r t l 0 ,o n i n t e r r u p r ,d p c f o r l s r ,a d a p t e r c o n t r o l 。 派遣例程: d i s p a t c h p n p ,d i s p a t c h p o w e r ,d i s p a t c h w m i ,d i s p a t c h r e a d ,d i s p a t c h w r i t e w d ) d 驱动程序采用了如图3 3 所示的层次结构。图中左边是一个由设备对象构 成的堆栈。设备对象是系统为帮助软件管理硬件而创建的数据结构。一个物理硬 件可以有多个这样的数据结构。处于堆栈最底层的设备对象称为物理设备对象 ( p h y s i c a ld e v i c eo b j e c t ) ,或简称为p d o 。在设备对象堆栈的中间某处有一个对 象称为功能设备对象( f u n c t i o n a ld e v i c eo b j e c t ) ,或简称f d o 。在f d o 的上面和 下面还会有一些过滤器设备对象( f i l t e rd e v i c eo b j e c t ) ,分别称为上层过滤器 和下层过滤器。 1 2警戒雷达终端系统软件设计与实现 图3 3w d m 设备对象和驱动程序的层次结构 操作系统的p n p 管理器按照设备驱动程序的要求构造了设备对象堆栈。总线驱 动程序枚举总线上的设备,并为每个设备创建一个p d o 。一旦总线驱动程序检查到 新硬件存在,p n p 管理器就创建一个p d o ,之后便开始描绘如图3 3 所示的结构。 创建完p d 0 后,p n p 管理器参照注册表中的信息查找与这个p d 0 相关的过滤器和 功能驱动程序,它们出现在图的中部。系统安装程序负责添加这些注册表项,而 驱动程序包中控制硬件安装的i n f 文件负责添加其它表项。这些表项定义了过滤器 和功能驱动程序在堆栈中的次序。p n p 管理器先装入最底层的过滤器驱动程序并调 用其a d d d e v i c e 函数。该函数创建一个f i d 0 ,这样就在过滤器驱动程序和f i d o 和之 间建立了水平连接。然后,a d d d e v i c e 把p d o 连接至u f i d o 上,这就是设备对象之间 连线的由来。p n p 管理器继续向上执行,装入并调用每个低层过滤器、功能驱动程 序、每个高层过滤器,直到完成整个堆栈。 通常一个i r p 请求都是从最上层的驱动程序逐渐过滤到下层驱动程序,如图 3 3 所示。根据不同的i r p 的内容,每层驱动程序完成不同的处理:有的驱动程序既 处理i r p 又把它向下层驱动程序传递;有的驱动程序只实现传递i r p 的功能;有的 驱动程序则只处理i r p 而不再向下传递。 3 2 2 驱动程序开发工具的选择 驱动程序的开发工具主要有d d k ,d r i v e r s t d i o ,w i n d r i v e r 。 1 d d k ( d r i v e rd e v e l o p m e n tk i t ) 微软公司为开发者编写驱动程序提供了d d k ( d e v i c ed r i v e rk i t ) 工具包,可 以直接生成s y s 、v x d 的驱动程序文件。但驱动程序开发涉及到处理器安全、例程 运行优先级、电源管理、即插即用管理等比较底层的问题,初学者很难掌握。使 用d d k 进行驱动程序开发需要较长的开发周期,在此不使用。 2 d r i v e r s t d i o 第一章p c i 驱动科序设计与实现 1 3 c o m p u w a r e 公司的d r i v e r s t u d i o 是一款为简化w i n d o w s 驱动程序的开发、调 试及测试的工具包。其中有:w d m 和w i n n t 的驱动程序开发软件d r i v e r w o r k s 、 w i n d o w s 操作系统内核模式调试软件s o f f i c e 和丌发w i n 9 x 的虚拟设各驱动程序 的v t o o l s d 。d r i v e r w o r k s 以面向对象( o o p ) 的方式,将编写w d m 及k m d 驱 动程序所需的对内核及硬件的访问封装成类。它能加速开发、调试、测试,调整 和配置你的v x d 、m d m 和w i n d o w s n t 驱动程序,把高质量的工具和现代的软件 工程实践带到以前被忽略的驱动,f 发领域。但是其繁杂的功能也妨碍了使用者的 掌握程度,而且针对不j 司系统要求使用不同的开发_ t 具。 3w i n d r i v e r w i n d r i v e r 是j t m g o 公司的辅助驱动开发软件,支持常见的p c i 芯片厂商,如: p l x 、a l t e r a 、a m c c 、g a l i l e o 、p l d a 等。它以自己的k e r n e l ( s y s 、v x d 或d 1 1 ) 代理了应用程序对硬件的操作,使设计可以主要集中在用户模式下。该软件使开 发驱动程序变得容易,用户几乎可以在不用了解驱动开发底层情况下,直接在应 用层对硬件进行操作。 针对该项目的实际情况,驱动程序设计只是该系统的一个模块,我们选择了 w i n d r i v e r 作为p c i 9 0 5 2 驱动程序的开发工具。 3 2 3 使用w i n d r i v e r 开发驱动程序 w i n d r i v e r 的体系架构分为两种模式:用户模式和核心模式。对硬件进行操作 时,开发者调用用户模式的库函数( w i n d r v r h ) ,用户模式的库函数再调用核心 模式完成对硬件的最终访问。在有些情况下,在用户模式编写的硬件驱动达不到 性能上的要求,这时就可以将这部分模块( 例如中断处理程序) 在不做任何改变的 情况下以核心插件的形式“下放”到w i n o r i v e r 的核心模式,由w i n i ) r i v e r 内核在 核心模式调用这部分模块,使程序的执行效率得到最大的发挥。 使用w i n l ) r i v e t 开发p c i 设备驱动程序,通常按下列步骤进行: ( 1 ) 将p c i 接口卡插入到相应的总线扩展槽中, 启动运 ? d r i v e r w i z a r d ,创建一个新工程。如图34 图34 创建新工程 d r i v e r w i z a r d 弹出一个所检测到设备列表,在列表中选取指定的设备。如图 瞥戒雷达终端系统软件设训与实现 3 j 面菌i i i i i i i i i i i i 目麟戮: ,兰兰雀i :帮0 咒:s :嚣。:o “4 量戛马。竺型、 矧3 5 设备列表 在浚列表中选中系统中使用的p c i 9 0 5 2 芯片。点击“g e n e r a t ei n ff i l e ”按 钮,弹出“e n t e rl n f o r m a t i o nf o ri n ff i l e ”对话框,生成驱动程序安装文件, 如图36 。 园圃墨皿墨墨墨墨墨瞳霉臻黪“、 到 r 1 - 1 f ,1 1 ,1 , r h l t1 a f n t i o o _ 1 1t w dn t 1 f h l v | ,1 f ”r l t t h l 一_ t 1 p “恤 d ,- t _ n ri f t r t t 1 h j 1 r n f f - n i i 一 _ t _ rh - l 口 t - c i 口l o p 。一l 1 l 二1 w v 7 ,c 1 j u i t b l ,o ,lb 4f o r 4 “d o “y t w v r _ 1 t n c 1 - 、f 。o - c t r - “- c d l ri h 1t h l h o t + t “ - 1 ,1r p p ) r 2 t 1 5 h l v 7 一一v - f ”一“v i f 三t = ! = :t ! i 图3 6 产生i j f 文件 设置完成后点击。n e x t ”,保存安装文件。 疆盯rr啊睡篁_ 第三章p c i 驱动程序设计与实现 ( 2 ) 在8 u i l d 菜单中选择自动生成代码“g e n e r a t e c o d e ” 出选择生成代码对话框。如图3 7 如图37 产生代码 选择驱动程序语占为c 语言,选择将产生的驱动程序保存至4 指定目录,点击 “n e x t ”产生驱动程序。 该驱动程序丰要包括以下文件 p c i 9 0 5 2l i bh由w i n d r i v e r 产生的管理硬件的库文件 o c i 9 0 5 2l i bc定义了访问所有p c i 设备资源所需的库函数,包括存储器 读写、i 0 、配置寄存器操作、e e p r o m 操作、中断处理、d m a 处理等。 p c i 9 0 5 2 _ d l a gc个基于控制台的设诊断程序,在程序中使用了文件 p e i 9 0 5 2 _ t i bc 中的库函数,可以对设备进行实际的诊断操作。 0 c i 9 0 5 2i n f驱动安装的信息 通过w i n d r i v e r 生成的基于c 语言应用程序框架。主要完成扫描p c i 总线, 读写内存及i o 空间访问寄存器空间,使能中断以及读写p c i 9 0 5 2 配套的 e e p r o m 等功能。此时,向导生成的是针对硬件的a p i 函数。使用该蛹数对硬件 进行访问时,程序从w i n d r i v e r 用户模式库( w i n d r h ) 调用w i n d r e , et | 的功能模 块,然后由该功能模块去调用w m d f i v e r 的内核模块,最后由内核模块去完成对硬 件的访问。 在使用该驱动程序编程的步骤: ( i ) 将p c i 9 0 5 2 l i bh ,p c i 9 0 5 2 c , c 以及、1ib p c i 9 0 5 2d i a g w i n d r v ri n tt h r e a dh w i n d r v n h 考到项目工程文件夹中,定义p c i 9 0 5 2 句柄,p c d 0 5 2h a n d l eh p c i 。 ( 2 ) 调用p c i 9 0 5 2o p e n ( ) 获得p c l 9 0 5 2 芯片的句柄。 在v i s u a lc + + 应用程序的初始化过程中,调用如下语句: p c i 9 0 5 2o p e n ( & h p c i ,o x l o b 5 ,0 x 5 2 0 1 ,0 ) ) 1 6 警戒雷达终端系统软件设计与实现 其中:h p c i 为该芯片的句柄,在以后操作中要经常用到,0 x 1 0 b 5 为该芯片的 版本号,0 x 5 2 0 1 为设备号,最后一个参数0 为一个索引,h p c i 返回该索引所对应的 满足版本号和设备号的芯片旬柄,因为在该系统中只用到一个p c i 9 0 5 2 ,所以该参 数可以为0 。 ( 3 ) 此时,可以用以下的函数读写存储器,访问e e p r o m ,取消和设置中断 等操作。下面为几个主要的函数。 返回满足给定版本和设备号的p c i 卡的数目 d w o r dp c i 9 0 5 2c o u n t c a r d s ( d w o r dd w v e n d o r l d ,d w o r dd w d e v i c e l d ) 从p c i 卡的存储器或i oe i 读一个字节 b y t ep c i 9 0 5 2 一r e a d b y t e ( p c i 9 0 5 2 _ h a n d l eh p c i 9 0 5 2 ,p c i 9 0 5 2 一a d d r a d d r s p a c e ,d w o r dd w o f f s e t ) 从p c i 卡的存储器或i o e i 读一个字 w o r dp c i 9 0 5 2 一r e a d w o r d ( p c i 9 0 5 2 一h a n d l eh p c i 9 0 5 2 ,p c i 9 0 5 2 _ a d d r a d d r s p a c e ,d w o r dd w o f f s e t ) 向p c i 卡的存储器或i ou 写一个字节 v o i dp c i 9 0 5 2 一w r it e b y t e ( p c i 9 0 5 2 _ h a n d l

温馨提示

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

评论

0/150

提交评论