CN107247599B - 仪器驱动模组和仪器驱动方法 - Google Patents
仪器驱动模组和仪器驱动方法 Download PDFInfo
- Publication number
- CN107247599B CN107247599B CN201710496078.0A CN201710496078A CN107247599B CN 107247599 B CN107247599 B CN 107247599B CN 201710496078 A CN201710496078 A CN 201710496078A CN 107247599 B CN107247599 B CN 107247599B
- Authority
- CN
- China
- Prior art keywords
- instrument
- register
- hardware
- state
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Abstract
本发明属于测量技术领域,涉及仪器驱动模组及方法。该仪器驱动模组包括仪器组件驱动模块、缓存管理模块和寄存器访问模块:仪器组件驱动模块用于接收应用程序对仪器硬件的状态查询指令或功能配置指令、将状态查询指令或功能配置指令转化为仪器硬件相应的各个仪器组件的操作命令;缓存管理模块包括仪器硬件对应的寄存器状态缓存,用于根据操作命令将寄存器状态缓存中的数据整体传输至仪器组件驱动模块或寄存器访问模块;寄存器访问模块用于获取仪器硬件的硬件寄存器状态并传送至缓存管理模块,或根据缓存管理模块中的寄存器状态缓存中的寄存器数据对仪器硬件执行功能配置。其实现了应用程序对仪器硬件的快速访问和设置,大大提升了仪器驱动的性能。
Description
技术领域
本发明属于测量技术领域,具体涉及一种仪器驱动模组和仪器驱动方法。
背景技术
仪器硬件作为电子信息的获取装置,发挥着重要的作用。传统的测试行业中,通常是将仪器硬件与待测对象连接,通过手动调节仪器硬件的测试项目实现对待测对象不同参数的测量。这种测试方式由于受与待测对象连接仪器硬件的限制,当需获取不同的测试参数时,需相应更换不同的仪器硬件,受测试项目单一、且难以汇总的影响,大大降低了测试人员的测试效率,增加了数据综合比较分析的难度;而且,更换仪器硬件后,即使设定相同的测试参数,毕竟多项测试数据不是同时测量获得的,难免出现数据精准度有偏颇的情况。
随着技术的进步,在当今的测试系统中,出现了采用计算机同时连接多台仪器硬件对同一待测对象进行测试的方式,这种集成式的测试方式使得数据的汇总和分析更为便捷和全面,大大提高了测试人员的测试效率,提高了数据分析的综合度和精准度。
在集成测试方式中,最为重要的组件之一便是仪器驱动。仪器驱动安装在计算机中,处于应用程序和I/O驱动之间,在测试系统中实现了应用程序与仪器硬件的交流与控制。测试人员利用应用程序查询和设置,通过I/O驱动实现对仪器硬件的访问。
对于PXI(PCI extensions for Instrumentation,面向仪器系统的PCI扩展)等仪器总线一般是基于对仪器硬件的寄存器的操作来实现对仪器硬件的控制,仪器硬件根据内部功能的复杂程度不同会提供数十或数百个寄存器,每个寄存器中具有多个数字位,不同的位对仪器的不同部件功能进行控制。实际应用中,I/O驱动一般只能对单个寄存器整体进行操作,而不能单独对其中的一位进行操作,因此,对仪器功能进行配置时,首先要将涉及到的寄存器先读回,修改其中对应的位,然后再整体写入。很多仪器功能的一次设置都涉及到很多寄存器的不同位的操作,就需要频繁的进行仪器硬件访问,效率低。同时,如果具体应用是对相同种类的多个硬件设备在一个控制台程序上进行控制时,控制台的切换需要不停的从仪器硬件中读取当前控制硬件的所有寄存器内容,会造成巨大的通信的浪费,造成性能的损失。
可见,设计一种能对仪器硬件实现快速访问和设置的仪器驱动框架成为目前亟待解决的技术问题。
发明内容
本发明所要解决的技术问题是针对现有技术中存在的上述不足,提供一种仪器驱动模组和仪器驱动方法,实现了应用程序对仪器硬件的快速访问和设置,大大提升了仪器驱动的性能。
解决本发明技术问题所采用的技术方案是该仪器驱动模组,用于为应用程序对仪器硬件提供状态查询或功能配置,其包括仪器组件驱动模块、缓存管理模块和寄存器访问模块,其中:
所述仪器组件驱动模块,与所述缓存管理模块连接,用于接收所述应用程序对所述仪器硬件的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为所述仪器硬件相应的各个仪器组件的操作命令,并将所述操作命令传送至所述缓存管理模块;
所述缓存管理模块,还与所述寄存器访问模块连接,所述缓存管理模块包括至少一个所述仪器硬件对应的寄存器状态缓存,所述寄存器状态缓存能进行局部修改,用于根据所述操作命令将所涉及到的所述寄存器状态缓存中的数据整体传输至所述仪器组件驱动模块或所述寄存器访问模块;
所述寄存器访问模块,能与所述仪器硬件连接,用于获取所述仪器硬件的硬件寄存器状态并传送至所述缓存管理模块,或根据所述缓存管理模块中的所述寄存器状态缓存中的寄存器数据对所述仪器硬件执行功能配置。
优选的是,所述寄存器状态缓存中包括多个寄存器数据,每个所述寄存器数据具有多位,每位或多位对应所述仪器硬件的一个硬件组件的功能状态;
所述寄存器数据中,一位或多位响应并修改所述操作命令对应的所述硬件寄存器中部分数据位的配置,并保持处于同一对应所述硬件寄存器中的其他数据位不变,经过部分数据位修改的所述寄存器数据更新后以整体访问形式与所述仪器组件驱动模块或所述寄存器访问模块进行信息交互。
优选的是,所述仪器组件驱动模块包括仪器编程接口单元、仪器组件查询单元、仪器组件配置单元,其中:
所述仪器编程接口单元,与所述仪器组件配置单元和所述仪器组件查询单元分别连接,用于为所述应用程序提供对所述仪器硬件的功能访问接口,接收所述应用程序的状态查询指令或功能配置指令;
所述仪器组件查询单元,还与所述缓存管理模块连接,用于将所述态查询指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令从所述缓存管理模块的对应的所述寄存器状态缓存中得到相应仪器组件的状态数据,以便直接返回给所述应用程序;
所述仪器组件配置单元,还与所述缓存管理模块连接,用于将所述功能配置指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令从所述缓存管理模块的所述寄存器状态缓存中得到相应仪器组件的状态数据,以便对对应的所述仪器硬件进行配置。
优选的是,所述缓存管理模块包括硬件句柄索引单元,所述硬件句柄索引单元以硬件句柄作为索引标识组织所述寄存器状态缓存,用于确定所述仪器硬件的硬件寄存器状态的当前状态、确定是否对所述仪器硬件进行初始化以及更新对应的所述寄存器状态缓存,以保持该所述缓存管理模块中的所述寄存器状态缓存与所述硬件寄存器状态同步。
优选的是,所述仪器组件配置单元还包括寄存器缓存控制块,所述缓存管理模块还包括寄存器缓存队列:
所述寄存器缓存控制块,用于对所述寄存器缓存队列进行管理和执行;
根据所述操作命令,所述仪器硬件对应的所述寄存器状态缓存中的寄存器数据能形成寄存器副本,更新后的所述寄存器副本组织成所述寄存器缓存队列,所述寄存器缓存队列以整体访问形式与所述寄存器访问模块进行信息交互。
一种仪器驱动方法,用于为应用程序对仪器硬件提供状态查询或功能配置,其采用寄存器状态缓存作为所述仪器硬件对应的硬件寄存器状态中转更新,包括步骤:
接收来自所述应用程序的对所述仪器硬件的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为所述仪器硬件相应的各个仪器组件的操作命令;
根据所述操作指令,将涉及到的所述仪器硬件对应的所述寄存器状态缓存中的数据整体传输至所述应用程序;或者根据所述操作指令,将涉及到的所述仪器硬件的对应的所述寄存器状态缓存中的数据整体传输至所述仪器硬件。
优选的是,提供所述仪器硬件的功能访问接口,接收所述应用程序的状态查询指令或功能配置指令;
将所述状态查询指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令得到对应仪器组件的状态数据,直接返回给所述应用程序;
或者,将所述功能配置指令解析成对不同所述仪器硬件的寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据操作命令得到对应仪器组件的状态数据,对相应的所述仪器硬件进行配置。
优选的是,对相应的所述仪器硬件进行配置的过程中包括:以硬件句柄作为索引标识组织对应的硬件寄存器状态进行缓存,根据所述仪器硬件对应的寄存器状态缓存,确定是否对所述仪器硬件进行初始化以及更新硬件寄存器状态,保持所述寄存器状态缓存与所述仪器硬件的硬件寄存器状态同步。
优选的是,保持所述寄存器状态缓存与所述仪器硬件的寄存器状态同步的过程中:
读取所述操作命令对应的所述仪器硬件相应的所述寄存器状态缓存,仅对所述操作指令涉及的所述寄存器状态缓存中的寄存器数据中数据位进行修改,而保持所述寄存器状态缓存中的寄存器数据中其他数据位值不变;
更新并缓存所述寄存器数据,将相关所述寄存器状态缓存的寄存器数据的完整位以整体访问方式与所述仪器硬件进行信息交互。
优选的是,还进一步包括:对所述功能配置指令涉及的所述仪器硬件对应的所述寄存器状态缓存中的寄存器数据进行队列管理和执行;
根据所述仪器硬件对应的所述寄存器状态缓存中的更新后的寄存器数据创建寄存器副本,所述寄存器副本形成队列,以整体访问形式与所述仪器硬件进行信息交互。
本发明的有益效果是:该仪器驱动模组及其相应的仪器驱动方法,通过寄存器状态缓存进行仪器硬件的寄存器状态缓存管理,具有如下优点:
1.对仪器硬件的配置从现有的对仪器硬件进行一次读操作一次写操作,减少成对仪器硬件进行只需要一次写操作,性能提升50%;
2.对仪器硬件参数的读操作从现有的对仪器硬件进行一次读操作,变成无需访问仪器硬件,直接从寄存器状态缓存中获取,性能提升巨大;
3.可以增加批量写仪器硬件标记,从而可以让应用程序对于仪器硬件的访问先集中到在寄存器状态缓存中更新,之后一次将寄存器状态缓存中的寄存器数据一次写入仪器硬件,大大的降低了对于仪器硬件访问的频率;
4.保留了多个仪器硬件的寄存器状态缓存,这样即使控制端切换了当前激活的仪器硬件,对连接的任何仪器硬件的访问都不需要重新访问仪器 硬件,直接在寄存器状态缓存中进行;
5.易于实现多个用户监控方式,例如安装在一台电脑上的多个应用程序,或者多个远程的监控端对具有该硬件仪器驱动的服务器端进行仪器状态监控时,都不需要对底层的物理硬件进行访问,只需要对仪器驱动模组中的寄存器状态缓存进行访问,避免了硬件访问冲突,也不需要采用资源互锁的方式避免公共资源同时访问,提高了效率。
附图说明
图1为本发明实施例中仪器驱动模组的结构框图;
图2为本发明实施例中仪器驱动方法的流程图;
图3为本发明实施例中仪器的整体架构示意图;
附图标记中:
1-仪器组件驱动模块;11-仪器编程接口单元;12-仪器组件查询单元;13-仪器组件配置单元;
2-缓存管理模块;21-硬件句柄索引单元;
3-寄存器访问模块;
4-应用程序;
5-仪器硬件。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明仪器驱动模组和仪器驱动方法作进一步详细描述。
本实施例提供一种仪器驱动模组及其相应的仪器驱动方法,通过采用寄存器状态缓存结构的仪器驱动架构为仪器硬件提供集成控制功能,该集成控制功能至少包括应用程序对仪器硬件的状态查询或功能配置,大大提高了仪器驱动性能。
通常情况下,仪器驱动可以同时对多个仪器硬件进行驱动,一个仪器硬件有多个寄存器,每个寄存器有很多位,每个或多个位对应一个硬件组件的功能。本实施例中的仪器驱动模组,通过建立与仪器硬件的硬件寄存器对应的寄存器状态缓存,并通过对寄存器状态缓存进行缓存中转的管理,避免了应用程序与仪器硬件之间频繁的、直接的数据交换,使得应用程序对仪器硬件的状态查询和功能配置更加高效和快速。
如图1所示,该仪器驱动模组包括仪器组件驱动模块1、缓存管理模块2、寄存器访问模块3,以下将对各模块进行详细说明。
仪器组件驱动模块1,与缓存管理模块2连接,用于接收应用程序4对仪器硬件5的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为仪器硬件5相应的各个仪器组件的操作命令,并将操作命令传送至缓存管理模块2。
其中,仪器组件驱动模块1包括仪器编程接口单元11、仪器组件查询单元12、仪器组件配置单元13,其中:
仪器编程接口单元11,与仪器组件配置单元13和仪器组件查询单元12分别连接,用于为应用程序4提供对仪器硬件5的功能访问接口,接收应用程序4的状态查询指令或功能配置指令;
仪器组件查询单元12,还与缓存管理模块2连接,用于将状态查询指令解析成对不同仪器硬件5的寄存器状态缓存的寄存器数据或寄存器局部数据的操作命令,并根据操作命令从缓存管理模块2的对应的寄存器状态缓存中得到相应仪器组件的状态数据,以便直接返回给应用程序4;
仪器组件配置单元13,还与缓存管理模块2连接,用于将功能配置指令解析成对不同仪器硬件5的寄存器状态缓存的寄存器数据或寄存器局部数据的操作命令,并根据操作命令从缓存管理模块2的寄存器状态缓存中得到相应仪器组件的状态数据,以便对对应的仪器硬件5进行配置。
在上述的仪器组件驱动模块1中,仪器编程接口单元11提供所有仪器功能的访问接口函数,应用程序4通过调用这些驱动接口来访问仪器硬件5。仪器组件配置单元13将来自仪器编程接口单元11的指令解析成对不同硬件寄存器的访问,应用程序4借助缓存管理模块2访问与仪器硬件5内部的硬件寄存器对应的寄存器状态缓存实现状态查询或功能配置。仪器硬件5的状态与缓存管理模块2中寄存器状态缓存中的状态保持同步,应用程序4对仪器硬件5的状态查询或功能配置通过缓存管理模块2直接实现。
缓存管理模块2,还与寄存器访问模块3连接,缓存管理模块2包括至少一个仪器硬件5对应的寄存器状态缓存,寄存器状态缓存能进行局部修改,用于根据操作命令将所涉及到的寄存器状态缓存中的数据整体传输至仪器组件驱动模块1或寄存器访问模块3,包括:根据操作命令将所涉及到的仪器硬件5的寄存器状态缓存中的数据整体经仪器组件驱动模块1读取至应用程序4,实现读操作;或者根据操作指令对涉及到的仪器硬件5的寄存器状态缓存中的数据进行修改,将寄存器状态缓存中更新后的寄存器数据进行缓存,并整体传输至寄存器访问模块3以配置仪器硬件5,实现写操作。
其中,一个寄存器状态缓存中包括多个寄存器数据,每个寄存器数据具有多位,每位或多位对应仪器硬件5的一个硬件组件的功能状态;寄存器数据中,一位或多位响应并修改操作命令对应的硬件寄存器中部分数据位的配置,并保持处于同一对应硬件寄存器中的其他数据位不变,经过部分数据位修改的寄存器数据更新后以整体访问形式与仪器组件驱动模块1或寄存器访问模块3进行信息交互。
缓存管理模块2作为缓存中转站,实现对仪器硬件5的硬件寄存器状态进行读/写访问,当仪器组件驱动模块1要访问仪器硬件5的时候,并不直接进行仪器硬件5访问,例如在读操作时:接收应用程序4对各个仪器组件的状态查询操作指令,通过缓存管理模块2查询对应仪器硬件5的寄存器状态缓存,根据操作指令将寄存器缓存中的对应数据直接读取至应用程序4;例如在写操作时:接收应用程序4对各个仪器组件的功能配置或状态配置操作指令,先通过缓存管理模块2查询对应硬件寄存器的寄存器状态缓存中的寄存器数据,而不需要直接访问仪器硬件5获取当前硬件寄存器状态,接着为对应的寄存器数据建立寄存器副本,将寄存器副本中对应着仪器硬件5的局部寄存器数据修改为硬件寄存器即将更新的值且并入队列进行缓存,将新的寄存器副本整体传输至寄存器访问模块3,之后执行一次硬件访问,对相应的仪器硬件5的硬件寄存器完成配置操作。
寄存器访问模块3,能与仪器硬件5连接,用于获取仪器硬件5的单个或多个硬件寄存器状态并传送至缓存管理模块2以获取硬件寄存器状态,或根据缓存管理模块2中的寄存器状态缓存中的寄存器数据对仪器硬件5执行功能配置。
寄存器访问模块3实现对一个个独立的寄存器进行完整位(即某一个寄存器中所有数位的值)的读写操作。当应用程序4通过仪器组件驱动模块1进行仪器参数配置涉及到的是仪器硬件5的一个硬件寄存器的某一位时,由于寄存器状态缓存中有该仪器硬件当前所有硬件寄存器的最新状态值,因此只需要从中取出对应寄存器数据,并修改对应的位,之后通过一个I/O驱动的写操作就完成了仪器硬件5的配置。
其中,缓存管理模块2包括硬件句柄索引单元21,硬件句柄索引单元21以硬件句柄作为索引标识组织寄存器状态缓存,用于确定仪器硬件5的硬件寄存器状态的当前状态、确定是否对仪器硬件5进行初始化以及更新对应的寄存器状态缓存,以保持该缓存管理模块2中的寄存器状态缓存与硬件寄存器状态同步。这里的硬件句柄指的是缓存管理模块2所管理的仪器硬件的唯一编号,该编号可以根据需求进行自定义或系统自动分配。
寄存器状态缓存按硬件句柄作为索引组织,当需要查询或配置某个仪器硬件的某个硬件寄存器状态时,首先查询硬件句柄索引单元21中是否保存有该仪器硬件5的硬件句柄,如果存在则之前已经完成了对应仪器硬件5的初始化,也就是说硬件句柄索引单元21中已经包含了对应仪器硬件5的所有寄存器状态缓存;如果不存在该硬件句柄,此时先执行仪器硬件5初始化,也就是将该硬件句柄对应的仪器硬件5的所有硬件寄存器状态都一次性进行读取,并保存到该仪器硬件5以硬件句柄作为索引的寄存器状态缓存中。当然,仪器组件驱动模块1通过寄存器访问模块3成功完成寄存器的写操作后,也要将新的寄存器数据同时更新到对应仪器硬件5的寄存器状态缓存中,使得寄存器状态缓存总是与硬件寄存器状态保持同步。
优选的是,仪器组件配置单元13还包括寄存器缓存控制块,缓存管理模块2还包括寄存器缓存队列:
寄存器缓存控制块,用于在执行功能配置操作时对缓存管理模块2中的寄存器缓存队列进行管理和执行,包括执行队列的创建、队列的传输及队列的清空;
根据操作命令,仪器硬件5对应的寄存器状态缓存中的寄存器数据能形成寄存器副本,更新后的寄存器副本组织成寄存器缓存队列,寄存器缓存队列以整体访问形式与寄存器访问模块3进行信息交互。
应用程序4在开始一次新的单次或批量仪器硬件5配置动作指令前,可先通过仪器组件配置单元13发送配置开始指令,通知寄存器缓存控制块发送开始消息给缓存管理模块2,缓存管理模块2创建一个新的寄存器缓存队列,随后的应用程序4所有配置动作对应的硬件寄存器都将创建副本并进入寄存器缓存队列;本次配置动作结束时,应用程序4通过仪器组件配置单元13发送单次或批量仪器配置动作结束指令,通知寄存器缓存控制块发送结束消息给缓存管理模块2,缓存管理模块2将寄存器缓存队列中的所有更新后的寄存器副本(寄存器队列数据)通过寄存器访问模块3一次性写入仪器硬件5,完成单次或批量仪器硬件5的参数配置。
这种通过缓存管理模块中转缓存的方式,在应用程序对仪器硬件一次性进行多项参数设置的时候,尤其能突显优势。例如:在一次测量过程中,需要通过应用程序操控其中的一台频谱仪(即仪器硬件)进行频率、幅度等多参数项设置,此时应用程序下发的功能配置指令经过一系列的指令转换后,将对应该频谱仪的寄存器状态缓存的对应位进行修改,当所有设置参数都设置完毕后,对应该频谱仪的寄存器状态缓存中的寄存器数据一次性传输到寄存器访问模块,对频谱仪的硬件寄存器进行更新,从而对该频谱仪进行功能配置,应用程序和仪器硬件之间仅需一次写操作即可,大大减少了对仪器硬件的写操作次数,提高了驱动访问性能。
相应的,本实施例还提供一种对应的仪器驱动方法,通过建立与仪器硬件的硬件寄存器对应的寄存器状态缓存中转更新的步骤,并通过对寄存器状态缓存的管理或中转更新的管理,避免了应用程序与仪器硬件之间频繁的、直接的数据交换,使得应用程序对仪器硬件的状态查询和功能配置更加高效和快速。
如图2所示,该仪器驱动方法包括步骤:
接收来自应用程序的对仪器硬件的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为仪器硬件相应的各个仪器组件的操作命令;
根据操作指令,将涉及到的仪器硬件对应的寄存器状态缓存中的数据整体传输至应用程序:即将涉及到的寄存器状态缓存中的对应数据整体直接读取至应用程序,从而完成应用程序对仪器硬件的状态查询;或者根据操作指令,将涉及到的仪器硬件的对应的寄存器状态缓存中的数据整体传输至仪器硬件:即对涉及到的寄存器状态缓存中的对应数据进行修改,并将更新后的寄存器数据整体缓存,操作结束后整体写入仪器硬件,从而完成应用程序对仪器硬件的功能配置。
其中,接收来自应用程序的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为相应的各个仪器组件的操作命令的步骤包括:提供仪器硬件的功能访问接口,接收应用程序的状态查询指令或功能配置指令;
接着,将状态查询指令解析成对不同仪器硬件的寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据操作命令得到对应仪器组件的状态数据,直接返回给应用程序;
或者,将功能配置指令解析成对不同仪器硬件的寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据操作命令得到对应仪器组件的状态数据,对相应的仪器硬件进行配置。
由于寄存器状态缓存中的寄存器数据与仪器硬件保持同步,因此将寄存器状态缓存中的寄存器数据直接读取至应用程序即可,应用程序对仪器硬件的状态查询实现较为简单。相比之下,应用程序对仪器硬件的配置实现较为复杂,因此以下将对功能配置过程进行说明。
该仪器驱动方法中,以硬件句柄作为索引标识组织对应的硬件寄存器状态进行缓存,根据仪器硬件对应的寄存器状态缓存,确定是否对仪器硬件进行初始化以及更新硬件寄存器状态,保持寄存器状态缓存与仪器硬件的硬件寄存器状态同步。
对相应的仪器硬件进行配置的过程中:
读取操作命令对应的仪器硬件相应的寄存器状态缓存,仅对操作指令涉及的寄存器状态缓存中的寄存器数据中数据位进行修改,而保持寄存器状态缓存中的寄存器数据中其他数据位值不变;
更新并缓存寄存器数据,将相关寄存器状态缓存的寄存器数据的完整位以整体访问方式与仪器硬件进行信息交互。
该仪器驱动方法,还进一步细化的是包括:对功能配置指令涉及的仪器硬件对应的寄存器状态缓存中的寄存器数据进行队列管理和执行,包括执行队列的创建、队列的传输及队列的清空;
根据仪器硬件对应的寄存器状态缓存中的更新后的寄存器数据创建寄存器副本,寄存器副本形成队列,以整体访问形式与仪器硬件进行信息交互。
在对操作命令涉及的多个寄存器数据进行队列管理时,对仪器硬件对应的寄存器状态缓存创建寄存器副本,对其中需更新的寄存器数据中的数据位进行修改、并将其他未修改的数据位一起更新形成一个寄存器副本,一个或多次寄存器副本形成队列,将相关寄存器数据的完整位以整体访问形式与应用程序或仪器硬件进行信息交互。
上述的仪器驱动模组和相应的仪器驱动方法,适于在计算设备中执行,并可以以软件程序指令的方式进行存储,这些指令适于由处理器加载并执行完成预设功能。
如图3所示,应用程序通常以界面显示层的形式出现,主要进行控件的绘制和更新,从而实现显示和仪器功能的解耦。仪器硬件可以是示波器、频谱仪、信号发生器等可进行仪器参数配置和状态查询的仪器。
基于上述的仪器驱动模组和相应的仪器驱动方法,应用程序在状态查询(或者说数据查询)和功能配置的工作过程为:
一、初始化仪器:
应用程序查询系统,得到所有仪器硬件各自对应的VISA地址即虚拟仪器软件结构地址,仪器硬件的VISA地址是唯一的,可用来标识不同的硬件设备;
应用程序调用仪器驱动实现仪器硬件的初始化,该初始化是通过仪器组件驱动模块中的仪器功能编程接口的init初始化调用实现,在init中,查询应用程序传递下来的VISA地址是否存在,如果存在就创建仪器硬件的硬件句柄(VISA地址的代名词),以后的访问都使用硬件句柄进行。并将硬件句柄保存到缓存管理模块的硬件句柄索引单元中,以后上层应用程序访问对应的仪器硬件,就会先查询硬件句柄索引单元是否有此句柄;
使用仪器硬件的硬件句柄对仪器硬件参数进行初始化:仪器驱动通过寄存器访问模块,将仪器硬件的所有硬件寄存器状态一次性都读取上来,并将其保存到缓存管理模块中对应的寄存器状态缓存中。
应用程序根据其需要获取的仪器状态,读取其涉及的仪器硬件参数,这个过程不再访问一起仪器硬件,而是通过缓存管理模块直接读取寄存器状态缓存中的寄存器数据实现的。
二、仪器配置过程,即应用程序调用仪器驱动对仪器硬件的某个参数进行设置:
1.首先调用对应仪器驱动的仪器编程接口单元,该仪器编程接口单元会将操作指令传递给仪器组件驱动模块中对应的仪器组件配置单元;
2.仪器组件配置单元首先通过缓存管理模块查询硬件句柄索引单元中是否有要操作的对应仪器硬件的硬件句柄。如果没有,则说明仪器硬件还没有初始化,执行上面的初始化动作(其中会将仪器硬件的所有硬件寄存器状态都读取并保存到对应寄存器状态缓存中);如果硬件句柄已经存在,说明寄存器状态缓存中已经包含仪器硬件的当前所有硬件寄存器状态;
3.在开始一次新的仪器硬件配置过程前,仪器驱动中的仪器组件配置单元中的寄存器缓存控制块创建新的寄存器缓存队列;
4.仪器组件配置单元直接通过缓存管理模块读取对应寄存器状态缓存中相关的寄存器数据,并建立寄存器副本,将寄存器副本中需要修改的位进行修改,更新后的寄存器副本进入寄存器缓存队列;
如果一次有多个仪器硬件参数的设置时,重复上述1-4步骤,从而寄存器缓存队列包含一组更新后的寄存器副本。
5.当仪器组件驱动接收到配置结束指令后,仪器驱动中的仪器组件驱动模块调用下层的寄存器访问模块将修改后的寄存器副本发送给仪器硬件。如果写仪器硬件失败,就报告此次操作错误代码,并清空寄存器缓存队列;如果写仪器硬件成功,就将该寄存器副本又通过缓存管理模块写回硬件句柄对应的寄存器状态缓存中,从而保证仪器硬件的寄存器状态缓存总是与实际的硬件寄存器状态一致。
三、仪器硬件参数读取过程,即应用程序调用仪器驱动对仪器硬件的某个参数进行查询:
1.首先调用对应仪器驱动的仪器编程接口单元,该仪器编程接口单元会将操作指令传递给仪器组件驱动模块中对应的仪器组件查询单元;
2.仪器组件查询单元首先通过缓存管理模块查询硬件句柄索引单元中是否有要操作的对应仪器硬件的硬件句柄。如果没有,则说明仪器硬件还没有初始化,执行上面的初始化动作(其中会将仪器硬件的所有硬件寄存器状态都读取并保存到对应寄存器状态缓存中);如果硬件句柄已经存在,说明寄存器状态缓存中已经包含仪器硬件的当前所有寄存器状态;
3.仪器组件查询单元直接通过缓存管理模块读取对应寄存器状态缓存中相关的寄存器数据,从对应寄存器数据中取出对应仪器参数对应位的值返回,而不访问底层仪器硬件。
在现有的仪器驱动架构下,例如一个信号发生器的仪器驱动,有一个设置输出频率寄存器,其中包含有选择信号通道滤波器的开关控制位,也有是否输出信号的开关控制位。如果应用程序要关断信号输出,通常的做法是应用程序调用仪器驱动的设置信号输出状态函数,在此函数中调用I/O驱动,先从仪器硬件中读取整个输出频率寄存器,修改输出信号开关的控制位,然后再整体写回仪器硬件,完成对仪器硬件的设置。可见,一次仪器硬件参数配置需要至少一次读硬件操作和一次写硬件操作。
而使用本实施例中的仪器驱动模组以及相应的仪器驱动方法,由于总是管理一个与底层硬件寄存器状态完全一致的寄存器状态缓存,执行写操作时,不需要先从底层硬件中读对应的硬件寄存器状态,直接从寄存器状态缓存中取出对应寄存器数据的位值,修改之后写入底层硬件即可,从而可以减少一次读硬件操作,而仅需要一次写硬件操作,性能提升了50%。
另外,当上层应用程序需要读取仪器的状态时,也不需要再对硬件进行访问,直接从寄存器状态缓存中获取,大大提高了系统性能。例如,上层应用程序需要对多个相同的仪器进行操作,需要不停切换仪器控制界面时,采用本实施例中的仪器驱动模组和相应的仪器驱动方法,不需要频繁的访问硬件I/O并将仪器硬件的所有参数都更新到应用程序中,只需要从寄存器状态缓存中读取对应仪器的硬件寄存器的寄存器数据就可以了,避免通过I/O的大量的硬件寄存器访问。
随着当今云技术的发展,使得仪器硬件共享和远程操控已经成为可能,根据本实施例的仪器驱动模组和仪器驱动方法,能更加高效的协调远程用户对同一仪器硬件的操控效率,对于多用户的监控系统,也降低了多个用户对于同一个执行单元——仪器硬件同时进行硬件访问的概率。例如当需要查询当前的仪器状态,完全不需要访问仪器硬件,只需要通过缓存管理模块访问寄存器状态缓存即可。
综上,该仪器驱动模组及其相应的仪器驱动方法,通过寄存器状态缓存进行仪器硬件的寄存器状态缓存管理,具有如下优点:
1.对仪器硬件的配置从现有的对仪器硬件进行一次读操作一次写操作,减少成对仪器硬件进行只需要一次写操作,性能提升50%;
2.对仪器硬件参数的读操作从现有的对仪器硬件进行一次读操作,变成无需访问仪器硬件,直接从寄存器状态缓存中获取,性能提升巨大;
3.可以增加批量写仪器硬件标记,从而可以让应用程序对于仪器硬件的访问先集中到在寄存器状态缓存中更新,之后一次将寄存器状态缓存中的寄存器数据一次写入仪器硬件,大大的降低了对于仪器硬件访问的频率;
4.保留了多个仪器硬件的寄存器状态缓存,这样即使控制端切换了当前激活的仪器硬件,对连接的任何仪器硬件的访问都不需要重新访问仪器 硬件,直接在寄存器状态缓存中进行;
5.易于实现多个用户监控方式,例如安装在一台电脑上的多个应用程序,或者多个远程的监控端对具有该硬件仪器驱动的服务器端进行仪器状态监控时,都不需要对底层的物理硬件进行访问,只需要对仪器驱动模组中的寄存器状态缓存进行访问,避免了硬件访问冲突,也不需要采用资源互锁的方式避免公共资源同时访问,提高了效率。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (10)
1.一种仪器驱动模组,用于为应用程序对仪器硬件提供状态查询或功能配置,其特征在于,包括仪器组件驱动模块、缓存管理模块和寄存器访问模块,其中:
所述仪器组件驱动模块,与所述缓存管理模块连接,用于接收所述应用程序对所述仪器硬件的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为所述仪器硬件相应的各个仪器组件的操作命令,并将所述操作命令传送至所述缓存管理模块;
所述缓存管理模块,还与所述寄存器访问模块连接,所述缓存管理模块包括至少一个所述仪器硬件对应的寄存器状态缓存,所述寄存器状态缓存能进行局部修改,用于根据所述操作命令将所涉及到的所述寄存器状态缓存中的数据整体传输至所述仪器组件驱动模块或所述寄存器访问模块;根据操作命令从缓存管理模块的对应的所述寄存器状态缓存中得到相应仪器组件的状态数据,以便直接返回给所述应用程序;
所述寄存器访问模块,能与所述仪器硬件连接,用于获取所述仪器硬件的硬件寄存器状态并传送至所述缓存管理模块,或根据所述缓存管理模块中的所述寄存器状态缓存中的寄存器数据对所述仪器硬件执行功能配置。
2.根据权利要求1所述的仪器驱动模组,其特征在于,所述寄存器状态缓存中包括多个寄存器数据,每个所述寄存器数据具有多位,每位或多位对应所述仪器硬件的一个硬件组件的功能状态;
所述寄存器数据中,一位或多位响应并修改所述操作命令对应的所述硬件寄存器中部分数据位的配置,并保持处于同一对应所述硬件寄存器中的其他数据位不变,经过部分数据位修改的所述寄存器数据更新后以整体访问形式与所述仪器组件驱动模块或所述寄存器访问模块进行信息交互。
3.根据权利要求1所述的仪器驱动模组,其特征在于,所述仪器组件驱动模块包括仪器编程接口单元、仪器组件查询单元、仪器组件配置单元,其中:
所述仪器编程接口单元,与所述仪器组件配置单元和所述仪器组件查询单元分别连接,用于为所述应用程序提供对所述仪器硬件的功能访问接口,接收所述应用程序的状态查询指令或功能配置指令;
所述仪器组件查询单元,还与所述缓存管理模块连接,用于将所述态查询指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令从所述缓存管理模块的对应的所述寄存器状态缓存中得到相应仪器组件的状态数据,以便直接返回给所述应用程序;
所述仪器组件配置单元,还与所述缓存管理模块连接,用于将所述功能配置指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令从所述缓存管理模块的所述寄存器状态缓存中得到相应仪器组件的状态数据,以便对对应的所述仪器硬件进行配置。
4.根据权利要求3所述的仪器驱动模组,其特征在于,所述缓存管理模块包括硬件句柄索引单元,所述硬件句柄索引单元以硬件句柄作为索引标识组织所述寄存器状态缓存,用于确定所述仪器硬件的硬件寄存器状态的当前状态、确定是否对所述仪器硬件进行初始化以及更新对应的所述寄存器状态缓存,以保持该所述缓存管理模块中的所述寄存器状态缓存与所述硬件寄存器状态同步。
5.根据权利要求4所述的仪器驱动模组,其特征在于,所述仪器组件配置单元还包括寄存器缓存控制块,所述缓存管理模块还包括寄存器缓存队列:所述寄存器缓存控制块,用于对所述寄存器缓存队列进行管理和执行;
根据所述操作命令,所述仪器硬件对应的所述寄存器状态缓存中的寄存器数据能形成寄存器副本,更新后的所述寄存器副本组织成所述寄存器缓存队列,所述寄存器缓存队列以整体访问形式与所述寄存器访问模块进行信息交互。
6.一种仪器驱动方法,用于为应用程序对仪器硬件提供状态查询或功能配置,其特征在于,采用寄存器状态缓存作为所述仪器硬件对应的硬件寄存器状态中转更新,包括步骤:
接收来自所述应用程序的对所述仪器硬件的状态查询指令或功能配置指令,以及将状态查询指令或功能配置指令转化为所述仪器硬件相应的各个仪器组件的操作命令;
根据所述操作指令,将涉及到的所述仪器硬件对应的所述寄存器状态缓存中的数据整体传输至所述应用程序;或者根据所述操作指令,将涉及到的所述仪器硬件的对应的所述寄存器状态缓存中的数据整体传输至所述仪器硬件;由于寄存器状态缓存中的寄存器数据与仪器硬件保持同步,因此将寄存器状态缓存中的寄存器数据直接读取至应用程序;
将功能配置指令解析成对不同仪器硬件的寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据操作命令得到对应仪器组件的状态数据,对相应的仪器硬件进行配置。
7.根据权利要求6所述的仪器驱动方法,其特征在于,提供所述仪器硬件的功能访问接口,接收所述应用程序的状态查询指令或功能配置指令;
将所述状态查询指令解析成对不同所述仪器硬件的所述寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据所述操作命令得到对应仪器组件的状态数据,直接返回给所述应用程序;
或者,将所述功能配置指令解析成对不同所述仪器硬件的寄存器状态缓存的寄存器数据或局部数据的操作命令,并根据操作命令得到对应仪器组件的状态数据,对相应的所述仪器硬件进行配置。
8.根据权利要求7所述的仪器驱动方法,其特征在于,对相应的所述仪器硬件进行配置的过程中包括:以硬件句柄作为索引标识组织对应的硬件寄存器状态进行缓存,根据所述仪器硬件对应的寄存器状态缓存,确定是否对所述仪器硬件进行初始化以及更新硬件寄存器状态,保持所述寄存器状态缓存与所述仪器硬件的硬件寄存器状态同步。
9.根据权利要求8所述的仪器驱动方法,其特征在于,保持所述寄存器状态缓存与所述仪器硬件的寄存器状态同步的过程中:
读取所述操作命令对应的所述仪器硬件相应的所述寄存器状态缓存,仅对所述操作指令涉及的所述寄存器状态缓存中的寄存器数据中数据位进行修改,而保持所述寄存器状态缓存中的寄存器数据中其他数据位值不变;
更新并缓存所述寄存器数据,将相关所述寄存器状态缓存的寄存器数据的完整位以整体访问方式与所述仪器硬件进行信息交互。
10.根据权利要求9所述的仪器驱动方法,其特征在于,还进一步包括:对所述功能配置指令涉及的所述仪器硬件对应的所述寄存器状态缓存中的寄存器数据进行队列管理和执行;
根据所述仪器硬件对应的所述寄存器状态缓存中的更新后的寄存器数据创建寄存器副本,所述寄存器副本形成队列,以整体访问形式与所述仪器硬件进行信息交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710496078.0A CN107247599B (zh) | 2017-06-26 | 2017-06-26 | 仪器驱动模组和仪器驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710496078.0A CN107247599B (zh) | 2017-06-26 | 2017-06-26 | 仪器驱动模组和仪器驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107247599A CN107247599A (zh) | 2017-10-13 |
CN107247599B true CN107247599B (zh) | 2020-08-11 |
Family
ID=60014113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710496078.0A Active CN107247599B (zh) | 2017-06-26 | 2017-06-26 | 仪器驱动模组和仪器驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107247599B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109714212B (zh) * | 2018-12-29 | 2022-02-08 | 上海仪电物联技术股份有限公司 | 一种动态构建虚拟仪器仪表的方法及系统 |
CN112114204A (zh) * | 2020-09-24 | 2020-12-22 | 中车株洲电力机车研究所有限公司 | 一种电源纹波及噪声辅助测试系统及测试方法 |
CN112637248B (zh) * | 2021-03-09 | 2021-05-18 | 厚普清洁能源股份有限公司 | 一种lng加注趸船的船端、岸端设备通信处理方法 |
CN113535554B (zh) * | 2021-07-12 | 2024-03-12 | 青岛中科英泰商用系统股份有限公司 | 一种Android系统设备的自动测试系统及其方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5090591B2 (ja) * | 2000-04-12 | 2012-12-05 | ソニー株式会社 | 電子装置の制御方法,電子装置及び電子装置の機能の認識方法 |
CN100533392C (zh) * | 2005-03-30 | 2009-08-26 | 李晓波 | 一种同步处理方法及其装置 |
US9063864B2 (en) * | 2012-07-16 | 2015-06-23 | Hewlett-Packard Development Company, L.P. | Storing data in presistent hybrid memory |
US9058415B1 (en) * | 2013-03-15 | 2015-06-16 | Google Inc. | Counting events using hardware performance counters and annotated instructions |
CN106527976B (zh) * | 2016-10-13 | 2019-05-24 | 中国船舶工业系统工程研究院 | 一种基于sata接口的海洋物探数据存储处理系统 |
-
2017
- 2017-06-26 CN CN201710496078.0A patent/CN107247599B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107247599A (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247599B (zh) | 仪器驱动模组和仪器驱动方法 | |
CN109347998B (zh) | 一种DNS出口服务器ip地址的探测方法及系统 | |
CN110633219B (zh) | 页面测试方法与装置、存储介质、电子设备 | |
CN113886485A (zh) | 数据处理方法、装置、电子设备、系统和存储介质 | |
CN116107703A (zh) | 接口控制文档的生成方法及装置 | |
CN106815150B (zh) | 服务端接口测试系统及方法 | |
CN114398044A (zh) | 车辆控制和软件配置方法、装置、电子设备及存储介质 | |
CN109144864B (zh) | 用于测试窗口的方法及装置 | |
CN115134427B (zh) | 通信协议协调方法、装置、计算机设备和存储介质 | |
CN111752916B (zh) | 数据采集方法及装置、计算机可读存储介质、电子设备 | |
CN107357853B (zh) | 一种redis控制台的操作方法、装置及计算机系统 | |
CN112653598B (zh) | 自动化测试方法、装置、设备及可读存储介质 | |
CN115048359A (zh) | 一种多类型接入数据源的通用数据处理架构设计方法 | |
CN113934198A (zh) | 车辆诊断方法、装置、电子设备及存储介质 | |
CN114064327A (zh) | 挡板测试方法、设备、存储介质及程序产品 | |
CN115469630A (zh) | 车内电检方法、装置、电子设备及存储介质 | |
CN113709256A (zh) | 测试环境和应用环境的切换方法 | |
CN113268507A (zh) | 数据库的数据读取系统及方法、装置、电子设备 | |
CN112825064A (zh) | 一种数据交互方法、装置、终端设备和存储介质 | |
CN113448988B (zh) | 算法模型的训练方法、装置、电子设备及存储介质 | |
CN116126478B (zh) | 接口控制文档的生成方法、装置、设备及介质 | |
CN117370257B (zh) | 串口转总线的装置、现场可编程门阵列及其调试方法 | |
CN110442629B (zh) | 大数据多中心异构动态数据转换方法 | |
CN110941627A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113448988A (zh) | 算法模型的训练方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230814 Address after: 2111, 21st Floor, Building D, Tsinghua Tongfang Science and Technology Building, No.1 Wangzhuang Road, Haidian District, Beijing, 100083 Patentee after: Beijing Zhengyan Software Co.,Ltd. Address before: Room 21, 3rd Floor, Building 3, No. 4 Anningzhuang Road, Qinghe, Haidian District, Beijing, 100085 Patentee before: Beijing Huarui Integrated Technology Co.,Ltd. |