发明内容
为解决上述技术问题,本发明提供一种多PCIE设备***中断处理方法。
一种多PCIE设备***中断处理方法,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变;所述方法包括:
当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址;
主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
所述主控端包括CPU,与所述CPU相连的PCIE主桥,用于所述CPU所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,和与所述CPU相连的可编程逻辑器件,在所述可编程逻辑器件中设置中断寄存器和中断状态寄存器。
所述主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态,具体为:
所述PCIE主桥在接收到通知消息后,向所述可编程逻辑器件中的中断寄存器中写入所述中断向量号;
当所述中断状态寄存器的值发生改变时,所述可编程逻辑器件通过中断引脚向所述CPU触发中断请求;
所述CPU根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
当所述PCIE设备支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址写入PCIE设备的Msi_Addr寄存器中;将中断向量号写入PCIE设备的Msi_Data寄存器中;且所述通知消息具体为MSI消息。
当所述PCIE设备不支持MSI中断方式时,预配置所述PCIE设备在产生中断时,发送携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址的通知消息;并将中断寄存器在PCIE空间的映射地址和中断向量号分别写入PCIE设备的两个寄存器中。
用所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:
中断状态寄存器选择段,用于选择中断状态寄存器;和
中断状态寄存器位选择段,用于选择中断状态寄存器中的位;则
所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变具体为:
根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器;
根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;
将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备产生中断。
所述至少一个中断状态寄存器的位数相同,则
所述中断状态寄存器选择段的位数为Log2(N/M),当Log2(N/M)不是整数时,所述中断状态寄存器选择段的位数为Log2(N/M)向上取整,其中N为所述的多PCIE设备***支持的最大PCIE设备数,M为中断状态寄存器的位数。
注册中断处理程序具体为:
将为PCIE设备配置的中断向量号加上偏移量得到CPU中断号;所述偏移量为所述CPU自身支持的中断数量;
所述PCIE设备驱动程序向所述CPU中断号注册中断处理程序;
所述根据中断状态寄存器的值调用并执行预先注册的中断处理程序具体为:
根据所述中断状态寄存器的值计算写入所述中断寄存器中的中断向量号;
将所述中断向量号加上所述偏移量得到CPU中断号;
调用并执行向所述CPU中断号注册的中断处理程序。
所述CPU为可编程逻辑器件中每个中断状态寄存器分配一个中断引脚,则当某中断状态寄存器的值发生改变时,所述可编程逻辑器件通过该中断状态寄存器对应的中断引脚向所述CPU触发中断请求。
所述CPU为可编程逻辑器件分配一个中断引脚,则所述可编程逻辑器件中还设置有主中断状态寄存器,将所述中断引脚与主中断状态寄存器相连;
每个中断状态寄存器在所述主中断寄存器中有一位与其相对应,当某个中断状态寄存器的值发生改变时,设置所述主中断状态寄存器中对应位的值为约定值;则当主中断状态寄存器的值发生改变时,所述可编程逻辑器件通过所述中断引脚向所述CPU触发中断请求。
本发明提供的多PCIE设备***中断处理方法,有益效果是:由于本发明的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在实施本发明过程中,发明人发现现有技术中至少存在如下问题:当多个PCIE设备同时产生中断时,会产生多个MSI消息,PCIE主桥接收到多个MSI消息后,会将多个中断向量号顺序写入预先配置在***中的中断寄存器中,此时,由于主控端还未来得及处理前一个中断向量号对应的中断,后一个中断向量号便会覆盖中断寄存器中的前一个中断向量号,也就是说,对于支持MSI中断方式的主控端CPU而言,无法处理多个PCIE设备同时产生的中断。进一步的,目前仅有少数的PCIE设备的硬件设计能够支持MSI中断方式,特别是嵌入式领域中应用的PCIE设备几乎都不支持MSI中断方式,只能采用传统中断方式。为解决上述技术问题,本发明实施例提出一种多PCIE设备***中断处理方法,详细描述如下。
实施例一
参见图2,本发明实施例提供一种多PCIE设备***中断处理方法,包括以下步骤:
步骤S201:预先设置中断寄存器,和用于记录产生中断的PCIE设备的中断状态寄存器,所述中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变。
步骤S202:当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址。
步骤S203:主控端在接收到通知消息后,将所述中断向量号写入所述映射地址对应的中断寄存器;根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
可见,由于本发明实施例的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
实施例二
参见图3,本发明实施例提供一种优选的多PCIE设备***中断处理方法,结合参见图4,优选的,主控端包括中央处理器CPU401,与CPU401相连的PCIE主桥402,用于CPU401所支持CPU总线数据格式与各PCIE设备所支持数据格式间的数据转换,和与CPU401相连的可编程逻辑器件403。当然,根据实际应用场景,在PCIE主桥402与各PCIE设备之间还可以包括PCIE Switch,用于协调多PCIE设备间数据交换。
优选的,所述可编程逻辑器件可以是CPLD或FPGA等。
在实际应用中,PCIE主桥402可以设置在主板上,也可以集成在CPU401中。
本发明实施例提供的方法包括如下步骤:
步骤S301:预先在可编程逻辑器件中设置中断寄存器,和用于记录产生中断的PCIE设备的中断状态寄存器。
优选的,用所述中断状态寄存器中每一位的值对应标识一个PCIE设备的中断状态;所述中断寄存器至少包括:中断状态寄存器选择段,用于选择中断状态寄存器;和中断状态寄存器位选择段,用于选择中断状态寄存器中的位。若中断寄存器中还剩余其它位的话,可以将其作为保留段。
进一步的,本实施例中,多个中断状态寄存器的位数均相同,则所述中断状态寄存器选择段的位数为Log2(N/M),当Log2(N/M)不是整数时,所述中断状态寄存器选择段的位数为Log2(N/M)向上取整,其中N为所述的多PCIE设备***支持的最大PCIE设备数,M为中断状态寄存器的位数。
中断状态寄存器的值按预设规则随所述中断寄存器的值的改变而改变,具体为:
根据中断寄存器中中断状态寄存器选择段的值,选择对应的中断状态寄存器;根据中断寄存器中中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;将选出的所述位的值设置为预设值,用于标识该位对应的PCIE设备产生中断。
比如,可以用“0”和“1”两个值分别标识对应PCIE设备未产生中断的状态和对应PCIE设备产生中断的状态,即用“1”作为预设值,用于标识该位对应的PCIE设备产生中断。实际应用中,也可以用其它值标识对应PCIE设备未产生/产生中断状态,本发明实施例对此不做限制。在本实施例中,以用“1”作为预设值,用于标识该位对应的PCIE设备产生中断,用“0”作为默认值,用于标识该位对应的PCIE设备未产生中断为例进行说明。
具体的,假设中断寄存器为32位(当然实际应用中,中断寄存器的位数也可以是64位等,可以依据实际应用场景确定,本发明实施例对此不做限定。这里,中断寄存器的位数选为32位通常已经可以满足现有多PCIE设备***的需求),中断状态寄存器的位宽可以选为8位、16位、或者32位等等,中断状态寄存器的位宽通常由访问可编程逻辑器件的PCIE主桥控制器(Device Controller)所支持的位宽决定,这里设定中断状态寄存器的位宽为M,本多PCIE设备***所支持的最多PCIE中断数为N,两类寄存器的定义如下:
1)中断寄存器:该寄存器分为三段,第一段为中断状态寄存器位选择段,用来选择一个中断状态寄存器中的某一位,该段的位数为Log2M,即0~Log2M-1;第二段为中断状态寄存器选择段,该段的位数为Log2(N/M),即,Log2M~Log2N-1。中断寄存器中的其它位为第三段,即Log2N~32,用于保留。假设中断状态寄存器的位数为32(M=32),***所支持的最大PCIE设备中断数为128(N=128),则需要4(128/32)个中断状态寄存器,第一段的位数为5位,为bit0~bit4(Log232-1),第二段的位数为2(Log2(128/32)),为bit5(Log232)~bit6(Log2128-1)。也就是说,根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器:当中断寄存器的中断状态寄存器选择段的值为0x00时,表示选择第1个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x01时,表示选择第2个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x10时,表示选择第3个中断状态寄存器;当中断寄存器的中断状态寄存器选择段的值为0x11时,表示选择第4个中断状态寄存器,等等,依此类推,不再赘述。
根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位:当中断寄存器的中断状态寄存器位选择段的值为00000(二进制)时,表示选择该中断状态寄存器的第1位;当中断寄存器的中断状态寄存器位选择段的值为0x00001时,表示选择该中断状态寄存器的第2位;当中断寄存器的中断状态寄存器位选择段的值为00010(二进制)时,表示选择该中断状态寄存器的第3位;当中断寄存器的中断状态寄存器位选择段的值为00011(二进制)时,表示选择该中断状态寄存器的第4位,等等,依此类推,不再赘述。
2)中断状态寄存器:该寄存器的每一位保存着一个对应的MSI中断向量号,其中第一个中断状态寄存器保存的PCIE设备的MSI中断向量号为1~32,第二个中断寄存器保存的PCIE设备的MSI中断向量号为33~64,以此类推。该寄存器的每一位的值可以通过中断寄存器设置,当中断寄存器的值被修改时,中断状态寄存器中相应的位就会被设置为1。
步骤S302:将中断寄存器映射到PCIE空间中,为各PCIE设备配置中断向量号,并将中断寄存器在PCIE空间的映射地址及中断向量号写入各PCIE设备。
通过设置相关寄存器的值,将中断寄存器映射到PCIE空间中,以便***中其它设备可以访问。
优选的,为各PCIE设备配置的中断向量号根据中断寄存器中断状态寄存器选择段及中断状态寄存器位选择段的定义,计算得到,比如:
为第1个中断状态寄存器的第1位对应PCIE设备分配的中断向量号为0x0000000,其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
为第2个中断状态寄存器的第1位对应PCIE设备分配的中断向量号为0100000(二进制),其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
为第1个中断状态寄存器的第2位对应PCIE设备分配的中断向量号为0x0000001,其中bit0-bit4为中断状态寄存器位选择段的值,bit5-bit6为中断状态寄存器选择段的值。
等等,依此类推,不再赘述。
本发明实施例中,当PCIE设备支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址写入PCIE设备的Msi_Addr寄存器中;将中断向量号写入PCIE设备的Msi_Data寄存器中。
而当PCIE设备不支持MSI中断方式时,将中断寄存器在PCIE空间的映射地址和中断向量号分别写入PCIE设备的两个寄存器中;并需要预配置所述PCIE设备在产生中断时,发送携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址的通知消息,而不直接采用传统INTA、INTB、INTC、INTD的中断方式。
可见,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端CPU无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,提高***中断处理效率。
本发明实施例中并不限制步骤S301和步骤S302的顺序,可以先执行步骤S301,再执行步骤S302;也可以先执行步骤S302,再执行步骤S301;还可以同时执行。
步骤S303:在各PCIE设备中注册中断处理程序。
优选的,在PCIE设备中注册中断处理程序的方法可以是:
(1)将为PCIE设备配置的中断向量号加上偏移量得到CPU中断号;其中偏移量为主控端CPU自身支持的中断数量。由于可编程逻辑器件中设置的中断寄存器和中断状态寄存器为在主控端CPU外新扩展的MSI中断,则对于主控端CPU而言,可编程逻辑器件中扩展的MSI中断所使用的中断号,应为在中断向量号的基础上加上PCIE主桥自身支持的MSI中断数量。
(2)所述PCIE设备驱动程序向所述CPU中断号注册中断处理程序。
步骤S304:当PCIE设备产生中断时发送通知消息,所述通知消息中携带预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址。
优选的,当PCIE设备支持MSI中断方式时,所述通知消息具体为MSI消息。
步骤S305:所述PCIE主桥在接收到通知消息后,向所述可编程逻辑器件中的中断寄存器中写入所述中断向量号。
当中断寄存器中写入中断向量号时,中断状态寄存器的值便会相应改变,具体的:首先,根据中断寄存器中所述中断状态寄存器选择段的值,选择对应的中断状态寄存器;再次,根据中断寄存器中所述中断状态寄存器位选择段的值,在选出的中断状态寄存器中选择对应的位;最后,将选出的所述位的值设置为预设值(比如置1),用于标识该位对应的PCIE设备产生中断。
中断寄存器用来记录通知消息发送过来的数据(中断向量号),并根据数据的内容来将相应的中断状态寄存器中的某一位设置为1,这样就记录了相应产生中断的PCIE设备。
当多个PCIE设备同时产生中断时,PCIE主桥将接收到的多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,比如,若中断向量号0000000(二进制)对应的PCIE设备、中断向量号0100000(二进制)对应的PCIE设备、及中断向量号0000001(二进制)对应的PCIE设备同时产生中断,则主控端CPU按顺序将中断向量号0000000(二进制)、0100000(二进制)、0000001(二进制)写入中断寄存器,当将中断向量号0000000(二进制)写入中断寄存器时,对应第1个中断状态寄存器的第1位被置1,当将中断向量号0100000(二进制)写入中断寄存器时,对应第2个中断状态寄存器的第1位被置1,当将中断向量号0000001(二进制)写入中断寄存器时,对应第1个中断状态寄存器的第2位被置1,则当将接收到的中断向量号全部写入中断寄存器后,对应的中断状态寄存器中便记录了全部产生中断的PCIE设备(中断状态寄存器中的值不会覆盖,只有在对应的中断被处理后才会被清掉,重新被置0)。
步骤S306:当所述中断状态寄存器的值发生改变时,所述可编程逻辑器件通过中断引脚向主控端CPU触发中断请求。
所述主控端CPU为可编程逻辑器件中每个中断状态寄存器分配一个中断引脚,当某中断状态寄存器的值发生改变时,所述可编程逻辑器件通过该中断状态寄存器对应的中断引脚向主控端CPU触发中断请求。图5中,每个中断状态寄存器对应一个中断引脚,当中断状态寄存器中至少有1位被置1时,该中断寄存器对应的中断引脚就产生中断。
但是在某些***中由于可编程逻辑器件的引脚或者***中断数的限制无法为每一个中断状态寄存器提供一个中断引脚,在这样的***可以为多个中断状态寄存器分配一个中断引脚。当主控端CPU为可编程逻辑器件分配一个中断引脚,则所述可编程逻辑器件中还设置有主中断状态寄存器,将所述中断引脚与主中断状态寄存器相连;每个中断状态寄存器在所述主中断寄存器中有一位与其相对应,当某个中断状态寄存器的值发生改变时,设置所述主中断状态寄存器中对应位的值为约定值(比如置1);则当主中断状态寄存器的值发生改变时,所述可编程逻辑器件通过所述中断引脚向主控端CPU触发中断请求。参见图6,为多个中断状态寄存器提供了一个中断引脚,此时需增加一个主中断状态寄存器,每个中断状态寄存器在主中断状态寄存器都有一位与其相对应,当某个中断状态寄存器中至少有一位被设置为1时,在主中断寄存器中与其对应的相应位就会被设置为1,同时当主中断寄存器中至少有一位为1时该中断引脚就会产生中断。
步骤S307:主控端CPU根据中断状态寄存器的值调用并执行预先注册的中断处理程序,并修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态。
优选的,根据中断状态寄存器的值调用并执行预先注册的中断处理程序可以包括如下步骤:
(1)根据所述中断状态寄存器的值计算写入所述中断寄存器中的中断向量号。
(2)将所述中断向量号加上所述偏移量得到CPU中断号。
(3)调用并执行向所述CPU中断号注册的中断处理程序。
对于图5所示逻辑结构而言,在中断分配函数中根据引发中断的中断引脚,确定引发中断的中断状态寄存器,然后读取该中断状态寄存器的值,进一步确定产生中断的MSI中断向量号,计算出对应的CPU中断号,最后调用并执行与该CPU中断号对应的中断处理程序。
对于图6所示逻辑结构而言,在中断分配函数中首先要读取主中断状态寄存器,根据其内容确定引发中断的中断状态寄存器,然后读取该中断状态寄存器的值,进一步确定产生中断的MSI中断向量号,计算出对应的CPU中断号,最后调用并执行与该CPU中断号对应的中断处理程序。
在本实施例中,修改中断状态寄存器的值,以恢复所述中断处理程序对应PCIE设备的中断状态为未产生中断状态具体为,将被调用并执行的中断处理程序对应的中断状态寄存器中的位的值置0。
本发明实施例中,主控端CPU还可以为不同的中断向量号设置优先级,则主控端CPU便可以按不同的优先级顺序判断产生中断的CPU中断号,进一步扩展本实施例的应用。
由于本发明实施例的多PCIE设备***中,预先设置中断寄存器和用于记录产生中断的PCIE设备的中断状态寄存器,且所述中断状态寄存器的值能按预设规则随所述中断寄存器的值的改变而改变。这样,当多个PCIE设备同时产生中断时,主控端接收到多个MSI消息后,会将多个中断向量号顺序写入中断寄存器中,每写入中断寄存器中一个中断向量号,中断状态寄存器会记录该中断向量号对应的产生中断的PCIE设备,则当多个中断向量号顺序写入中断寄存器后,虽然中断寄存器中后写入的值会覆盖前一个值,但是中断状态寄存器中却将全部产生中断的PCIE设备记录了下来,主控端便可以根据中断状态寄存器中的值处理同时产生的多个中断,从而使得多PCIE设备***能够处理多个PCIE设备同时产生的中断。
进一步的,当PCIE设备不支持MSI中断方式时,通过预配置所述PCIE设备,能够使其在产生中断时向主控端发送通知消息,将预先为所述PCIE设备配置的中断向量号及中断寄存器在PCIE空间的映射地址告知主控端,从而能够使得主控端无需共享中断处理程序逐个检测共享该中断的多个PCIE设备的中断状态寄存器,大大缩短处理不支持MSI中断方式的PCIE设备的中断延时,在中断产生时只需读取中断状态寄存器中的值即可确定产生中断的PCIE设备,并且中断处理的时延不会随着***中的PCIE设备的增多而增加,从而提高***中断处理效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括若干指令用以执行本发明各个实施例所述的方法。这里所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。