为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 基于NI-VISA的第三方板卡驱动程序开发方法研究

基于NI-VISA的第三方板卡驱动程序开发方法研究

2017-12-28 4页 pdf 585KB 73阅读

用户头像

is_731727

暂无简介

举报
基于NI-VISA的第三方板卡驱动程序开发方法研究第29卷第4期增刊2008年4月仪器仪表学报ChineseJoumalofScientificInstrumentVbl.29No.4Apr.2008基于NI—VISA的第三方板卡驱动程序开发方法研究奉贾惠芹薛朝妹(西安石油大学西安7l0065)摘要建立了基于N1.vISA的第三方板卡驱动模型,介绍了在L曲Windows/CⅥ开发平台下利用NI.vlsA识别和开发第三方板卡驱动程序的方法,并重点讨论了Nl-VISA对中断和DMA方式支持的实现方法。利用NI-vISA所开发的板卡驱动程序既符合vlSA规范,又能使用户...
基于NI-VISA的第三方板卡驱动程序开发方法研究
第29卷第4期增刊2008年4月仪器仪学报ChineseJoumalofScientificInstrumentVbl.29No.4Apr.2008基于NI—VISA的第三方板卡驱动程序开发方法研究奉贾惠芹薛朝妹(西安石油大学西安7l0065)摘要建立了基于N1.vISA的第三方板卡驱动模型,介绍了在L曲Windows/CⅥ开发平台下利用NI.vlsA识别和开发第三方板卡驱动程序的方法,并重点讨论了Nl-VISA对中断和DMA方式支持的实现方法。利用NI-vISA所开发的板卡驱动程序既符合vlSA规范,又能使用户通过一个图形化界面测试板卡的基本功能,从而缩短了用户建立自动测试系统的研发周期。关键词N1.vISA第三方板卡驱动模型驱动开发studyofDriVerDeVelopmentMethodforThird—PaI呵BoardBasedonNI.VISAJiaHuiqinX∞Zhaomei∞‘矾Pelrol2姗U咖ers吼x{1矾1、Q065,chi呐AbstractT11ispaperdesignedtheboard“Vermodelb丛edonVlSA,intI.0ducedth.rd-parlyboardidentifiedmethodunderLabWindows/CVI,anddiSc惦sedtheprog舯mingmethodforinterrIlpt柚dDMAmode.TheadV锄tageof“VersdeVelopedbyNl-VISAcanmeetVISAspecmcation,锄dtestfunctionsofboardthrou曲agraphicaIuserinterf.ace,sothedeVelopmentperiodofauto.teStsyst锄is他duced.KeywordsNI-VISAThird-ParIyBoardDriverModelDriVerDevelopment1引言虚拟仪器以其研制周期短,系统开放、灵活,可与计算机I剧步发展,从而成为测试仪器的丰流,目前在航天、航海等领域应用相当广泛。它以通用计算机为核心,利用I/O接口设备获取信号,通过计算机软件实现对信号的处理、存储与显示,通过板卡驱动程序处理计算机与板卡间的通讯lll。因此仪器驱动程序作为虚拟仪器系统结构中承上启下的一层,其模型化与化越来越重要,如何解决板卡驱动程序的统一性与互兼容性,成为虚拟仪器系统组建的关键。VISA(vinuallnS仃umentSoRwareArchitecture,简称VlSA)作为一种新的虚拟仪器软件体系结构,由于它既可以表示接U特件又可以详细表示仪器的特性,因此在板卡驱动程序的开发中应用干H当广泛12J。·基金项目;西安石油大学博上启动项目【Z07050)1312基于VISA的板卡驱动开发模型的建立2.1板卡驱动模型的设计在计算机系统中的·.sys、·.dll等文件,是特指硬件板卡的驱动配置文件。图l为windows操作系统F的板卡驱动开发模型,从图中可以看出,在windows下的驱动封装了对板卡底层寄存器的访问方法,它运行在内核模式,为应用层访问板卡提供了一个接口。图1windows的板卡驱动开发模型第4期增刊基于NI.vISA的第三方板卡驱动程序开发方法研究刁≮o而基于VISA的板卡驱动开发模型如图2所图2基于VISA的板卡驱动开发模型从图2可以看出,基于VISA的板卡驱动运行在用户模式。因为VISA已经抽象了所有板卡的实现细节,并提供了应用层访问底层API(ApplicationProgrammingInterface,应用编程接口)函数的功能,不需要内核级编程。对第三方板卡驱动的编写可认为基于VISA规范的应用层驱动来控制仪器-T作。2.2VlSA的内部结构图3为VISA的内部结构,它的最底层是VlsA资源管理器,负责管理与控制不同种类的仪器,进行标准化处理。最上面的VISA定义了3个级别的仪器驱动资源:I/o级资源、仪器级资源和用户级资源。I/o级资源负责对仪器实现各种具体操作;仪器级资源负责将I/O级中的各种操作按仪器类型进行分类;用户级资源则是用户利用VISA资源实现的应用程序。每上一个级别的程序可以调用其下面级别所有程序的功能:在最顶端是虚拟仪器应用程序,它利用VISA标准的开放性、兼容性和町移植性,直接调用vISA函数,将不同的仪器功能组合起来完成需要的测试功能【3】o。虚拟仪器应用程序jj用户级资源仪器级资源I,o级资源资源管理器,图3VISA的内部结构作为仪器l/o函数库,VlSA编程与传统的I/O软件编程基本相同,主要是通过设备的端口读写操作和属性控制,实现对仪器命令与数据的交换。132VlSA函数按照功能基本上可以分为基本I/o、格式化I/o、内存l/o、资源管理、共享内存管理、事件处理和属性控制等几大类。作为通用I/o标准,VISA具有与仪器硬件接口、具体计算机无关的特性,即不同厂家生产的控制器只要按VPP标准开发了VlSA,都能调用同一VISA应用程序去控制仪器,而不像普通的I/O函数用户在使用不同控制器时必须修改应用程序,这样给用户提供了很大方便。用户可以在VlSA中利用SCPI命令来控制基于消息基的仪器和带有SCPI命令翻译节点的基于寄存器级的仪器,对于不接收SCPl命令的仪器,也可以通过使用VIsA的寄存器读写命令直接访问仪器的底层寄存器的方法来实现对仪器的控制。结合VISA的内部结构,可以总结出利用VJSA开发第三方板卡驱动程序的基本步骤:第一步VlSA识别第三方板卡;第二步,打开与第三方板卡的VISA会话:第三步利用VISAAPl函数实现和板卡寄存器之间的读写操作:最后一步,任务完成关闭VlSA会话。下面详细介绍每一步的实现方法。3N卜VISA识别第三方板卡的方法美国国家仪器公司(简称,Nl公司)作为VlSA标准的提出者与首次执行者,其开发的NI.VISA软件封装了VlSA规范定义的所有VISAAPI函数,这些APl函数可以通用于基于Ethemet,GPIB,GPIB.VXI,VXI,PXI和串口等多种总线的测试系统,使用者不必再研究各个接口总线特定的API。另外NI.vISA通过使用VlSA.P硒sport技术,可以最大化的支持其他公司的硬件资源,保护了各个厂家和客户的前期软件投资,也提高了自己软件产品的通川性和兼用性。为了使所开发的第三方板卡驱动程序具有更好的通用性,并能在MeaSurement&AutomationExpIorer(简称MAX)软件平台下识别。开发基fVISA的板卡驱动程序需要执行如下的步骤:3.1产生板卡驱动配置文件在安装了NI.VISA软件后,运行“VlSADriverDevelopmemWi盈rd’’工具,弹出如图4的对话框,在对话框中可以设置制造商标识(Manuf.actureID)、制造商的名称(Manufacture第29卷芾4期蚺1q仪器仪表学报Chjne5eJoumaIofSclentlncInstrume几!v。i29No4ADL2|)08Name)、板卡的标识(Modelcod时、扳卡的名称(ModelName1等配置信息,按J!l[“VlsADnverDevelop⋯twjzam”的提示,产生一个描述板卡驱动信息的文件.把该文件安装至N1.vIsA的安装口录F。l乜ⅢMm。I。for。。。。,喘勰l骞蠹誊黧曼!秀氍≥≥我黼===。”。。Ⅲ-tl㈣⋯Ⅲ⋯·¨-⋯⋯㈣nk⋯⋯Ⅲhl·t⋯⋯⋯一m⋯·⋯㈣¨,。’々b“h⋯ⅡⅡ⋯”⋯V"Ⅱ-一I_O】nh删h⋯Ⅻ‘¨⋯⋯m⋯“1cP^⋯‘h0】nk城m"⋯“*c-l口m⋯⋯一_-口‰⋯。⋯⋯一⋯⋯ⅣⅢ』!塑!哇型!坐!!&!!一罔4板F的倒件佑0M置空d32在M^x下查看扳卡信息扪丌MAx软件,弹出如图5肿界面,选t}NIvlPxldl|动志连接席,谚文件川下vlsA和Pc歧打PxI总线设备进行通信。零黑●蓐各:。}。ji争H5MAx#Ⅲ#㈨MAx枚举系统安装的所有硬件资源.不在列表范m类的Pcl硬件资源,MAx是不会在设鬻和接口别表中显示出米。NI公司特殊说‘目,这两个文件的内彝,_r万小要政变。川户如果要将第一方饭}标讲号加剑这两个文件中,需要填下j个发送到N】的技术支持部『】,得到批准以后,0:发布MAx的新版本时,文t#中就会出现新的设备项。但是在测试阶段,或者新产品发布阶段.可以改变这两个立什内容.使新的硬州获得NI.vIsA和MAx的支持。4第三方板卡与vlsA间的通信和I/0读写功能实现在安装丁I.abwjndows忙vI虚拟仪器软件开发甲台后,用户利用N1.vlsA提供的接【J隅数可编写板*的J连用层动态链接库驱动程序㈤。4】第三方板卡与vIsA建立会话(11查询与指定接¨连接的硬件查询硬件板卡资源是通过v1FjndRsm函数来实现的。函数格式蛐F:StmLLs'V1FindRsrcr&vldehuItRM、(2)打开与设蔷的vIsA会话利刷v10口en函数打开与蹬旃的vIsA会话。status2VlO∞n【V1dehu】lRM-msIrD㈤VI』u【一I一1000,&V13500):42vIsA基本【/0功能的实现(I)消息丛仪器的I,o请写功能实现可利用vIsAAPI函数v】PnntHlnslHand¨’”)和vIscanRmslHandH’%■msulI)实现肘仪器的读弓操作。{2)寄存器业仪器的I,o凄写功能实现vIsA【n(8,】6,32)和v【s^0u【(8,16,32)晌数川提供了对寄存器的读弓访问,如果寄存器访问依赖于更高级的地自h空问。则可以调埘低级的vIsA函数.例如v1MaD^ddress、vlPeek8,viPeekl“vlPeek32、ⅥMoveOulwvlMoveoutI“vlMoveoul32函数■43中断支持功能的实现在vIsA标准中,可使用v;smtusv1FuNcHappHand】er函数和vlstamsEvemH8IldIer函数的回调机制完成中断功能。中断执行次序血rF:(1)操作系统在肩动坩载入板卡十断配置信息,中断配置信息保存十l谜产,L的板卡驱动配背文件中;(2】vIsA仪器级驱动配胃激活板卡,产生仪器级中断;(3)板}产生个与板}驱动配置文件中断饽法匹配的中断,然后操作系统蹄由中断到vIsA内核级驱动。vlsA枚举辞个设备,直到定位到产生中断的设备;(4)vIsA山桉级驱动依赖板卡驱动配置文件的配置移除玖序禁川中断;(5)v【sA内核级驱动产生一个第4期增刊基于Ⅻ.VIsA的第三方板卡驱动程序开发方法研究VI_EVent_PCL州STR事件;(6)vIEventPcIINSTR事件可以被仪器级驱动捕获并处理;(7)仪器级驱动可以处理中断,清除中断条件或重新使能中断;(8)当应用程序不再处理中断,则仪器级驱动禁用设备中断。根据以上分析,若要使用中断,首先应该在板卡驱动配置文件中配置一个中断,并且要配置其判断的中断条件和溢出中断的条件。在开发驱动时也要同时用VISAEnableEVENT激活PCIInte删ptEyent,VISA把中断放置于队列中,若要使用队列,必须用VlEv即tPCIINsTR事件类型配置激活事件。4.4支持DMA方式的实现DMA传输不经过cPU,直接进行数据交换,是一种较为快速的数据传输。为了使板卡支持DMA方式,必须实时读取物理内存资源。(1)VISA下建立DMA操作的方法1)用VlSAOpen函数打开VISA内存访问会话。VISA内存访问会话不同于设备会话,它是可直接操作内存块的会话资源;2)调用VISA内存分配函数,以分配和锁定合适的内存缓冲区:3)初始化DMA控制器,这一步依赖于所选的DMA控制器类型。(2)VlSA下操作DMA读的方法1)配置DMA控制器到读操作模式。使用VISAMemo叫Allocation函数返回的地址偏移量作为数据目标地址偏移量;2)开始DMA操作,执行这一步需要参考DMA说明书,可能需要读相应的寄存器或者等待操作完成中断:31当DMA操作完成,数据将被放到分配的内存缓冲区内,可以用VISAMoveln函数完成数据到用户内存的拷贝;4)在执行DMA读操作后,驱动程序利用VISAMoVeIn函数完成锁定缓冲区数据到用户缓冲区的数据拷贝。(3)VISA下操作DMA写的方法1)在DMA写操作前,用VISAMoveOut函数拷贝用户数据到内存;2)把DMA控制器配置到写模式。使用VlsAMemo叫AlIocation函数发回的地址偏移量作为数据源地址偏移量;1343)用VIsAM0veIn函数完成数据到内存区的拷贝;4)开始DMA写操作。执行这一步需要读DMA的相应寄存器。当DMA操作完成后,所有分配的锁定内存资源必须进行释放,否则在关闭内存访问会话后将发生严重的内存泄露。4.5释放内存的方法(1)调用VISAMemo叫Free释放分配的锁定内存;(2)调用VISAClose函数关闭VlSA内存访问会话资源。5制作安装程序’经过上述过程便完成了板卡驱动程序的开发。为了方便用户安装使用,可制作安装程序,在编写安装程序时,需把前面所产生的板卡配置文件连同开发好的板卡驱动程序一同进行打包,并利用LabwindowS/CVl的安装程序发布向导,生成板卡的可安装的驱动程序。6结论本文分析了基于VIsA的第三方板卡驱动模型,介绍了NI.VISA识别第三方板卡的方法,以及利用N1.VISA开发第三方板卡驱动程序的核心技术。利用该方法开发的板卡驱动程序,用户只需要使用图形化的人机界面就可以控制板卡的工作,不用再去操作繁琐的低层接口命令函数,缩短了组建自动测试系统的时间,也提高了软件的复用性。参考文献Il】李琼,付平,张忠亭.虚拟仪器软件结构VlSA的研究【J】.测控技术.1999,l8(8):23.24.’【2】NI·VISAProgrammerRefe咖ceMann皿I【S】。N砒ionaJInstnJmentsCorporation,19呱【31VP蹦.3:neVlSALibra叫【s】.VXlplug&playSysI伽Alliance.1996.【4】Gune加鲫,Lo娟e.IntegmtingVlSA,lVl鲫dATEasytomigraIeIegacyteStsystems【J1.IEEEAerospace柚dEIectmnicsystemsMagazine,2005,20(6):36.38.【5】刘君华.虚拟仪器编程讲言Labwindows/CVl教程【M】.北京:电子工业出版社.200l,45-60.
/
本文档为【基于NI-VISA的第三方板卡驱动程序开发方法研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索