一种I/O设备状态信息的获取方法及系统与流程

文档序号:17079993发布日期:2019-03-09 00:08阅读:291来源:国知局
一种I/O设备状态信息的获取方法及系统与流程

本申请涉及通信技术领域,尤其涉及一种i/o设备状态信息的获取方法及系统。



背景技术:

为了实现显示、通信和数据采集等不同的特定功能,cpu通常需要连接多个i/o(input/output)设备。在系统工作过程中,cpu需要获取i/o设备的状态信息。一般地i/o设备内部具有状态寄存器,每当i/o设备工作状态发生改变时,i/o设备将修改相应状态寄存器中存储的状态信息。

目前cpu通常采用轮询的方式获取i/o设备的状态信息,即cpu每隔一段时间,访问i/o设备内部的状态寄存器,获取i/o设备的状态信息。

由于cpu通常连接多个i/o设备,因此cpu需要通过轮询的方式依次获取每个i/o设备的状态信息,获取这些i/o设备的状态信息需要占用大量的cpu资源,增加cpu负荷。



技术实现要素:

有鉴于此,本申请提供一种i/o设备状态信息的获取方法及系统。

具体地,本申请是通过如下技术方案实现的:

一种i/o设备状态信息的获取方法,其特征在于,应用于i/o设备状态信息的获取系统,所述系统包括cpu、现场可编程门阵列fpga以及至少一个i/o设备,所述cpu与现场可编程门阵列fpga通过pcie总线进行连接,所述现场可编程门阵列fpga与i/o设备进行连接,在现场可编程门阵列fpga中为每个i/o设备预先分配独立的状态信息存储空间,所述方法包括:

现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息;

将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间;

cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息。

一种i/o设备状态信息的获取系统,其特征在于,所述系统包括:cpu、现场可编程门阵列fpga以及至少一个i/o设备,所述cpu与现场可编程门阵列fpga通过pcie总线进行连接,所述现场可编程门阵列fpga与i/o设备进行连接,在现场可编程门阵列fpga中为每个i/o设备预先分配独立的状态信息存储空间;

现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息;

将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间;

cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息。

本申请通过现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息,将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间,cpu可以按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息,如此一来,cpu与现场可编程门阵列fpga通过pcie总线进行连接,通过现场可编程门阵列fpga间接获取i/o设备的状态信息,获取i/o设备的状态信息并不需要占用大量的cpu资源,可有效降低cpu负荷。

附图说明

图1是本申请一示例性实施例示出的一种应用场景示意图;

图2是本申请一示例性实施例示出的一种i/o设备状态信息的获取方法的交互流程图;

图3是本申请一示例性实施例示出的一种i/o设备状态信息的获取系统的硬件结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先对本申请实施例提供的一种i/o设备状态信息的获取方法进行说明,该方法可以包括以下步骤:

现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息;

将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间;

cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息。

如图1所示的一种应用场景图,cpu与现场可编程门阵列fpga通过pcie总线进行连接,现场可编程门阵列fpga与多个i/o设备进行连接,在现场可编程门阵列fpga中预先为每个i/o设备分配独立的状态信息存储空间,其中状态信息存储空间为现场可编程门阵列fpga基地址寄存器对应的存储空间,简称bar(baseaddressregisters)空间,每个状态信息存储空间的容量可以根据实际需求进行确定。cpu与现场可编程门阵列fpga通过pcie总线进行连接,通过现场可编程门阵列fpga间接获取i/o设备的状态信息,获取i/o设备的状态信息并不需要占用大量的cpu资源,可有效降低cpu负荷。

如图2所示,为本申请实施例提供的一种i/o设备状态信息的获取方法的交互流程图,该方法具体可以包括以下步骤:

s201,现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息;

参照图3所示,为本申请一示例性实施例示出的一种i/o设备状态信息的获取系统的硬件结构示意图,在本申请中,根据各i/o设备的优先级,通过编程实现对应的访问模块,如优先级低的i/o设备,使用轮询方式进行访问,对于优先级较高的i/o设备,使用中断或中断与轮询配合的方式进行访问,通过编程实现指令处理模块,处理cpu的信息读取指令和访问模块的中断信号,并负责读取状态存储空间中存储的i/o设备的状态信息。

需要说明的是,访问模块与i/o设备之间,可以是一对一进行访问,即每个访问模块对应一个i/o设备,也可以是一对多进行访问,即每个访问模块对应至少一个i/o设备。

现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息,具体实现可以是:现场可编程门阵列fpga中预先配置的访问模块按照预设的访问规则访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息。例如访问模块1对应i/o设备1,访问模块2对应i/o设备2,访问模块3对应i/o设备3,现场可编程门阵列fpga中预先配置的每个访问模块可以访问各自对应的i/o设备中的状态寄存器,以获取每个i/o设备的状态信息,又例如访问模块1对应i/o设备1、i/o设备2、i/o设备3,现场可编程门阵列fpga中预先配置的访问模块1可以访问自身对应的i/o设备中的状态寄存器,以获取每个i/o设备的状态信息。

另外,现场可编程门阵列fpga中预先配置的访问模块访问与自身进行连接的每个i/o设备中的状态寄存器,以获取i/o设备的状态信息,可以通过轮询、中断、中断与轮询配合的方式实现。

1)访问模块通过轮询的方式访问与自身进行连接的每个i/o设备中的状态寄存器,以获取i/o设备的状态信息:访问模块通过任务轮询或者时间轮询的方式访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息,将所获取的i/o设备的状态信息,存储到与i/o设备对应的状态信息存储空间。

2)访问模块通过中断的方式访问与自身进行连接的每个i/o设备中的状态寄存器,以获取i/o设备的状态信息:i/o设备向访问模块发送中断信号,中断信号的格式需要参考现场可编程门阵列fpga与i/o设备之间的通信协议,访问模块在接收到中断信号之后,访问对应i/o设备的状态寄存器,以获取i/o设备的状态信息,将所获取的i/o设备的状态信息,存储到与i/o设备对应的状态信息存储空间。

3)访问模块通过中断与轮询配合的方式访问与自身进行连接的每个i/o设备中的状态寄存器,以获取i/o设备的状态信息:i/o设备向访问模块发送中断信号,由于i/o设备状态异常或使用不当等原因,出现i/o设备持续发送中断信号等问题,访问模块在得知中断信号发送异常后,切换到轮询方式,访问模块通过任务轮询或者时间轮询的方式访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息,将所获取的i/o设备的状态信息,存储到与i/o设备对应的状态信息存储空间,在得知中断信号发送正常后,切换回中断模式。

s202,将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间;

每个i/o设备,在现场可编程门阵列fpga中都存在与其对应的状态信息存储空间,例如i/o设备1、i/o设备2、i/o设备3,在现场可编程门阵列fpga中都存在与其对应的状态信息存储空间1、状态信息存储空间2、状态信息存储空间3。

将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间,例如将所获取的i/o设备1对应的状态信息存储至i/o设备1对应的状态信息存储空间1。

s203,cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息。

cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息,具体可通过轮询或中断两种方式实现:

1)cpu通过轮询的方式获取状态信息存储空间中存储的i/o设备的状态信息:cpu按照预设的周期通过pcie总线向现场可编程门阵列fpga发送信息读取指令;现场可编程门阵列fpga接收到所述信息读取指令之后,对所述信息读取指令进行解析以获取所述信息读取指令中携带的状态存储空间地址,其中状态存储空间地址可以是某个i/o设备对应的状态存储空间的地址,也可以是某几个i/o设备对应的状态存储空间的地址,也可以是全部i/o设备对应的状态存储空间的地址;从所述状态存储空间地址对应的状态存储空间中读取i/o设备的状态信息,将读取的i/o设备的状态信息进行封装并返回给cpu;cpu接收现场可编程门阵列fpga返回的i/o设备的状态信息,以获取状态信息存储空间中存储的i/o设备的状态信息。

2)cpu通过中断的方式获取状态信息存储空间中存储的i/o设备的状态信息:现场可编程门阵列fpga将pcie中断信号发送给cpu,所述pcie中断信号中携带i/o设备的标识;cpu接收到所述pcie中断信号,提取所述pcie中断信号中携带的i/o设备的标识;根据所述i/o设备的标识向现场可编程门阵列fpga发送信息读取指令;现场可编程门阵列fpga接收到所述信息读取指令之后,对所述信息读取指令进行解析以获取所述信息读取指令中携带的状态存储空间地址,所述状态存储空间地址是为所述i/o设备预先分配的状态信息存储空间所对应的状态存储空间地址;从所述状态存储空间地址对应的状态存储空间中读取i/o设备的状态信息,将读取的i/o设备的状态信息进行封装并返回给cpu;cpu接收现场可编程门阵列fpga返回的i/o设备的状态信息,以获取状态信息存储空间中存储的i/o设备的状态信息。

其中,访问模块向指令处理模块发送中断信号,该中断信号在i/o设备向访问模块发送的中断信号基础之上添加i/o设备的标识,一般是i/o设备的编号,指令处理模块将该中断信号转换为pcie中断信号,通过msi(messagesignalinterrupt,消息信号中断)中断等方式发送给cpu。再者,如果指令处理模块接收到访问模块发送的多个中断信号,需要对这些中断信号进行仲裁,然后将该中断信号转换为pcie中断信号,通过msi(messagesignalinterrupt,消息信号中断)中断等方式发送给cpu。

本申请通过以上步骤,通过现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息,将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间,cpu可以按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息,如此一来,cpu与现场可编程门阵列fpga通过pcie总线进行连接,通过现场可编程门阵列fpga间接获取i/o设备的状态信息,获取i/o设备的状态信息并不需要占用大量的cpu资源,可有效降低cpu负荷。

与上述方法实施例相对应,本申请还提供了一种i/o设备状态信息的获取系统,所述系统包括:cpu、现场可编程门阵列fpga以及至少一个i/o设备,所述cpu与现场可编程门阵列fpga通过pcie总线进行连接,所述现场可编程门阵列fpga与i/o设备进行连接,在现场可编程门阵列fpga中为每个i/o设备预先分配独立的状态信息存储空间;

现场可编程门阵列fpga访问与自身进行连接的i/o设备中的状态寄存器,以获取i/o设备的状态信息;

将所获取的i/o设备的状态信息存储至与i/o设备对应的状态信息存储空间;

cpu按照预设的规则访问现场可编程门阵列fpga中的状态信息存储空间,以获取状态信息存储空间中存储的i/o设备的状态信息。

上述系统实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

本发明可以在由计算机执行的计算值可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1