实现虚拟热插拔的方法及实现虚拟热插拔的主机设备
技术领域
本发明涉及一种热插拔(hot-plugging或Hot Swap)技术,特别涉及一种实现虚拟热插拔的方法及实现虚拟热插拔的主机设备,具体地说,涉及一种虚拟热插拔流程的测试方法及实现虚拟热插拔流程测试的主机设备。
背景技术
目前,在中高端嵌入式通信设备中都可以提供板卡的热插拔功能。热插拔功能允许用户在不关闭主机系统、不切断电源的情况下,取出和更换损坏的电源或板卡等部件,从而提高系统对故障的及时恢复能力、扩展能力以及灵活的配备能力。
请参阅图1,图1为包括插槽的主机设备和板卡的结构示意图。一般来说,一台主机设备中会包括多个插槽,每个插槽插入相应的板卡以执行相应的业务。为了表述方便,图1中所示是以一个板卡为例进行描述。如图所示,在板卡接口1中,传递在位(Present)信号的端口与地端相连,传递电源状态(Power status)和板卡上电指示(Power on)的端口与电源缓起控制芯片3相连;当板卡插入主机的插槽中时,板卡接口1与主机接口2相连;在主机接口2中,传递在位信号的端口、复位(Reset)信号的端口以及板卡电源上电信号的端口与主机中的热插拔处理模块5相连,并且,数据传输通道端口还通过数据隔离电子开关4与热插拔处理模块5相连。
热插拔处理模块5根据从主机接口2中接收到的且经去抖处理后的在位状态信号,控制数据隔离电子开关4使能、以及板卡的上电(Poweron);主机中的中断触发模块6根据从主机接口2中接收的在位信号和板卡电源状态(Power status)信号,决定送出中断请求,由主机软件处理模块10通过配置总线和数据总线执行热插拔的处理流程。
在中高端嵌入式设备中进行热插拔的处理流程分为板卡插入处理流程及板卡拔出处理流程两个部分,下面结合图2和图3分别对上述两个处理流程进行详细描述。
请参阅图2,图2为板卡插入处理流程示意图。如图所示,当板卡插入主机设备的插槽中时,板卡插入的处理流程分为以下三个阶段:
1、板卡上电阶段
将板卡插入主机设备的插槽后,主机中的热插拔处理模块5检测到在位信号为低电平后,将高电平的上电指示信号(Power on)输出至板卡,用以通过电源缓起控制芯片3打开板卡的电源开关;这时,板卡开始执行上电过程,热插拔处理模块5向板卡发送复位信号(Reset),使板卡处于复位状态。
2、板卡数据通道打开阶段
热插拔处理模块5延时等待一段时间后,对在位信号进行去抖处理,并且中断触发模块6开始判断在位信号及板卡送上来的电源状态(Powerstatus)信号是否为有效(低电平);如果为低电平,表示板卡已经插好,并且已经上电完毕了;这时,热插拔处理模块5会打开数据隔离电子开关(电子开关4使能被拉成低电平);中断触发模块6上报中断请求。
3、主机软件处理阶段
主机软件处理模块10检测到上报的中断请求信息后,通过配置总线清除中断,使板卡退出复位状态;然后,初始化板卡,清除中断上报请求状态。
请参阅图3,图3为板卡拔出的处理流程示意图。如图所示,当板卡拔出主机设备的插槽中时,其处理流程分为以下三个阶段:
1、主机软件停止业务阶段
主机软件处理模块10执行拔出板卡(Remove card)的命令,然后,关闭主机与板卡的软件业务。
2、硬件处理阶段
板卡拔出后,热插拔处理模块5测试到在位信号为高电平(无效)后,关闭数据隔离电子开关4(电子开关4使能输出高电平),接着,关闭板卡的电源开关(Power on输出高电平),这时,板卡电源处于关闭状态,延时一段时间后,中断触发模块6判断板卡是否拔出,如果拔出了,发中断请求信号。
3、主机软件处理阶段
主机软件处理模块10测试到中断信号上报后,清除中断请求状态,送给板卡的复位信号输出为低电平,即复位电平。
为了测试主机插槽与板卡之间是否能正常进行上述热插拔处理流程,特别是,在板卡生产完成出厂前,需进行板卡与主机插槽的热插拔部分是否合格的测试。当测试时,一台作为测试设备的主机与另一台作为被测试设备(被测板卡均事先插入其插槽中)的主机通过电话线、网线或其它类型业务的电缆相连,进行相同两个板卡间的数据业务传输。热插拔处理流程的测试,现阶段一般采用两种测试方法,一种为手动插拔测试方法,另一种为部分模拟热插拔的测试方法。
手动插拔方法是测试人员通过人工实际插拔板卡,进行插入或拔出板卡到主机的操作,从而实现热插拔处理流程的测试。其板卡拔出过程为:测试人员先通过主机设备下发拔出板卡(Remove card)命令,并且关闭相应的业务,然后拔出板卡;插卡过程为:测试人员直接插入板卡到主机。这种手动插拔测试方法增加了人力成本,并且效率较低,十分不利于测试自动化的实现。
部分模拟热插拔测试过程允许在不进行实际插拔板卡操作的情况下,由主机设备根据测试人员的需求发出启闭被测板卡与主机设备间的数据通道的命令,实现虚拟关闭和恢复主机与被测板卡之间软件业务部分的测试步骤。
部分模拟热插拔方法实现的板卡拔出过程为:不关闭板卡与主机设备间的数据通道,板卡不下电,只是关闭主机与板卡间的软件业务,释放底层资源。实现的板卡插入过程为:恢复主机与板卡间的软件业务。
然而,上述这种部分测试模拟热插拔方法虽说不用通过人工进行实际的插拔板卡操作,但这种方法仅测试了主机设备与板卡之间用以启闭软件业务所执行的部分热插拔流程,而不能全面测试热插拔流程所执行的整个软硬件流程。
因此,为了实现热插拔部分测试的全面性,提高热插拔部分测试的效率,急需为测试自动化提供一种有效的手段。
发明内容
本发明的目的在于,提供一种通过屏蔽插于主机设备插槽中的板卡所发送的在位信号,采用虚拟热插拔方式实现全面模拟实际热插拔流程的测试。
本发明的目的是通过如下的技术方案实现的:
一种实现虚拟热插拔的方法,用于被测板卡插置于主机设备的相应插槽中所进行的虚拟热插拔流程的测试,该方法包括以下步骤:
步骤S1:屏蔽被测板卡的实际在位信号,产生虚拟在位信号;
步骤S2:根据所述的虚拟在位信号,主机设备执行板卡热插拔处理流程的测试。
根据权利要求1所述的实现虚拟热插拔的方法,所述的步骤S1具体包括:
步骤S1-1:根据发起的虚拟热插拔命令,设置在位信号屏蔽位;
步骤S1-2:将在位信号屏蔽位与板卡送来的实际在位信号进行逻辑或关系运算后,产生板卡热插拔时的虚拟在位信号。
根据所述的实现虚拟热插拔的方法,所述的步骤S2包括如下步骤:
步骤S2-1:如果虚拟在位信号为无效,执行步骤S2-2;否则,执行步骤S2-3;
步骤S2-2:主机设备执行板卡拔出流程的测试;
步骤S2-3:主机设备执行板卡插入流程的测试。
根据所述的实现虚拟热插拔的测试方法,所述的方法还包括:
步骤S3:判断被测板卡的实际在位信号是否为有效的步骤,其中,如果实际在位信号为有效,则板卡热插拔流程测试的结果有效,否则,板卡热插拔流程测试的结果无效。
本发明还提供一种实现虚拟热插拔的主机设备,该主机设备包括热插拔处理模块、中断触发模块以及主机软件处理模块等之外;还包括虚拟在位模块,该虚拟在位模块与热插拔处理模块和中断触发模块分别相连,用于屏蔽被测板卡的实际在位信号,产生主机设备执行板卡虚拟热插拔流程测试所需的虚拟在位信号。
根据所述的实现虚拟热插拔的主机设备,所述的虚拟在位模块包括屏蔽设置模块和逻辑或门电路;屏蔽设置模块,根据发起的虚拟热插拔命令,设置在位信号屏蔽位;逻辑或门电路,用于将屏蔽设置模块输出的屏蔽位信号与板卡送来的实际在位信号进行逻辑或关系运算后,产生虚拟板卡热插拔测试流程时所需的虚拟在位信号。
根据所述的实现虚拟热插拔的主机设备,所述的在位信号屏蔽位存储在所述主机设备的可读写寄存器中。
根据所述的实现虚拟热插拔的主机设备,所述虚拟在位模块还包括:在位信号收发模块,其接收和存储被测板卡的实际在位信号状态,并将该实际在位信号发送给所述的主机软件处理模块,以判断板卡热插拔测试流程结果的有效性。
根据所述的实现虚拟热插拔的主机设备,所述的实际在位信号存储在所述主机设备的可读写寄存器中。
根据所述的实现虚拟热插拔的主机设备,所述的虚拟在位模块由可编程逻辑阵列完成。
从上述技术方案可以看出,本发明利用了板卡在位信号是主机设备热插拔过程发起的源头信号,通过主机软件发起的虚拟热插拔指令,屏蔽板卡的实际在位信号状态,使整个插拔过程不再受控于板卡送给主机设备的在位信号,如此,就可以依次对插在主机设备相应插槽中的板卡执行虚拟热插拔流程的测试。需要说明的是,虚拟热插拔时执行的流程与实际热插拔过程一致,因此,使用本发明提供的实现虚拟热插拔流程的测试方法,可以模拟真实的热插拔过程,从而实现了虚拟热插拔流程测试的全面性,提高了热插拔流程测试的效率,为测试自动化提供了一种有效的手段。
附图说明
图1为包括插槽的主机设备和板卡的结构示意图;
图2为板卡插入的处理流程示意图;
图3为板卡拔出的处理流程示意图;
图4为本发明实施例的实现虚拟热插拔测试过程的主机设备和板卡结构示意图;
图5为本发明实施例的虚拟热插拔屏蔽位的实现原理示意图;
图6为本发明实施例的虚拟热插拔增强功能的实现原理示意图;
图7为本发明实施例的实现虚拟热插拔流程的测试方法流程图。
具体实施方式
下面将结合附图对本发明的虚拟热插拔的测试方法及实现虚拟热插拔测试的主机设备进行详细说明。
首先,结合图4、图5以及图6对本发明的实现虚拟热插拔测试的主机设备进行详细描述。图4为本发明实施例的实现虚拟热插拔测试过程的主机设备和板卡结构示意图;图5为本发明实施例的虚拟热插拔屏蔽位的实现原理示意图;图6为本发明实施例的虚拟热插拔增强功能的实现原理示意图。
从上述背景技术中介绍的实际插拔板卡的过程,可以看出,整个插拔过程受控于插卡送给主机的在位信号,在位信号是主机热插拔过程发起的源头信号;例如,如果在位信号为高电平(“1”),表示板卡处于拔出状态(无效),如果在位信号为低电平(“0”),表示板卡处于插入状态(有效)。
本发明的要点是,可以在主机设备侧的热插拔部分增加虚拟在位信号产生模块,用以产生在位屏蔽位,以屏蔽板卡实际送来的在位信号,使整个热插拔过程不再受控于板卡送给主机设备的在位信号,并且,设置主机设备执行虚拟热插拔流程所需要的虚拟在位信号,实现虚拟热插拔流程的测试。
如图4所示,该主机设备除包括主机接口2、热插拔处理模块5、中断触发模块6以及主机软件处理模块10等之外,在板卡给主机设备发送在位信号的初始入端,即主机设备硬件处理的最前端,增加了虚拟在位模块7。该虚拟在位模块7与主机接口2中的传递被测板卡实际在位信号的端口、热插拔处理模块5以及中断触发模块6分别相连,用于根据发起的虚拟热插拔命令(例如,所述的主机软件处理模块10通过总线发出的指令),屏蔽被测板卡的实际在位信号,产生主机设备执行板卡虚拟热插拔流程所需的虚拟在位信号。
本发明涉及的虚拟在位模块7的功能,可以利用主机设备的触发器和逻辑单元电路实现,也可以使用可编程逻辑门阵列实现。
如图5所示,虚拟在位模块7包括屏蔽设置模块71和逻辑或门电路72。屏蔽设置模块71根据发起的虚拟热插拔命令,设置在位信号屏蔽位状态;逻辑或门电路72,用于将屏蔽设置模块71输出的屏蔽位信号与板卡送来的实际在位信号进行逻辑或关系运算后,产生虚拟板卡热插拔流程测试时所需的虚拟在位信号。
具体地说,虚拟热插拔屏蔽位可以存储在主机设备的可读写寄存器中,通过对该寄存器的读写,产生虚拟在位信号,从而实现虚拟板卡热插拔流程的测试。如果将该寄存器中的屏蔽位设置为“1”,那么板卡送来的在位信号就被屏蔽,主机设备后续得到的在位信号就为无效。如果将该寄存器中的屏蔽位设置为“0”,那么,板卡送来的在位信号就直接送给主机设备进行后续流程的测试。这样,主机设备中的软件通过对虚拟热插拔屏蔽位的读写,就可以在板卡插于主机设备插槽的情况下,发起与实际热插拔过程一致的虚拟热插拔流程,从而实现虚拟热插拔流程的测试。
在上述的测试过程中,被测板卡一直插入在主机设备的相应插槽中,并且,正常上电,进行相应的业务传输。假设,主机设备发出启动插卡流程测试过程中,如果板卡由于某种原因已被拔出,实际在位信号的状态就转换成高电平(无效),此时,如果将该寄存器中的屏蔽位设置为“1”,那么,送给主机设备进行后续测试流程的虚拟在位信号就为“1”,结果,主机设备所进行的后续流程就不是热插卡流程,而是热拔卡流程,从而使得到的测试结果无效。
为了保证板卡热插拔测试流程结果的有效性,需要检测在虚拟热插拔流程的测试过程中板卡的状态(例如,是否被拔出)。
请参阅图6,图6与图5中的虚拟在位模块7不同之处在于,增加了一个接收、存储以及输出实际在位信号状态的在位信号收发模块73。如图6所示,在虚拟在位模块7包括的在位信号收发模块73,其接收和存储被测板卡的实际在位信号状态,并将该实际在位信号发送给主机软件处理模块10,以判断板卡热插拔测试流程结果的有效性。
该被测板卡的实际在位信号状态可以存储在主机设备的可读寄存器中,通过对该寄存器的读取,就可以接收和输出不受屏蔽位影响的板卡实际在位状况。
下面结合图7对本发明的虚拟热插拔的测试方法进行详细地描述。
本发明的虚拟热插拔的测试方法可以应用于具有板卡的热插拔功能的中高端嵌入式通信设备中,例如,可应用于交换机和/或路由器等主机设备中。与背景技术中相同,一台作为测试设备的主机与另一台作为被测试设备(被测板卡均事先插入其插槽中)的主机通过电话线、网线或其它类型业务的电缆相连。
如图7所示,当测试时,将被测板卡插入主机设备的相应插槽中,板卡正常上电,并且,进行相同两个板卡间的数据业务传输后,本发明的测试方法执行以下步骤:
步骤S1:屏蔽被测板卡的实际在位信号,产生虚拟在位信号;
步骤S2:根据所述的虚拟在位信号,主机设备执行板卡热插拔处理流程的测试。
同上,如图7所示,上述的步骤S 1需要执行的具体操作包括:
步骤S1-1:根据发起的虚拟热插拔命令,设置在位信号屏蔽位。
步骤S1-2:将在位信号屏蔽位与板卡送来的实际在位信号进行逻辑或运算后,产生板卡热插拔时的虚拟在位信号。
同上,如图7所示,上述的步骤S2需要执行的具体操作包括:
步骤S2-1:如果虚拟在位信号为有效,执行步骤S2-2;否则,执行步骤S2-3;
步骤S2-2:主机设备执行板卡拔出流程的测试;
步骤S2-3:主机设备执行板卡插入流程的测试。
具体地说,在本实施例中,将板卡插入主机设备的相应插槽中且正常上电后,板卡送给主机设备的实际在位信号为有效(例如为“0”),主机设备的硬件电路将可读写寄存器中的在位屏蔽位设置成无效状态(例如为“0”),此时,默认为不进行虚拟热插拔流程的测试。当需要进行虚拟热插拔流程的测试时,就可以根据主机设备软件发起的虚拟热拔卡命令,设置在位信号屏蔽位为有效状态(例如为“1”)。
通过将板卡送来的实际在位有效信号(例如为“0”)与在位信号屏蔽位有效信号(例如为“1”)进行逻辑或运算后,产生的板卡热插拔时的虚拟在位信号为无效信号(例如为“1”),该虚拟的无效在位信号使主机设备执行板卡热拔出流程,从而实现了虚拟热拔出流程的测试;延时等待虚拟热拔出流程完成后,主机设备将在位信号屏蔽位恢复为无效(例如为“0”),此时,通过将板卡送来的实际在位有效信号(例如为“0”)与在位信号屏蔽位无效信号(例如为“0”)进行逻辑或运算后,产生的板卡热插拔时的虚拟在位信号为有效信号(例如为“0”),该虚拟的有效在位信号使主机设备执行板卡热插卡流程,从而实现了虚拟热插卡流程的测试。
在本发明的较佳实施例中,如图7中所示,上述的虚拟热插拔的测试方法还可以包括判断被测板卡的实际在位信号是否为有效的步骤(步骤S3),其中,如果实际在位信号为有效,则板卡热插拔流程测试的结果有效,否则,板卡热插拔流程测试的结果无效。
具体地说,在主机设备进行虚拟热插入流程的测试时,如果发生板卡的实际状态已拔出的情况,此时,板卡送给主机设备的实际在位信号为无效(例如为“1”),主机设备读写寄存器中的在位屏蔽位为有效状态(例如为“1”);通过将板卡送来的实际在位无效信号(例如为“1”)与在位信号屏蔽位有效信号(例如为“1”)进行逻辑或运算后,产生的板卡热插拔时的虚拟在位信号为无效信号(例如为“1”),该虚拟的无效在位信号使主机设备执行板卡热拔出流程,而不是热插入流程。此时,由于板卡已经不在位,测试结果无效,可以提前结束测试。
如果主机软件处理模块10根据实际在位信号的状态(无效)与虚拟在位信号的状态(有效)进行判断,十分容易得到被测板卡实际插入状态不正常的结论。
综上所述,本发明通过主机软件发起的虚拟热插拔指令,屏蔽板卡的实际在位信号状态,从而实现了虚拟热插拔流程测试的全面性,提高了热插拔流程测试的效率,为测试自动化提供了一种有效的手段。
需要声明的是,上述发明内容及具体实施方式意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。本领域技术人员在本发明的精神和原理内,当可作各种修改、等同替换、或改进。本发明的保护范围以所附权利要求书为准。