首页> 中国专利> 一种区分系统冷启动和热启动的方法及装置

一种区分系统冷启动和热启动的方法及装置

摘要

本发明公开了一种区分系统冷启动和热启动的方法及装置,属于系统设计领域。为了降低通信系统成本,提高系统稳定性,本发明提出了一种区分系统冷启动和热启动的方法:在复杂可编程逻辑器件中设置寄存器;系统复位,CPU读取寄存器的值,并将读取出的值保存到内存中;复杂可编程逻辑器件重置寄存器的值;CPU根据内存中的值来区分系统是冷启动还是热启动。本发明还提供了一种区分系统冷启动和热启动的装置,装置包括设置模块、读取模块、保存模块、重置模块和区分模块。采用本发明方法降低了系统成本,提高了系统的稳定性。

著录项

  • 公开/公告号CN101008900A

    专利类型发明专利

  • 公开/公告日2007-08-01

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN200710002981.3

  • 发明设计人 张见;

    申请日2007-01-31

  • 分类号G06F9/445(20060101);

  • 代理机构11138 北京三高永信知识产权代理有限责任公司;

  • 代理人何文彬

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-17 18:54:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-06

    未缴年费专利权终止 IPC(主分类):G06F9/445 授权公告日:20081224 终止日期:20170131 申请日:20070131

    专利权的终止

  • 2008-12-24

    授权

    授权

  • 2007-09-26

    实质审查的生效

    实质审查的生效

  • 2007-08-01

    公开

    公开

说明书

技术领域

本发明涉及系统设计领域,特别涉及一种区分系统冷启动和热启动的方法及装置。

背景技术

在通信设备的设计中,我们常常需要区分系统是冷启动还是热启动,所谓冷启动是指系统从没有电源输入到输入电源启动的过程,所谓热启动是指系统处于上电状态,通过复位重新启动一次系统配置的过程。通信系统在冷启动的过程中,需要初始化大量的芯片配置和相关的路由管理等表项,这个过程对大型设备(比如路由器等)可能需要花费很长的时间(大型核心路由器可能需要几十分钟才能完成初始化的工作)。在通信系统正常运营时,长时间的业务中断可能是不被允许的。但是,网上正常运营的设备也不可避免的会遇到软件升级、故障重启等问题,那么我们如何解决这些设备因软件升级、故障重启而导致的长时间业务中断的问题呢?实际上,在软件升级或故障重启的时候,系统的相关配置是不需要重新设置的。为了解决快速启动的问题,人们引入了冷启动和热启动的概念,当系统冷启动的时候,系统需要完整的配置整个系统,而当热启动的时候,系统仅仅需要配置改变了的部分,这样,系统启动的速度就会很快,业务中断的时间也会很短。同时,区分系统是冷启动还是热启动也是系统监控的需要。系统的重新启动对正在运营的设备来说是一个很严重的问题,用户需要对这个问题进行监控,软件需要向后台监控平台发送冷启动和热启动的故障情况。

在目前现有技术中有两种方法可以用来区分系统的冷启动和热启动。第一种方法为:如图1所示,在系统启动的过程中,CPLD(Complex Programmable Logic Device-复杂可编程逻辑器件)将会通过编程采集A点的电平值,如果能够采集到A点的电平值有从0到1的跳变,则系统属于冷启动,否则系统属于热启动。CPLD采集到冷启动或热启动的状态后,CPU将这个状态位读出,上报管理控制系统。第二种方法为:在CPU系统启动前,系统在Flash中设置一些标志位,上电后系统清除一些标志位来区分系统是冷启动还是热启动。但是这两种方法都有一些缺点,第一种方法由于要采集A点的电平值,所以就要增加采集电路,而采集电路由电阻、电容及一些保护电路组成,这样就会增加系统的复杂程度,另外这种方法还对电源要求较高,要求电源上电的时候纹波要小,这样就大大地提高了系统的电源成本,同时CPLD编程复杂,需要使用时钟来采集A点的电平变化,由于上升沿是一个缓慢上升的过程,因此要求CPLD采用滤波等算法才能正确的识别A点的状态变化,这样就会占用CPLD的资源,提高了系统的成本;第二种方法需要依赖软件来实现,如果系统软件出现运行错误等严重故障的时候,CPU可能会对Flash进行误操作,使区分冷启动还是热启动的信息位失去意义,同时,如果CPU系统发生PCI挂死等严重故障而产生重新启动的时候,系统无法区分是冷启动还是热启动。

发明内容

为了降低通信系统的投入成本,提高通信系统的稳定性,本发明实施例提出了一种区分系统冷启动和热启动的方法,所述方法包括:

在复杂可编程逻辑器件中设置寄存器;

系统复位,CPU读取所述寄存器的值,并将读取出的值保存到内存中;

所述复杂可编程逻辑器件重置所述寄存器的值;

CPU根据内存中的值来区分系统是冷启动还是热启动。

本发明实施例还提供了一种区分系统冷启动和热启动的装置,所述装置包括设置模块、读取模块、保存模块、重置模块和区分模块;

所述设置模块用于在复杂可编程逻辑器件中设置寄存器;

所述读取模块用于在系统复位时,读取所述设置模块设置的寄存器中的值,并将读取出的值发送给所述保存模块;

所述保存模块用于接收所述读取模块发送的寄存器的值,并将该寄存器的值保存到内存中;

所述重置模块用于在所述保存模块将寄存器的值保存到内存中后,重置所述设置模块设置的寄存器中的值;

所述区分模块用于根据所述保存模块保存的寄存器的值来区分系统是冷启动还是热启动。

本发明实施例的有益效果:

1.由于本发明实施例在复杂可编程逻辑器件中设置了寄存器,这样就可以去掉一些电路,降低了系统的复杂度,也降低了系统的成本。

2.由于本发明实施例根据内存中的值来区分系统是冷启动还是热启动,这样大大地提高了系统的可靠性,无论系统是否发生误操作,寄存器的值都能准确的定位系统是冷启动还是热启动。

附图说明

图1是现有技术中实现区分系统冷启动和热启动的原理示意图;

图2是本发明实施例实现区分系统冷启动和热启动的原理示意图;

图3是本发明实施例实现区分系统冷启动和热启动的方法流程图;

图4是本发明实施例区分系统冷启动和热启动的装置的结构图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。

实施例

本发明实施例采用CPLD和CPU来实现区分系统是冷启动还是热启动,参见图2。在CPLD中设置一个8位的寄存器,该寄存器上电不需要复位,且初始值为0,而且该寄存器只响应外部的读操作,不能写入。在系统启动的过程中,CPU读取该寄存器的值,并将读取出的值保存到内存中,CPLD程序将寄存器的值置为0xFF,CPU根据内存中的值来区分系统是冷启动还是热启动。

采用上述技术方案实现区分系统是冷启动还是热启动的方法,具体包括以下步骤,参见图3:

步骤101:系统复位。

系统复位包括上电复位和带电复位,上电复位时,CPLD中8位寄存器的值会清零,即值为0x00,带电复位时,CPLD中8位寄存器的值为上一次系统复位时,CPLD程序设置的值。

步骤102:CPU读取CPLD中8位寄存器的值,并将读取出的值保存到内存中。

8位寄存器的值如表1所示:

8位寄存器的值系统状态0x00系统为冷启动0xFF系统为热启动

表1

步骤103:CPLD程序将8位寄存器的值设置为0xFF。

CPLD程序设置的0xFF为系统热启动的识别值,但不限于0xFF,在实际的应用中,热启动的识别值还可以是0xAA等等。

步骤104:CPU检查内存中的值,如果内存中的值为0x00,则执行步骤105,如果内存中的值为0xFF,则执行步骤106。

步骤105:系统为冷启动,执行步骤107。

步骤106:系统为热启动,执行步骤107。

步骤107:等待系统下一次复位,执行步骤101。

本实施例CPLD中的寄存器是8位的寄存器,但不限于8位寄存器,在实际的应用中,还可以是4位的寄存器或12位的寄存器等等。另外,还可以通过编译软件实现对CPLD中设置的寄存器的初始值为0的设置,例如Quartus4.0软件。

本实施例由于CPU根据内存中的值来区分系统是冷启动还是热启动,这样降低了系统的投入成本及复杂度,同时也提高了系统的可靠性,无论系统是否发生误操作,寄存器的值都能准确的定位系统是冷启动还是热启动。

在实际的应用中,CPU通过读取内存中的值来区分系统是冷启动还是热启动的方法可以由以下的程序来实现:

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity test is

--generic(maxtime:time:=60ms;

--        mintime:time:=30ms);

port(

       --3.时钟信号

          RST_CPU_N      :in std_logic;--GPI01脚,该信号作为CPLD的复位信号

       --3.时钟信号

          CLK_CPLD_25M    :in std_logic;--CPLD的时钟信号,系统25M的时钟

        --5.数据地址

           X_ROMDA       :inout std_logic_vector(7 downto 0); --CPU的数据线

           X_ROMWE_N     :in std_logic;                       --CPU的写使能低

有效

           X_ROMOE_N     :in std_logic;                       --CPU的读使能低

有效

           X_ROMADD      :in std_logic_vector(6 downto 0);    --CPU的低位

地址线

           CPLD_CS_N      :in 0std_logic;                     --PLD的片选寄

存器

       );

end test;

architecture testl of test is

               signal REG_POWERUP      :std_logic_vector(7 downto 0);

begin

       --cpu读操作

       read:process(CLK_CPLD_25M,RST_CPLD,READ_RST_FLAG)

               begin

           if(RST_CPLD=’0’)then

                          X_ROMDA<=″ZZZZZZZZ″:

                      elsif(rising_edge(CLK_CPLD_25M))then

                          CPLD_LED0<=’0’;

                        if(CPLD_CS_N=’0’and CPLD_OE_FLAG=’0’)then--CPLD

和地址的片选选通

                          case X_ROMADD is

                              when″0001011″=>                X_ROMDA <=

REG_POWERUP;

                                             READ_RST_FLAG<=’1’:

                          when others  =>  X_ROMDA<=″ZZZZZZZZ″;

                       end case;

                   else

                      X_ROMDA<=″ZZZZZZZZ″;

                      READ_RST_FLAG<=’0’;

                   end if;

              end if;

            end process read;

          --上电复位和CPU复位的区分电路

          readCpuReset:process(READ_RST_FLAG)

          begin

              if(READ_RST_FLAG’event and READ_RST_FLAG=’0’)then

                   REG POWERUP<=″10101010″;

              end if;

          end process readCpuReset;

end testl;

参见图4,本发明实施例还提供了一种区分系统冷启动和热启动的装置,装置包括设置模块、读取模块、保存模块、重置模块和区分模块;

设置模块用于在复杂可编程逻辑器件中设置寄存器;

读取模块用于在系统复位时,读取设置模块设置的寄存器中的值,并将读取出的值发送给保存模块;

保存模块用于接收读取模块发送的寄存器的值,并将该寄存器的值保存到内存中;

重置模块用于在保存模块将寄存器的值保存到内存中后,重置设置模块设置的寄存器中的值;

区分模块用于根据保存模块保存的寄存器的值来区分系统是冷启动还是热启动。

区分模块包括比较单元和识别单元;

比较单元用于将保存模块保存的寄存器的值分别与预先设置的系统冷启动和热启动的识别值进行比较,并将比较结果发送给识别单元;

识别单元用于接收比较单元发送的比较结果,并根据比较结果识别系统为冷启动还是热启动,如果比较结果与系统冷启动的识别值相同,则识别系统为冷启动,如果比较结果与系统热启动的识别值相同,则识别系统为热启动。

本实施例由于根据保存模块保存的寄存器的值来区分系统是冷启动还是热启动,这样降低了系统的投入成本及复杂度,同时也提高了系统的可靠性,无论系统是否发生误操作,设置模块设置的寄存器的值都能准确的定位系统是冷启动还是热启动。

以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号