By Alan Hume
Software Manager – Pickering Interfaces
翻译:Sandy-广州虹科电子科技有限公司

理想的测试系统可以认为是其组成部分的总和,包括测量和激励硬件,信号切换,电缆以及可能 的大规模互连系统,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不同,不可能提供在任何系统上都可以使用的单个驱动程序。 必须为使用的Linux内核专门编译驱动程序。 请与PXI模块供应商联系,以获取对所使用的特定Linux系统的支持。 通常,供应商将需要知道所使用的精确Linux发行版。 Linux的某些版本,尤其是实时版本通常不可用,可能会给PXI模块供应商带来问题。

寄存器级接口

如果没有可用的驱动程序用于所选的测试系统,则可以使用低级寄存器级别控制来控制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兼容类的特定驱动程序同时提供类功能和其他特定于供应商的功能。


IVI驱动程序(从IVI-3.1规范复制)

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


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

IVI配置存储

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

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的驱动程序会话。

NI MAX的屏幕截图

必须始终记住,只能互换软件实现方式上的差异;不能合并硬件和性能上的差异。 用户应用程序应使用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中操纵逻辑名称和虚拟名称,以使该代码段可以操作来自不同制造商的不同开关模块,而无需修改代码。

如果将来某个时候有其他供应商提供的新开关产品可用,那么所要做的就是创建一个新的Driver
Session,定义要使用的驱动程序,并创建Virtual Name表以定义由新的驱动程序导出的通道名称的关系。然后可以修改逻辑名称以链接到新的驱动程序会话,然后用户应用程序将使用新模块, 而无需修改或重新构建应用程序。

结论

如您所见,有许多因素需要考虑。 但是最好事先进行研究以简化集成项目。 如果您需要更多信息,请联系系统中使用的PXISA和PXI供应商。

经Pickering Interfaces许可转载“PXIMate™: 使用PXI的实用指南” 版权所有2014 Pickering Interfaces –保留所有权利

关于Alan Hume:
艾伦·休姆(Alan Hume)是Pickering Interfaces的软件经理,Pickering Interfaces是面向各种应用和行业的信号切换和调节市场创新者。

他于1975年毕业于英国米德尔塞克斯理工学院(Middlesex University),获得了工程学荣誉学位,并于1990年获得了CADCAM的硕士学位。

艾伦以前曾在以下公司担任过高级设计工程职位:Marconi Instruments(现为Aeroflex的一部 分 ),Hewlett Packard( 现 为 Keysight),Seagate Software 和 Dage Precision Industries。

原文链接:https://www.pickeringtest.com/content/pdf/Articles/SelectingtheRightDeviceDriverforPXI.pdf

为PXI硬件选择合适的设备驱动程序–VISA还是IVI?相关推荐

  1. windows 编写的硬件驱动_哪个是PXI硬件合适的设备驱动程序?VISA还是IVI?

    理想的测试系统可以认为是其组成部分的总和,包括测量和激励硬件,信号切换,电缆以及可能 的大规模互连系统,UUT电源,外部PC或嵌入式控制器,操作系统(OS)和编程环境.每个部件根据诸如UUT测试参数, ...

  2. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  3. Windows 成功地加载了这个硬件的设备驱动程序,但找不到硬件设备。 (代码 41)

    被这个问题困扰了好多天,试了网上说的很多办法都无法成功.好在现在解决了 解决方案是: 1)在设备管理器,右键点击有黄色问号的设备,选择更新驱动程序软件 2)选择浏览计算机以查找驱动程序软件 3)在新界 ...

  4. Linux 设备驱动程序(二)

    系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序( ...

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

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

  6. linux如何切换到设备,如何编写Linux设备驱动程序(转)

    序言 Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环 境下的驱动程序有很大的区别.在Linux环境下设计驱动程序 ...

  7. USB协议与Windows USB设备驱动程序笔记

    USB概述 USB主控制器负责数据处理,USB根集线器(ROOT HUB)提供一个连接USB主控制器与USB设备之间的接口和通路.USB集线器(USB HUB)可以对原有的USB端口在数量上进行扩展. ...

  8. python无法初始化设备_【无法初始化这个硬件设备驱动程序】无法初始化这个硬件的设备驱动_无法初始化d3d...

    2017-08-25 16:30:37 在安装驱动的过程中也会出现很多问题,有的win7用户在安装驱动失败后,在设备管理器中有个硬件前有感叹号,打开属性一看,显示"Windows无法初始化这 ...

  9. 系统未正确安装新的设备驱动程序后 开机总是出现“欢迎使用找到新硬件向导”...

    原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/love254443233/article/details ...

  10. 系统未正确安装新的设备驱动程序后 开机总是出现“欢迎使用找到新硬件向导”

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://blog.csdn.net/love254443233/article/detai ...

最新文章

  1. HTML框架IFrame结合JS在主页面和子页面间传值
  2. python中怎么做分组问题_详解Python中的分组函数groupby和itertools)
  3. IT工程师必备的认证
  4. JS页面跳转的各种形式
  5. 精度,精确率,召回率_了解并记住精度和召回率
  6. 三个数相减的平方公式_快收好这份小学数学公式大全!孩子遇到数学难题时肯定用得上...
  7. spark-streaming连接flume时报错org.jboss.netty.channel.ChannelException: Failed to bind to: /IP:PORT
  8. android csv显示乱码问题,Android CSV解析器问题
  9. 奥巴马写的c语言正方形,团体程序设计天梯赛-练习集 L1-015 跟奥巴马一起画方块...
  10. 入手mac后,这5个技巧和窍门你应该知道
  11. 问题-[致命错误] Project1.dpr(1): Unit not found: 'System.pas' or binary equivalents (DCU,DPU)
  12. Word中的Visio图直接转换为图片
  13. PDF文件如何旋转页面保存
  14. 关于法线贴图、颜色贴图和高光贴图
  15. 只有外包公司的offer,那没得选?
  16. 逆波兰式的产生及计算(C++/Java)---编译原理
  17. 如何把很多照片拼成一张照片_怎样用手机将多张照片拼成一张组合图?
  18. SpringSecurity:授权
  19. bedtools从剪切位点两边提取序列
  20. Abbkine BCA法 蛋白质定量试剂盒说明书

热门文章

  1. 【漏洞学习——XSS】TOM邮箱存储型XSS一枚
  2. ubuntu下查看硬件配置
  3. C语言数据结构队列的插入和删除
  4. 图表设计-远不止“好看”这么简单
  5. 为什么使用LINUX(有点长,没耐心别看)大家自己体会
  6. 青出于蓝而胜于蓝——揭秘全新的 HWSQL
  7. 1.9w粉丝带动近100w播放量,推广黑马不止一位
  8. Linux设置root权限
  9. 革文B2B行业洞察:增长/存亡,中国医疗加速器第三方维保市场迷局
  10. 日语动词活用和变化规则及用法