理想的测试系统可以认为是其组成部分的总和,包括测量和激励硬件,信号切换,电缆以及可能 的大规模互连系统,UUT电源,外部PC或嵌入式控制器,操作系统(OS)和编程环境。每个部件根据诸如UUT测试参数,物理尺寸,测试时间和预算之类的参数来进行选择。但是上面的列表中缺少一个元素–硬件设备驱动程序。简单地说,驱动程序是您的编程环境和测试系统硬件之间的最后一层。对于PXI,根据该标准需要VISA驱动程序,因此每个PXI模块都会有一个。因此,您不必选择。

IVI 协会 (www.ivifoundation.org) 定义了更智能的设备驱动程序标准,除强制性VISA层外,许多PXI仪器和开关公司也支持该标准。对于许多应用程序都有优势。那么如何选择呢?在接下来的页面中,我们将尝试定义驱动程序的定义以及所有操作系统的限制。然后,我们将比较VISA与IVI驱动程序。您会注意到,与VISA相比,有更多关于IVI的信息。由于IVI概念更加复杂,因此认为这对读者很重要。 同样,将使用IVI开关驱动程序作为编程示例,目的是帮助您了解某些应用程序的优势,以便您确定IVI是否会改善您的测试策略。 请记住,并非每个PXI模块都具有IVI驱动程序。但是阅读本文之后,您将可以根据您的应用程序明智地选择供应商,模块和驱动程序。

支持的操作系统

PXI标准要求PXI模块必须支持32位Windows®或64位Windows®操作系统。通常两种都支持。

可以假定PXI供应商将支持Microsoft 支持的所有Windows版本,尽管在新Windows版本的发布和驱 动程序的可用性之间可能会有所滞后。 在撰写本文时,大多数供应商将提供对Windows XP以及Windows 7和8的驱动程序支持。也可以提供对Windows早期版本的支持,但是由于这些不再由Microsoft完全维护和支持,因此不能 假定它们将长期提供。 请注意,对Windows XP的支持于2014年4月结束,而Windows Vista于2011 年结束。

随着操作系统的发展,可能会出现一些兼容性问题。例如,Windows 8 需要签名的驱动程序,而Windows XP不需要签名的驱动程序,因此为Windows XP开发的驱动程序可能无法安装Windows 8 上。请始终与硬件供应商联系,以确保完全支持要使用的操作系统。此外还应考虑到大多数32位驱动程序都可以在64位系统上运行,因此使用64位Windows并不一定要求使用64位驱动程序。

其他操作系统

可能支持其他操作系统,但这不是PXI标准的要求。如果用户打算使用任何其他操作系统,则必须与硬件供应商联系以检查软件支持的可用性。要成功运行PXI平台,操作系统必须能够连接到PXI总线,并且驱动程序软件必须可用以支持该操作系统。

Linux

Linux越来越多地被采用。但是,与Windows不同,PXI供应商没有提供在任何系统上都可以使用的驱动程序,因此必须为使用的Linux内核专门编译驱动程序。如有需要,则需要与PXI模块供应商联系,以获取对所使用的特定Linux系统的支持。通常,供应商将需要知道所使用的精确Linux发行版。 Linux的某些版本,尤其是实时版本通常不可用,可能会给PXI模块供应商带来问题。

寄存器级别接口

如果没有可用的驱动程序用于所选的测试系统,则可以使用Low-Level寄存器级别控制来控制PXI模块。这 种方法要求程序员具有硬件和控制技术的详细信息,因此,只有在PXI模块供应商愿意提供这种详细程度的情况下,才可以考虑使用。除特殊情况外,不建议采用这种方法进行模块控制。它可能需要模块供应商的大量帮助。

驱动模型

在包括Windows在内的大多数操作系统上,用户无法直接与硬件进行交互,而必须通过为此目的设计的驱动程序进行访问。内核驱动程序提供内核空间中的低级硬件访问,并在用户空间中公开接口。内核驱动程序仅提供一个非常基本的底层接口,并且通常在内核上构建其他模块应用程序编程接口(API),以提供更适合该特定模块控制的接口。可以在较低级别上构建更高级的API,以提供越来越有用的接口,以包含更多功能和增强功能。应用程序可以使用任何可用的API 访问硬件模块。选择将取决于许多因素,例如编程环境,互换性要求,甚至是个人选择。

标准仪器驱动程序和编程层

该图显示了一组典型的选择,从使用内核驱动程序接口的低级编程到增强的高级API,这些API提供了对特定硬件模块功能的逐渐更好的建模。

VISA 是提供硬件控制和资源管理的内核驱动程序。该接口为低级别,仅提供用于模块控制的基本输入/输出功能。此级别的模块控制可能非常复杂,需要详细了解模块/硬件。几乎所有制造商都将提供一个底层API,该API封装了有关硬件模块的专业知识,以简化编程任务。许多制造商提供 IVI 驱动程序,这是基于较低驱动程序的高级API,并且可能符合模块类型的行业标准功能。可能还有比上面显示层更多的层。在许多情况下,制造商将提供非VISA驱动程序集。这在由于操作系统或许可限制而无法使用VISA的情况下很有用。例如,VISA仅在数量有限的Linux发行版中可用,因此用户将被迫使用备用内核接口。

驱动选择

PXI标准需要VISA接口驱动程序,但是,许多PXI模块都提供了一些驱动程序。用户必须选择最适合其应用程序的驱动程序,并且还可能涉及个人选择因素。越来越多的IVI(可互换虚拟仪器)驱动程序被提供。该驱动程序标准专门针对互换性,这将在后 面的部分中进行讨论。某些特定的软件工具(尤其是National Instruments的Switch Executive)也可能需要此工具,这些软件工具仅使用IVI Switch类驱动程序处理模块。在某些情况下,用户可能选择不使用VISA来构建系统。在这种情况下,必须咨询硬件供应商以确认是否有合适的驱动程序。

VISA

VISA(虚拟仪器软件体系结构)标准最初由VXI即插即用系统联盟创建,现在由IVI Foundation(www.ivifoundation.org)维护。该标准的目的是定义一种创建仪器驱动程序的方法使得不同制造商的模块之间具有一定程度的互操作性。

PXI标准鼓励使用VISA标准。VISA的主要特点是:

· 允许在相同的PXI系统上安装来自不同制造商的不同驱动程序。

· 对所有I/O功能使用标准化的VISA I/O层,以确保互操作性。

· 定义编写驱动程序的方法。

· 遵循VISA规范的驱动程序使用定义的数据类型,在某些情况下使用定义的函数名称

· 减少了学习新仪器的过程和开发测试系统的时间.

IVI

IVI(可互换虚拟仪器)标准由IVI协会(www.ivifoundation.org)支持。 IVI的目的是提供一定程度的互换性,仪器仿真以及在某些情况下更高的性能。IVI支持所有主要平台,包括 PXI,AXIe 和GPIB。IVI是一个较高级别的接口,通常较低级别的驱动程序用于硬件接口。与其他驱动程序相比使用它可能会导致速度稍慢。

目标

IVI 协会的既定目标是通过以下方法改善硬件的互换性:

· 简化了用类似仪器替换仪器的任务

· 在仪器过时,保留应用程序软件

· 简化从设计验证到生产的代码重用

通过以下提高质量:

· 建立驱动程序测试和验证准则

通过以下方式提高互操作性:

· 提供一个体系结构框架,使用户可以轻松集成来自多个供应商的软件

· 提供对驱动程序功能(例如范围检查和状态缓存)的标准访问

· 模拟仪器以在硬件不可用时进行软件开发

· 在流行的编程环境中提供一致的仪器控制

与VISA一样,IVI是标准化驱动程序开发的一种方法,但它可以做的更多。IVI规范集提供了许多仪器类别的定义。每个类都有一个标准的编程接口,包括函数名称和数据类型。通过适当使用IVI类驱动程序,用户可以开发独立于硬件的系统,这意味着可以轻松地将仪器替换为来自不同供应商的相似仪器,而无需重新编码用户应用程序。

在编写本文时,定义了以下类:

IVI-4.1:IviScope Class Specification

本规范定义了示波器的IVI类。

IVI-4.2:IviDmm Class Specification

该规范定义了数字万用表的IVI类。

IVI-4.3:IviFgen Class Specification

该规范定义了函数生成器的IVI类。

IVI-4.4:IviDCPwr Class Specification

本规范定义了直流电源的IVI类。

IVI-4.5:IviACPwr Class Specification

本规范定义了交流电源的IVI类。

IVI-4.6:IviSwtch Class Specification

该规范定义了开关的IVI类。

IVI-4.7:IviPwrMeter Class Specification

该规范定义了RF功率计的IVI类。

IVI-4.8:IviSpecAn Class Specification

该规范定义了频谱分析仪的IVI类。

IVI-4.10: IviRFSigGen Class Specification

本规范定义了RF信号发生器的IVI类。

IVI-4.12: IviCounter Class Specification

该规范定义了计数器计时器的IVI类。

IVI-4.13: IviDownconverter Class Specification

该规范为频率下变频器定义了IVI类。

IVI-4.14: IviUpconverter Class Specification

该规范定义了频率上变频器的IVI类。

IVI-4.15: IviDigitizer Class Specification

该规范为频率数字转换器定义了IVI类。

重要的是要记住,类定义不能包含任何特定于供应商的功能,它仅包含仪器类型的基本功能。它还不能考虑性能差异,例如准确性或速度。实际上,必须考虑从一个制造商的模块更换为另一制造商的模块的后果,因为这些模块的行为 可能不完全相同。

IVI驱动程序具有内置的仿真功能。借助此仿真功能,可以在不存在仪器的情况下开发应用程序。这意味着软件开发可以在仪器交付之前或在其他应用程序中使用时开始。

IVI驱动程序架构

IVI驱动程序是一种实现IVI-3.2固有功能规范文档中定义的固有功能的驱动程序,无论它是否 符合类规范。IVI类驱动程序是通用的抽象类,它定义了IVI Foundation成员同意的该类仪器的基本功能。IVI特定驱动程序包含特定于特定供应商的功能,这些功能可能不适用于其他供应商的模块。IVI特定驱动程序可以进一步子定义为IVI兼容类特定驱动程序或IVI自定义特定驱动程序。IVI兼容类的特定驱动程序同时提供类功能和其他特定于供应商的功能。

大多数规范都包含可选的类扩展功能,例如 IviSwtch 中的Scanner功能组。作为可选的,不能假定所有供应商都将提供这些功能。大多数IVI驱动程序属于IVI兼容类的特定驱动程序组,这意味着该驱动程序符合类要求,但添加了超出类定义的其他功能。

除上述内容外,驱动程序可以配备C接口,COM接口或.NET接口。大多数开发环境都可以与C接口驱动程序接口,许多可以与COM接口。.NET接口环境范围更受限制。

IVI配置存储

IVI驱动程序模型的中心是IVI配置存储。该图显示了使用IVI系统时涉及的各种软件元素之间的关系。

IVI驱动程序(IVI-3.1规范)

IVI配置存储是一个XML文件,其中包含模块及其软件驱动程序各个方面之间的定义和关系。IVI软件系统提供了从驱动程序访问存储的方法。提供了用于访问和操作IVI配置存储的工具,尤其是National Instruments Measurement and Automation Explorer(MAX).

可互换开关模块示例

IVI Switch Class 驱动程序是实现互换性的关键。使用该驱动程序,可以将不同供应商提供的软件实现之间的差异从用户应用程序中移出并由IVI软件系统处理。在图中所示的示例中,一对转换继电器用于将两个被测设备(DUT)连接到信号发生器和频谱分析  仪。对于此应用,需要一个同轴RF开关,National Instruments的PXI-2599和Pickering Interfaces的40-780-022都适用于此应用,但是它们使用不同的驱动器,并且对于开关通道名称具  有不同的命名约定,如下图。

切换继电器连接被测设备

互换性的第一步是为通道名称定义虚拟名称。这些虚拟名称将在用户应用程序中使用。下图提供  了NI MAX的屏幕截图,显示了NI-2599 和 Pickering40-780-022的虚拟名称表,其中两张卡的不同命名约定映射到一组通用的虚拟名称。

定义虚拟名称

接下来,采用间接级别将特定驱动程序与National Instruments以及Pickering Interfaces与用户应用程序分离。IVI配置存储提供了这种间接方式。它创建了“指向”驱动程序会话的逻辑名称的概念,此链接可以在存储中更改,从而可以更改逻辑名称以引用不同的驱动程序会话。 因此, 如果可以将NI驱动程序和Pickering驱动程序之间的所有差异封装在一对驱动程序会话中,则可以 简单地将逻辑名称修改为引用任何一个驱动程序会话。然后,用户使用逻辑名称创建一个应用程序。  如果在某个时候要使用备用模块,则可以更改逻辑名称以引用备用驱动程序会话。  因此,仅通过更改逻辑名称的链接,就可以将开关模块替换为其他供应商的开关模块。在下面显示的NI MAX的截图快照中,逻辑名称“ prog_sw”链接到Pickering 40-780-022的驱动程序会话。

必须始终记住,只能互换软件实现方式上的差异;不能合并硬件和性能上的差异。用户应用程序应使用IVI Swtch类驱动程序进行编码,因此:

err = IviSwtch_init(“prog_sw”, 0, 0, &vi);

err = IviSwtch_Connect(vi, “DUT1_IN”, “SGEN”);

err = IviSwtch_Connect(vi, “DUT1_OUT”, “SPA”);

此代码使用逻辑名称标识硬件/软件组合,并使用虚拟名称标识开关终端通道。它提供了完全可互换的代码,因为可以随时在IVI Configuration  Store中操纵逻辑名称和虚拟名称,以使该代码段可以操作来自不同制造商的不同开关模块,而无需修改代码。如果将来某个时候有其他供应商提供的新开关产品可用,那么所要做的就是创建一个新的DriverSession,定义要使用的驱动程序,并创建Virtual  Name表以定义由新的驱动程序导出的通道名称的关系。然后可以修改逻辑名称以链接到新的驱动程序会话,然后用户应用程序将使用新模块,  而无需修改或重新构建应用程序。

结论

如上所见,要简化系统集成商项目,有很多方面需要考虑。如果您需要需要更多相关信息,欢迎添加关注或者随时联系我们!

点击边框调出视频工具条

关于虹科测试测量

虹科是一家在测试测量行业经验超过10年的高科技公司,虹科与世界知名的测量行业巨头公司Marvin Test以及Pickering Interface合作多年,提供领域内顶尖水平的基于PXI/PXIe/PCI/LXI平台的多种功能模块,以及自动化测试软件平台和测试系统。事业部所有成员都受过国内外专业培训,并获得专业资格认证,所有工程师平均5年+技术经验和水平一致赢得客户极好口碑。我们积极参与行业协会的工作,为推广先进技术的普及做出了重要贡献。至今,虹科已经为全国用户提供了100+不同的解决方案和项目,并且获得了行业内用户极好口碑。

windows 编写的硬件驱动_哪个是PXI硬件合适的设备驱动程序?VISA还是IVI?相关推荐

  1. usb接口驱动_技术丨USB接口无法识别设备的处理方法

    在使用计算机时,如果本来能识别U盘/移动硬盘的USB接口,突然不能识别该设备了,要怎么办呢?本文,我们就为大家讲讲USB接口不识别设备的问题. 01 排除USB硬件问题 首先我们要排除USB硬件问题. ...

  2. 李洪超 硬件工程师_做一个优秀硬件工程师

    优秀的硬件工程师应该具备 1. 快速学习的能力: 现在的技术,标准和芯片更新的太快了,快到你根本来不及系统的了解它,只能通过特定的项目,需求进行了解:另一方面对于公司来说,需要做的硬件产品也是变化很快 ...

  3. python硬件驱动_硬件驱动python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! linux获取linux硬件信息的方式,有很多. 1.使用puppet或者sal ...

  4. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...

    原标题:从零开始:手把手教你安装深度学习操作系统.驱动和各种python库! 为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指 ...

  5. python写硬件驱动_用Python驱动开源硬件|课程开发者的对话

    随着中小学创客教育的推进,开源硬件逐步被教育工作者所了解并进入了中小学课堂.从一开始的小规模应用到区域级别的大规模推广,开源硬件因为其价格低廉.性能强大和资源丰富,加上扩展性好,越来越得到教师们的认可 ...

  6. rs232串口驱动_电脑主板RS232串口硬件设计

    更多硬件设计培训视频, 欢迎加入微信公众号"陈苍硬件设计" RS232属于一种电平标准,采用UART异步通信串行数据总线协议.工业电平标准RS422和RS485同样采用UART协议 ...

  7. i219v微星 驱动_适用于WinPE的I219V英特尔驱动程序

    存储在NAS中的备份文件,并将启动映像发送到客户端(客户端与服务器的型号相同),以便PXE引导和映像或恢复其驱动器. 轻松的工作. 问题是驱动程序支持. 由于我有很多时间,我测试了尽可能多的解决方案来 ...

  8. 在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序

    在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序 备份数据 先备份数据,由于原来的Windows XP已经不能正常启动,因此就使用光驱启动Windows XP P ...

  9. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态

    嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...

最新文章

  1. Golang 解决no buildable Go source file in问题
  2. 【已解决】GO语言开发中调用另一个库报错 cannot refer to unexported name XXXX
  3. 分享一下字符串匹配BM算法学习心得。
  4. 浅谈runtime运行时机制
  5. 巨潮网怎么下载年报_上市公司年报(或财务报表)在哪里下载?
  6. 美国计算机协会ACM子刊中国特辑:中国的人工智能初创企业
  7. 【MFC】遍历文件夹及其子文件夹
  8. python规则引擎开发经验_关于物联网规则引擎技术,你想要知道的都在这儿!
  9. 对于Vue组件的初步认识(未整理)
  10. 分析 tuning-primer.sh 源码
  11. My sql 常用函数
  12. 采用KubeSphere的kk,部署安装多节点服务的kubernetes-v1.18.6和kubesphere-v3.0.0的踩坑过程记录,及反思
  13. 【电脑讲解】电脑常用快捷键,10个常用快捷键提高电脑工作效率
  14. DaDa英语怎么样,给孩子报名哒哒英语上课好不好?
  15. python操作键盘和鼠标_1、[python] PyMouse、PyKeyboard用python操作鼠标和键盘
  16. 明星代言的商品一般都不便宜,为何还那么受青睐?
  17. phpmyadmin 4.8.1 Remote File Inclusion Vulnerability (CVE-2018-12613)漏洞复现
  18. 分布式架构项目的衡量指标及其目标
  19. html5调整文字段落之间的距离,css设置p段落上下间距距离
  20. 开发淘宝、京东、苏宁、拼多多转链软件

热门文章

  1. cmd指令大全指令_干货 | Linux 超全实用指令大全
  2. gimp 去掉一个颜色的背景_不用背景图,PPT也能做的高大上?网友:看完这页PPT,我信了...
  3. java 取pdf表格内容数据_Java 在PDF中添加表格
  4. 季节前面为什么用in_英语语法大全,用这16首歌诀记高效又有趣!
  5. captura录屏发生了一个错误_录屏教程的方法有哪些?学会这两种轻松搞定
  6. 参数数组长度_JS数组操作方法总结(二)——pop、shift、push、unshift
  7. python怎么装饰_如何理解python装饰器
  8. python脚本如何监听终止进程行为,如何通过脚本名获取pid
  9. 【Java核心面试宝典(2),记一次美团Java研发岗的面试经历
  10. 你花了多久弄明白架构设计?kafka日志清理