(测试计量技术及仪器专业论文)基于pci总线的数字信号处理系统的软件开发.pdf_第1页
(测试计量技术及仪器专业论文)基于pci总线的数字信号处理系统的软件开发.pdf_第2页
(测试计量技术及仪器专业论文)基于pci总线的数字信号处理系统的软件开发.pdf_第3页
(测试计量技术及仪器专业论文)基于pci总线的数字信号处理系统的软件开发.pdf_第4页
(测试计量技术及仪器专业论文)基于pci总线的数字信号处理系统的软件开发.pdf_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

摘要本文介绍了基于p c i 总线的数宁信号处理系统的软件开发。p c i 总线作为种高速总线在课题中被用来设计高性能价格比的数字信号处理系统。本文首先阐述了p c i 总线和p l x9 0 3 0 接口芯片的特点,以及p l x9 0 3 0 在课题中的使用方法,包括p i x9 0 3 0 芯片的硬件连接和软件配置,其中着重介绍了软件配置部分。接着详细论述了w i n d o w s 下设备驱动程序开发工具的选择和使用方法,针对课题中升发的p c i 接口的采集卡给出了一个w i n d o w s 下的设备驱动程序,分别揣述了箨个例程和中断处理程序的实现方法,以及设备驱动稃序设计中采用的一些特殊技术。最后介绍了l a b w i n d o w s 在课题中的应用,包括信号处理、波形显示和网络功能模块的设i f ,并结合驱动程序开发了一个具有网络功能的数字信号的处理平台,利用该软件平台和采集卡实现了具有网络功能的虚拟示波器和频谱分析仪。关键词i 总线,接口,信号处理,虚拟仪器a b s t r a c tt h i sp a p e ri n t r o d u c e sh o wt od e v e l o pt h es o f t w a r eo fd i g i t a ls i g n a lp r o c e s ss y s t e m ,w h i c hb a s e so np c ib u s p c ib u sa sah i g hp e r f o r m a n c ea n d1 0 wp r i c eb u si su s e dt od e s i g nt h ed i g i t a ls i g n a lp r o c e s ss y s t e mi nt h i sp r o j e c t f i r s t l y ,t h ep a p e re x p l a i n st h es p e c i a l t yo fp c ib u sa n dp l x9 0 3 0i n t e r f a c ec h i p ,t h e nd e s c r i b e sh o wt ou s ei ti nt h i sp r o j e c t i ti n c h d e st h eh a r d w a r ec o n n e c t i o i 3a n dt h es o f t w a r ec o n f i g u r a t i o n ,w h i c hi si n t r o d u c e de s p e c i a l l y s e c o n d l y ,t h ep a p e rd i s c u s s e st h ew a ya n dt o o l st od e v e l o pt h ew i n d o w sd r i v e t ,t h e ni m p l e m e n t sad r i v e rp r o g r a ma r m st ot h ep c ii n t e r f a c e i nt h ep r o g r a m ,s o m es u b p r o g r a m sa r ei m p l e m e n t e d s o m es p e c i a lt e c h n o l o g i e su s e di nt h ed r i v e ra r ei n t r o d u c e di nt h i ss e c t i o n l a s t l y ,i ti n t r o d u c e st h el a b w i n d o w si n c l u d e sm o d u l e so fs i g n a lp r o c e s s ,w a v ed i s p l a ya n dn e t w o r kf u n c t i o n s ,t h e nu s et h i sd r i v e ra n dl a b w i n d o w st od e v e l o pad i g i t a ls i g n a lp r o c e s sp l a t f o r mw i t ht h en e t w o r kf u n c t i o n t h e nt w ov i r t u a li n s t r u m e n t sa r ei m p l e m e n t e do nt h i sp l a t f o r m k e y w o r d :b u s ,i n t e r f a c e ,s i g n a lp r o c e s s ,v i r t u a li n s t r u m e n t2南京航空航天大学硕士学位论文第一章绪论1 1p c i 总线介绍和开发方法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 ts p e c i a li n t e r e s tg r o u p ,简称p c i s i g ,即外部设备互连。p c i 总线是一种即插即用( p n p ,p l u g a n d p l a y ) 的总线标准,支持全面的自动配置,p c i 总线支持8 位、1 6 位、3 2 位、6 4 位数据宽度,采用地址数据总线复用方式,总线工作频率最高可达6 6 m h z ,因此p c i总线最大峰值传输率为6 6 x 8 = 5 2 8 m b s 。其主要特点有:1 线性突发传输;2 同步总线操作;3 多总线主控方式;4 不受处理器限制;5 适合多种机型:6 兼容性强;7 预留了发展空间;8 自动配置功能;9 编码总线命令;1 0 地址数据总线复用;1 1 总线错误监视:1 2 高性能价格比。目前,p c 机中使用的p c i 总线主要以p c iv 2 0标准为主,且均为3 2 位3 3 m h z 的p c i 总线和5 v 的总线插槽。由于p c i 总线具有高性能和低成本的特点,并且在大部分的新型p c 主板上已不再提供e i s a i s a 接口,所以开发基于p c i 总线的产品已成为一种必然趋势。开发基于p c i 总线的数据采集和处理系统一方面可以充分利用p c i 总线的高速,即插即用的特性,另一方面也是技术发展的要求。目前开发p c i 外围接口产品一般采用两种方法:采用通用的p c i 接口专用大规模接口芯片和采用具有p c i 接口功能的大规模p l d 来设计p c i 接口。前者使用相对方便简单,在生产量少时成本较低,但接口板体积较大;而后者开发难度较大,生产量少时成本较高,但体积小,单位芯片的功能集成度高。考虑到成本在本课题的设计中采用了前者。用于设计p c i 接口的专用芯片有许多种,本系统采用了p l x 系列中的p l x 9 0 3 0 芯片,该芯片只能用于设计总线上的目标设备,不具有p c i 总线功能,但这对于数据采集系统已经足够了。1 2w i n d o w s 设备驱动程序介绍w i n d o w s 设备驱动程序提供连接到计算机硬件的软件接口,它是操作系统的一个信任部分。由于设备驱动程序的存在使得上层的应用程序可以以一种规范的方式访问硬件,而不必考虑必须如何控制硬件。在w i n d o w s 9 8 和w i n d o w s2 0 0 0 中,设备驱动程序必须根据w i n d o w s 驱动程序模型( w d m ) 设计。在w d m 驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个驱动程序我们称为功能( f u n c t i o n ) 驱动程序,它负责处理硬件工作的所有细节,包括负责初始化i o 操作,处理i o 操作完成时所带来的中断事件,为用户提供控制硬件设备的方法。另一个驱动程序我们称为总线( b u s ) 驱动程序。它负责管理硬件与计算机的连接。例如,p c i 总线驱动程序检测插入到p c i 槽上的设备并确定设备的资源使用情况,它还能控制设备所在的p c i 槽的电流开关。有些设备可以有两个以上的驱动程序。称为过滤器驱动程序( f i l t e rd r i v e r ) 。1基于p c i 总线的数字信号处理系统的软件开发某些过滤器驱动程序仅仅是在功能驱动程序执行i o 操作时进行监视。利用过滤器驱动程序修改现有功能驱动程序的行为。上层过滤器驱动程序在功能驱动程序之前看到i o 请求包( i r p ) ,它们可以提供额外的功能,而功能驱动程序根本不知道。有时,一个上层驱动程序可以修正功能驱动程序或硬件存在的毛病或缺陷。而低层过滤器驱动程序在功能驱动程序要向总线驱动程序发送i r p 时看到i r p 。可以把一个完整的驱动程序看作是一个容器,它包含许多例程,当操作系统遇到一个i r p 时,它就调用这个容器中的例程来执行该i r p 的各种操作。对于产生中断的硬件设各,其驱动程序都有一个中断服务例程( 1 s r ) 和一个推迟过程调用( d p c )例程,来处理中断。驱动程序一般都有几个支持不同类型i r p 的处理例程。所以,开发w d m 驱动程序的主要任务就是就是编写不同的处理例程。对于本系统由于基于p c i 总线,为了支持即插即用功能,显然已不可能象控制i s a 总线一样在应用程序中通过直接读写内存来控制外围设备了,因此,在设计该系统时同时设计了一个针对该采集板的w d m 型的驱动程序,以提供上层应用程序和底层硬件的接口功能。1 3 虚拟仪器介绍所谓虚拟仪器,就是以通用计算机为核心的硬件平台上,由用户设计定义,具有虚拟面板,测试功能由测试软件实现的一种计算机仪器系统。它具有以下特点:1 强调“软件就是仪器”的新概念,以计算机为核心,硬件仅仅是为了解决信号的输入和输出,软件才是整个仪器的关键。2 通过软件的修改,可以很方便地改变、增减仪器系统的功能与规模。3 具有开放性、互换性、资源的复用性,并可方便、经济地重建或重构自动测试系统。4 可自定义仪器功能。借助数据采集系统,通过编制不同的软件测试方案,可构造不同功能的测试仪器。5 研制周期短6 发展迅速在本课题中主要是利用虚拟仪器开发工具开发虚拟频谱分析仪、示波器。1 4 本课题研究的主要内容本课题主要研究基于p c i 总线的信号分析系统的软件部分包括:接口芯片p l x9 0 3 0 的软件配置、基于p c i 总线的数据采集卡的驱动程序、提供驱动程序与上层应用程序接口的程序模块、具备网络功能的虚拟频谱分析仪、示波器。具体开发过程包括:1 实现p l x9 0 3 0 的软件配景。2 利用w i n d o w s 下的设备驱动程序开发工具( d d k 和d r i v e r s t u d i o ) 开发p c i 设南京航空航天大学硕士学位论文备驱动程序。3 利用l a b w i n d o w s 开发应用程序和驱动程序的接口。4 利用l a b w i n d o w s 开发w i n d o w s 下的具有网络功能的虚拟频谱分析仪、示波器。基于p c i 总线的数字信号处理系统的软件开发第二章p c i 总线规范及p l x 系列接口芯片的应用2 1p c i 总线规范p c f 总线作为微型计算机上的处理器存储器与外围控制部件、外围附加卡之间的互连结构,它规定了互连结构的协议、电气、机械以及配置空间规范,其典型的系统结构图如下:卜= 。圊l 音频lf 视频li 桥存储控制器卜- 圃龟恕i 季l 旧辛ii _ ji ji s a 厄i s am c ac r t基本1 1 0 功能图2 1p c i 系统结构图在图中可以看到处理机c a c h e 存储器子系统经过一个p c i 桥连接到p c i 总线上。此桥提供了一个低延迟的访问通路,从而使处理器能够直接访问通过它映射于存储器空间或i o 空间的p c i 设备;也提供了能使p c i 主设备直接访问主存的高速通路;该桥也能提供数据缓冲功能,以使c p u 与p c i 总线上的设备并行工作而不必相互等待:另外,桥可使p c i 总线的操作与c p u 总线分开,以免相互影响。总之桥实现了p c i 总线的全部驱动控制。扩展总线桥( 标准总线接口) 的设置是为了能在p c i 总线上接出一条标准i o 扩展总线,如i s a 、e i s a 或m c a 总线,从而可继续使用现有的i o 设备,以增加p c i 总线的兼容性和选择范围。一般地,典型的p c i 局部总线系统中,最多支持三个插槽( 连接器) ,但这样的扩充能力并不一定是必要的。p c i 接插卡连接器属于微通道( m c ) 类型的连接器。同样的p c i 扩充板连接器也可用在i s a 、e i s a 及m c a 总线的系统中。1 p c i 总线信号4南京航空航天大学硕士学位论文p c i 总线信号可划分为10 大类型:地址数据线、接e l 控制信、错误报告信号、仲裁信号、系统信号、6 4 位总线扩展信号、资源锁存信号、中断信号、支持c a c h e的信号、边界扫描信号,如图2 2 所示。其中6 4 位总线扩展信号、资源锁存信号、地 ,霉1入 1 、址。西位薮总据线线扩lj“。展信f r a m e #。p a r 6 4 。号t r d y #。r e q 6 4 #接i r d y #。a c k 6 4 # 口控 、i | | l 厂n ;卢1 - _ _ _ _ _ _ _ _ 。 _ - - _ _ _ _ 。 _ _ _ _ _ _ _ _ 。 _ j! 、_ - 。 _ _ j!一l hi 巾lli 厂ri 基釜三疋尘豇苎喜厂卜图23p c i 总线谴操作时序t r d y 样d e v s e l 样2 2p l x9 0 3 0 接口芯片特点及使用方法目前p c i 接口的设计一般有两种方法,第一种是基于将p c i 接口完全集成到a s i c中,这样做的好处是集成度高,量产的生产成本低,但是对于普通的开发者来说购6南京航空航天大学硕士学位论文买现成的p c i 控制器内核的价格昂贵,难以接受。当然也可以自己根据p c i 协议在f p g a 中实现p c i 总线接口控制器,但是由于p c i 总线协议自身比较复杂,要想在短期内做到稳定可靠,难度很大。第二中方法是选用p c i 接口芯片,该方法适用于小规模的开发。目前市场上常见的有a m c c ,p l x ,c y p r e s s 等公司的p c i 接口芯片,各个型号的p c i 接口芯片的比较如表2 1 、2 2 所示:表2 1 各公司p c i 接口芯片比较公司主要特点驱动开发价格技术资料内置f i f o 接口适合于设有d o s 下驱动较昂较为全面,提供评a m c c计数据采集卡,使用简的范例贵估板板图单,性能好。内置d r a m ,可以代替外c y p r e s部的缓存,有效降低性有v x o 范例便宜技术文档比较全面3能成本提供s d k ,降很多有价值的资料在p l x有众多型号可选择低工作量选择r d k 中出售表2 2p l x 系列p c i 接口芯片比较类别特点9 0 3 0 ,9 0 5 0 ,9 0 5 2 ,9 0 3 0 系列芯片支持c o m p a c tp c i ,9 0 5 0 专门为i s a 设备转p c i 总线接口而设计。9 0 5 2从设备接口芯片是9 0 5 0 的升级版本。以上芯片价格低廉,不支持d m a ,适合于设计基于p c i 总线的以中断、查询方式与主机交互的系统9 0 6 0 ,9 0 8 0 ,9 0 5 4 系列芯片,其中9 0 6 0 是最早推出的具有3 2 位的p c i 主设备接口芯片,9 0 8 0 和9 0 5 4 为9 0 6 0 的主设备接口芯片升级产品,支持多个d m a 通道,提供与m p c 8 x x ,1 9 6 0 等c p u的无缝接口。内部集成了p c i 接口芯片( 9 0 5 4 ) 、s d r a m 控制器、r i s cl o p 系列c p u ,适合于高端数据采集系统单片解决方案。支持6 4 位6 6 m h z支持p c i 的6 6 m h z 时钟,6 4 位规范,p c i 总线峰值带的系列宽提高4 倍,目前已有p c 主板支持该范例。根据课题需求、成本以及开发难度等几个方面考虑,选择了p l x9 0 3 0 芯片作为设计p c i 接口数字信号采集处理板的接口芯片。2 2 1p l x 芯片特点在课题中设计p c i 总线接口。选用了p l x 公司的p c i9 0 3 0 接口芯片。该芯片基于p c i 总线的数字信号处理系统的软件开发具有低价格,高性能、低功耗等优点。封装形式为p q f p1 7 6p i n s 。其主要特点有:1 支持p c i 总线2 2 规范,支持3 2 位3 3 m h z 的目标设备接口,突发传输速率达1 3 2 m b s2 支持p c i 总线电源管理1 1 规范3 支持c o m p a c tp c i 热插拔特性4 p c i 对象可编程突发管理5 可编程中断发生控制器6 总线速度可提升至6 0 m h z7 支持p c i 和局部总线端3 3 5 v 信号8 提供串行e e p r o m 接口9 提供9 个通用可编程i o 口1 0 5 个可编程局部地址空间1 1 4 个独立的片选1 2 可编程局部总线等待周期13 可编程预读取机制该芯片内部功能框图如下:一图2 5p c i9 0 3 0 结构框图图中主要分为三个大的部分,一个是p l x 9 0 3 0 与p c i 总线的接口控制逻辑,一个是它与局部总线的接口控制逻辑,还有一个就是用于配置p c i 的串行e e p r o i d 的接口控制逻辑。2 2 2p l x9 0 3 0 芯片在本系统中的使用及配置方法2 2 2 1p l x9 0 3 0 芯片的硬件连接p c i9 0 3 0 接口芯片在数据采集卡上用来连接局部总线与系统的p c i 总线,在局部r南京航空航天大学硕士学位论文总线上挂接了d s p 和双端口r a m 。d s p 用于控制a d 转换器进行a d 转换,并把数据存入双端口r a m ,而双端口r a m 的另一端连接在9 0 3 0 的局部总线端,微机系统可直接通过9 0 3 0 从r a m 取数,不需d s p 的干预。微机系统通过9 0 3 0 的通用i o 口( g p i o )给d s p 发送控制字,并通过9 0 3 0 的l i n t i l 接收d s p 发出的中断。具体原理框图如下:图2 6p l x9 0 3 0 硬件连接框图在p l x9 0 3 0 的硬件连接中与软件设计密切相关的部分包括:与双端口r a m 连接的数据地址线、与d s p 连接的用于发送控制字的g p i o 口,用于启动时配置9 0 3 0 的串行e e p r o m 的硬件连接。1 与双端口r a m 数据地址线的连接与双端口r a m 数据地址线的连接,由于9 0 3 0 的局部总线端的数据地址线只用于与双端口r a m 连接,因此设计比较简单。在课题中将9 0 3 0 的l a l 一l a i l ( 地址线)连到了r a m 的a o l a i o l ,l d o l d l 5 ( 数据线) 连到了i o l 1 1 5 l 。并且9 0 3 0 提供了读写、使能信号只需与r a m 对应连接即可。2 g p i o 口与d s p 的连接9 0 3 0 提供了9 个通用i 0 口( g p i o ) ,在此使用了其中的4 个,g p l 0 0 连在了d s p 的中断管脚i n t l 上,用于向d s p 发中断。g p l 0 1 3 连在了d s p 的i o 管脚1 0 1 -3 上用于发控制字。控制字格式如下表:基于p c i 总线的数字信号处理系统的软件开发表2 3 控制字含义g p l 0 32l含义oo1启动a d1ll停止a do1o单通道o1l四通道loo八通道应用程序在发送完控制字之后,需将g p l 0 0 置1 ,再置0 以产生下跳沿使d s p进入中断。3 串行e e p r o m 的连接串行e e p r o m 用以在p l x9 0 3 0 上电启动时配置9 0 3 0 。具体配置方法将在下一节中介绍。它的连接方法也较容易,因为9 0 3 0 提供了与串行e e p r o m 管脚一一对应的接口,所以只需对应连接即可,如图2 7 。而串行e e p r o m 的选择需满足一定条件,对于9 0 3 0 对应的串行e e p r o m 容量需大于2 kb i t ,并且需要有地址自增功能,在该课题中选用了b r 9 3 l c 5 6 芯片。2 2 2 2p l x9 0 3 0 芯片的软件配置p l x9 0 3 0 芯片的软件配置是指通过串行e e p r o m ,在上电启动时完成9 0 3 0 内部配置空间的初始化。+t 9 0 3 0 芯片的配置空间9 0 3 0 芯片的配置空间分为两部分:p c i 配置部分和局部总线配置部分。重要的p c i配置部分在下表列出:表2 4p c i 配置空间l偏移地址说明lo o h设备识别供应商代码南京航空航天大学硕士学位论文0 4 h状态命令0 8 h分类代码修改版本内涵自测o c h头标类型延时计数c a c h e 大小诫l o hp c基地址01 4 hp c i 基地址l1 8 hp c i 基地址2l c hp c i 基地址32 0 hp c i 基地址42 4 hp c i 基地址52 8 h保留2 c h子设备识别子供应商代码3 0 h扩展r o m 基地址寄存器n e x tc a p3 4 h保留p o i n t3 8 h保留m a x -3 c hm i n - g n t中断引脚中断干线l a t设备识别和供应商代码是驱动程序查找该硬件的唯一标志,必须保证在同一系统中没有重复,并且在写驱动程序的安装文件时需指明。该位由串行e e p r o m 在启动配置时写入。p c i 基地址位根据p c i 规范可提供6 个内存或i o 空间,由于p c i 支持即插即用,因此具体的值由系统在启动时,根据局部总线配置寄存器设置的内容和大小进行分配。其中在9 0 3 0 芯片中基地址o 和基地址l 已被分别强制定为内存空间和i o 空间,并都指向局部配置寄存器首址。重要的局部总线配置寄存器如下表:表2 5 重要的局部总线配置空间偏移地址说明o o h局部地址总线空间o 的范围0 4 h局部地址总线空间1 的范围0 8 h局部地址总线空间2 的范围o c h局部地址总线空间3 的范围1 0 h局部地址总线扩展r o m 空间的范围1 4 h局部地址总线空间0 的基地址1 8 h局部地址总线空间1 的基地址基于p c i 总线的数字信号处理系统的软件开发1 c h局部地址总线空间2 的基地址2 0 h局部地址总线空间3 的基地址2 4 h局部地址总线扩展r o m 空间的基地址2 8 h局部地址总线空间0 的描述符2 0 h局部地址总线空间l 的描述符3 0 h局部地址总线空间2 的描述符3 4 h局部地址总线空间3 的描述符3 8 h局部地址总线扩展r o m 空间的描述符局部地址总线空间范围、局部地址总线空间首地址、局部地址总线空间描述符都由串行e e p r o m 在启动时写入。这些寄存器的值决定了采集板所使用的内存大小和首地址,以及读写方式。a 局部地址总线空间范围寄存器的配置方法位0 :置0 表示映射成内存空间,置1 表示映射成i o 空间位2 1 :置0 0 表示映射到3 2 位地址的任意位置,置0 1 表示映射到3 2位地址的最下面l m 的位置,置1 0 ,o o 表示映射到6 4 位地址的任意位置位3 :若映射成内存空间,该位置l 表示可预读位2 7 4 :置l 表示对应的地址位参与译码位3 卜2 8 :保留( 总参与译码)在课题中需2 k 的内存空间,再预留3 0 k 空间所以写入o x f f f f 8 0 0 0 。b 局部地址总线空间基地址寄存器的配置方法位0 :置1 允许译码位l :保留位3 2 :映射成内存空间时不使用,映射成i o 空间时意义同位2 7 - 4位2 7 4 :指明用于译码的位在局部总线上具体的值位3 卜2 8 :保留在课题中局部总线上的基地址为o x 0 0 0 0 8 0 0 0 。所以将该寄存器置为o x 0 0 0 0 8 0 0 1 。c 局部地址总线空间描述符寄存器的配置方法位0 :内存空间突发方式使能,l 允许o 不允许位1 :内存空间r e a d y # 输入有效,l 有效0 无效位2 :内存空间b t e r m # 输入有效,1 有效0 无效位4 3 :预读数个数,0 0 不预读;o l 读4 个长字:1 0 读8 个长字;1 1读1 6 个长字:位5 :预读数计数器使能:1 有效0 无效位1 0 6 - n r a d 等状态个数南京航空航天大学硕士学位论文位1 2 1 1 :n r d d 等状态个数位1 4 一1 3 :n x d a 等状态个数位1 9 1 5 :n w a d 等状态个数位2 卜2 0 :n w d d 等状态个数位2 3 2 2 :内存空间局部总线宽度:置o o 表示8 位,置o l 表示1 6 位,置1 0 表示3 2 位位2 4 :字节次序:置1 表示大结尾,置0 表示小结尾位2 5 :大结尾字节l a n e 模式位2 72 6 :读滤波延时位2 9 2 8 :写滤波延时位3 1 - 3 0 :写循环保持在课题中该寄存器写入o x 0 0 8 0 0 0 0 0 。另外,在课题中使用的重要的寄存器还有:位于偏移量5 0 h 处的p c i 响应、串行e e p r o m 控制、初始化控制寄存器。在课题中通过向该寄存器的第3 0 位置1 来复位p c i9 0 3 0 和d s p 。位于偏移量5 4 h 处的通用i o 控制寄存器,使用该寄存器,通过通用i o 引脚,向d s p 发送控制字。通用i o ( g p i o ) 控制寄存器负责控制9 个通用i 0 口的功能和值,3 2 位的寄存器每3 位负责一个i o 口,如:第o 位置0 表示第0 个i o 口当前功能为g p l 0 0 ,置l 表示为为复用引脚;第l 位置o 表示输入,置1 表示输出,第2 位表示g p l 0 0管脚电平,置0 表示低电平,置l 表示高电平。其它引脚依次类推,除第8 引脚,因为没有复用功能,因此只需控制方向和值,无需选择复用功能。根据上述描述以及表2 3 所示控制字,可知:a 启动a d 一一向通用i o 控制寄存器写入o x 0 0 2 4 9 4 b 6 ;b 停止a d 一一向通用i 0 控制寄存器写入o x 0 0 2 4 9 d b 6 :c 选择单通道一一向通用i o 控制寄存器写入0 x 0 0 2 4 9 5 9 6 ;d 选择4 通道一一向通用i o 控制寄存器写入o x 0 0 2 4 9 5 b 6 ;e 选择8 通道一一向通用i o 控制寄存器写入0 x 0 0 2 4 9 c 9 6 。串行e e p r o m 主要作用是在断电时保存p c i 配置寄存器和局部总线配置寄存器的内容,在上电时自动完成配置。因此串行e e p r o m 中内容的编写就是按照上面的介绍将各种参数写入e e p r o m 即可j 重要的部分己在上面介绍,其它部分和写入e e p r o m 的具体位置可参考手册完成。基于p c i 总线的数字信号处理系统的软件开发第三章w i n d o w s 下的p c i 设备驱动程序的实现3 1 w i n d o w s 设备驱动程序开发工具d d k 介绍w i n d o w s 设备驱动程序开发工具( d e v i c ed e v e l o p m e n tk i t 简称d d k ) 是微软提供的一套用于开发w i n d o w s 下设备驱动程序的工具包。该工具包包含了用于开发设备驱动程序所需用到的编译工具、函数库、文档和样板程序。其中d d kb u i l d 命令行实用程序是构造驱动程序的主要工具,它根据编译器和链接程序的设置,通过调用n m a k e 实用程序来构造驱动程序。由于设备驱动程序与具体的操作系统有密切的关系,所以针对不同的操作系统应选用不同版本的d d k ,在本课题中选用了9 8d d k ,开发工作于w i n d o w s9 8 环境下的设备驱动程序。虽然d d k 是开发设备驱动程序的最基本的工具,但由于该工具使用不方便,因此使得开发难度较大。于是,出现了许多第三方开发的高效快捷的辅助工具。如:w i n d r i v e r 、d r i v e r s t u d i o 等一系列工具。3 2 第三方开发工具d r i v e r s t u d i o 的使用方法根据开发要求和对工具性能的考虑,在本课题的开发中选用了c o m p u w a r en u m e g a 公司的d r i v e r s t u d i o 系列工具。下面将介绍该工具及其使用方法。d r i v e r s t u d i o 是一套用来简化微软w i n d o w s 平台下设备驱动程序的开发,调试和测试难度的工具包。d r i v e r s t u d i o 并没有对驱动程序开发进行本质上的改变,但它对d d k 进行了封装,在开发驱动程序之前就可以通过向导根据具体硬件生成框架代码,并且也不用开发者去考虑底层的实现细节。该工具将d d k 封装成了完整的c + +函数库,在开发中开发者只需专注于要实现的程序逻辑。并且该套工具提供了一套完整调试和性能测试、增强工具,使开发的代码更稳定。d r i v e r s t u d i o 当前的版本包括下列工具模块:1 d r i v e r a g e n td r i v e r a g e n t 为w i n 3 2 应用程序提供直接访问硬件的功能。利用该工具可以方便的编写出d r i v e r a g e n t 应用程序来直接访问硬件设备。d r i v e r a g e n t 应用程序可以运行在w i n d o w s9 8 ,w i n d o w s9 5 ,w i n d o w sn t 和w i n d o w s2 0 0 0 平台上。2 v t o o l s dv t o o l s d 是一个用来开发针对w i n 9 x ( w i n d o w s9 5 和w i n d o w s9 8 ) 操作系统下设备驱动程序( v x d ) 的工具。v t o o l s d 中包括生成驱动程序源代码的工具,r u n - t i m e和i n t e r f a c e 库,以及一些驱动程序样本,可以用来作为各种类型的设备驱动程序的基础部分。3 d r i v e r w o r k sd r i v e r w o r k s 对于w i n d o w sn t 下和w i n d o w s9 8 与w i n d o w s2 0 0 0 共同支持的1 4南京航空航天大学硕士学1 1 :7 = 论文w i n d o w s 驱动模型( w d m ) 设备驱动程序的开发提供了完全的支持。d r i v e r w o r k s 中包含一个非常完善的源代码生成工具( d r i v e r w i z a r d ) 以及相应的类库和驱动程序样本,它提供了在c + + 下进行设备驱动程序开发的支持。4 d r i v e r n e t w o r k sd r i v e r n e t w o r k s 是针对w i n d o w s 网络驱动开发的一个模块。在它的核心部分,d r i v e r n e t w o r k s 是一个针对n d i sd r i v e r s 和t d ic l i e n t s ( d r i v e r s o c k e t s ) 的c + + 的类库。d r i v e r n e t w o r k s 中也有q u i c k m i n i p o r t w i z a r d 用来直接开始一个n d i s m i n i p o r t或i n t e r m e d i a t ed r i v e r 工程。它可以让用户快速的生成所有采用d r i v e r n e t w o r k sc + +类库编写的n d i s 驱动程序的编译,安装和调试所需要的文件5 s o f t l c es o f l l c e 是一个功能极其强大的内核模式调试器,它支持在配置一台单独的计算机或两台计算机下进行设备驱动程序的调试。6 b o u n d s c h e c k e rd r i v e re d i t i o nb o u n d s c h e c k e r 驱动程序版采用了n u m e g a 针对应用程序开发的一种创新的错误检测技术。b o u n d s c h e c k e r 驱动程序版中提供了参数确认和系统实施可以用来监视和跟踪在不同的设备驱动程序与其它的操作系统的组件之间的所有的交互作用。配置向导提供了对于b o u n d s c h e c k e r 采集到的各种类型的大量信息的精确的控制。b o u n d s c h e c k e r 驱动程序版当前支持w i n d o w sn t w i n d o w s2 0 0 0 ,w i n d o w sm i l l e n n i u me d i t i o n 和w i n d o w s9 8 。7 d r i v e r w o r k b e n c hd r i v e r w o r k b e n c h 可以使用户进一步了解系统崩溃时的d u m p 文件和当时的事件。由于与b o u n d s c h e c k e rd r i v e re d i t i o n 集成在一起,在d r i v e r w o r k b e n c h 中可以看到在系统崩溃前或其登录的时候由b o u n d s c h e c k e r 采集到的数据。这种独特的查看系统的方式提供了空前的能力,使得可以通过查看在系统崩溃之前系统实际活动的踪迹来发现问题之所在。d r i v e r w o r k b e n c h 中包含的t m e t i m ed r i v e re d i t i o n 是一个性能分析工具,可让w i n d o w sn t 的设备驱动开发人员发现并修正驱动程序的性能瓶颈。t r u e t i m ed r i v e re d i t i o n 可以满足设备驱动程序和内核模式下代码开发人员分析软件性能的一般要求。根据开发人员新的需求,一些额外的功能将出现在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 o r k b e n c h 当前支持w i n d o w sn t和w i n d o w s9 x 。8 f i e l d a g e n tf i e l d a g e n t 可让用户对运行在客户的计算机上的驱动程序进行处理。由f i e l d a g e n t 收集到的信息可用于追踪到那些可能只发生在特定的配置环境下问题的原因。f i e l d a g e n t 当前支持w i n d o w s n t 和w i n d o w s9 x 。9 t r u e c o v e r a g ed r i v e re d i t i o n用来确保对所有的代码都进行测试的一种代码覆盖率工具。t r u e c o v e r a g e 可以i5基丁p c i 总线的数字信号处理系统的软件开发帮助用户检测代码中的哪些部分已绎被测试,哪些部分还没有被测试。通过在开发过程中测量和跟踪代码的稳定程度和执行情况,可以节约测试时间并提高代码的可靠性。t r u e c o v e r a g e 能够很轻松的收集驱动程序的覆盖率数据,在源代码的上下文中查看这些数据,也可以将多次会话的结果合并以累加覆盖平数据。t r u e c o v c r a g ed r i v e re d i t i o n 当前支持w i n d o w sn t40 ( s e r v i c ep a c k3o rl a t e r ) 和w i n d o w s2 0 0 0 。d r i v e r s t u d i o 虽然包含这么多的l 具。但在实际丌发中主要用到的是d r i v e r w o r k s组什,r 面将介绍该工具的使用方法。d r i v e r s t u d i o 本身不具有集成开发环境( i d e ) ,开发过程要在v i s u a ls t u d i o 的i d e中完成,而d r i v e r w o r k s 则为这个i d e 提供了一个向导( w i z a r d ) ,通过运行s e t d d k g oe k e 文件即可完成环境设置和启动向导如图所示。图3 1d r i v e r w o r k 提供的向导该向导共分九步,包括驱动程序工作平台选择、总线类型选择、确定文件名和类名、驱动程序读写方式、i o 请求排队方式以及资源分配等。通过该向导即可生成驱动程序的主要框架代码和一个测试用的应用程序。3 3 利用d d k 和d r i v e r s t u d i o 开发p c i 设备驱动程序3 3 1 概述由于是开发w d m 型的p c i 总线设备驱动程序,所以在向导中的第一步应选择w d m ( w i n 9 8 w i n 2 k ) 选项,在第二步选择p c i 总线类型,在这一步需输入厂商i d号和设备i d 号,这两个i d 号就足在p c i 配置寄存器中固化的两个号,在此必须保证两者的一致,这是操作系统的驱动程序管理器找到对应硬件的唯一标识。在第七步由于是设置硬件所需的资源因此需根据具体硬件设置,存本课题中设置如f 图:6南京航空航天人学硕十学位论文图3 2p c i 设备资源分配本课题中的数据采集卡需要分配一个中断号和一个内存对象,通过a d dm e m o r yr a n g e 、a d di r q 按钮完成。至于所分配的具体的内存位置和中断号并不需要指明,因为,在即插即用的驱动程序中,具体的内存位置和中断号由操作系统在系统启动时分配。而内存的范围则在数据采集板上的9 0 3 0 的配置寄存器中设置。在本课题中,中断在数据采集完成后由采集卡引发驱动程序处理中断,通过内存读写从采集卡上的双端口r a m 读进内存。在此处除了确定资源配置外,还需在i n t e r f a c e 选项中提供一个w d m 设备驱动程序所需的全局唯一标识符( g u i d ) ,该标识符用g u i d g e n实用程序牛成,以保证全局唯一。这个标识符是应用程序寻找对应的驱动程序所用的也是唯一的标记。完成了向导的设置工作之后,生成了驱动程序的基本框架,包括:内存对象、中断对象、中断处理例程、读写例程等。其中中断处理例程在本课题中只负责驱动程序与硬件的交互,而读,写例程既负责驱动程序与硬件,又负责驱动程序与上层应用程序的交互。下面将介绍这些对象和例程在本课题中的使用。3 3 2 内存对象及使用内存对象是本课题中驱动程序与采集板通讯的关键,通过操作系统的管理,可以认为该对象在物理上直接指向采集板上2 kx1 6 的共享r a m 。通过该对象的成员函数i n w 就可以读取采集到的数据。因为板上r a m 是1 6 位的,因此使用i n w 一次读取1 6 位。成员函数i n w 原型如下:形式l :每次从偏移量b y t e o f f s e t 处读取一个字,由返回值返回。基了p c i 总线的数字信号处理系统的软件开发u c h a ri n w ( u l o n gb y t e o f f s e t ) ;形式2 :每次从偏移量b y t e o f f s e t 处读取c o u n t 个字,存在b u f f e r 中。v o i di n w (u l o n gb y t e o f f s e t ,p u s h o r tb u f f e r ,u l o n gc o u n t) ;在本驱动程序中主要使用形式如下:u l o n gu o i t s e t u p = o :u s h o r tb u f f e r 2 0 4 8 ;分配2 k 内存u l o n gc o u n t = 1 0 2 4 :i n w ( u o f f s e t u p ,b u f f e r ,c o u n t ) ;从2 k 存储器的上半区读l k数据内存对象在课题中也用来发送控制字,以控制a d 启动、停止等。实际上控制字是通过p l x9 0 3 0 上的通用i o 引脚发送的。该引脚的读写通过读写局部配置寄存器第5 4 h 号单元完成,而局部配置寄存器被p l x9 0 3 0 强行映射成p c i 的第一个内存空间。所以定义一个指向第一个内存空间的内存对象,通过该对象即可发送控制字。使用o u t d ( ) 函数。实现如下:o u t d ( 0 x 5 0 ,0 x 4 0 7 8 0 0 0 0 ) ;复位p c i9 0 3 0 和d s po u t d ( 0 x 5 4 ,0 x 0 0 2 4 9 4 b 6 ) ;启动a do u t d ( 0 x 5 4 ,0 x 0 0 2 4 9 4 b 2 ) ;置中断3 3 3 中断处理程序设计中断处理程序在该驱动程序中主要用来响应采集板的中断,以从共享存储器中读取数据,在该驱动程序中开辟了2 k 的存储区用来存储从板上共享存储器中读到的数据。该存储区与板上共享r a m 都分上半区和下半区两部分。中断在两种情况下发生:1 板上r a m 上半区写满;2 下半区写满。采用上下半区技术,可以使得驱动程序在读取数据时,板上采集到的数据依然可以存到另一半区,两者不会相互冲突。在中断处理程序的处理上还采用了另外一种技术

温馨提示

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

评论

0/150

提交评论