专利名称:一种具有自恢复功能的远程在线升级方法
技术领域:
本发明涉及一种远程通讯中网络设备的升级方法,具体涉及的是一种对网络设备进行自动恢复的远程升级方法。
背景技术:
在大型网络中,节点设备通常分布在各种地理环境下,网络拓扑具有设备多、区域分散、结构复杂等特点,为了便于管理和维护,通常通过一定的通讯管理方法实现对拓扑内所有设备集中统一监控管理的目的。
在设备的使用过程中,出于对设备功能的增强、Bug的修改等目的,经常需要对设备的运行程序进行升级。如果派工作人员到现场一一升级,需要耗费很多的人力、物力,而且升级所有设备将需要很长的周期。因此需要找出一种,能够在一个固定地理位置,对网内所有地理位置上的设备完成软件升级的方法。
在众多的软件升级方法中,以中国专利号CN03132982的专利《远程加载或升级程序的系统及其方法》和中国专利号CN01145382《在通信系统中利用单片机实现软件下载的装置及其方法》中提到的升级技术最具代表性,前者的升级思路是主控子系统通过TFTP网络协议将新版本程序存储在FLASH存储器,由交互加载器完成待升级子系统应用程序的加载,其中,交互加载必须由工程人员复位待升级子系统来实现;因此无法实现远程无人干预的升级。后者采用的方式是设备的ROM程序先引导FLASH中的主应用程序开始运行,升级时,新应用程序被写入到FLASH的备用程序区,系统重启动后,在内部ROM程序的指导下,新应用程序得到运行。但现有技术需要远端服务器,而且要其全天候工作;若升级失败系统则可能破坏整个系统的完整性。
发明内容
为了解决上述缺陷,本发明提出一种具有自恢复功能的远程在线升级方法,该方法可以有效地节省人力物力、降低升级成本、缩短升级周期。
本发明的技术方案包括一种具有自恢复功能的远程在线升级方法,其包括以下步骤A升级服务器向各节点相连并发送升级命令;B各节点判断此升级命令是否是发给自己的,若是则反馈;否则转发该升级命令给其它节点;C目标节点收到对应的升级命令后向所述升级服务器反馈,所述升级服务器收到反馈消息,将升级程序通过网络转发给所述目标节点;D所述目标节点接收完升级程序后,将其写入程序FLASH的存储区间,并修改其公共区间的启动参数,向所述升级服务器反馈;E所述升级服务器确认后向所述目标节点发送软启动命令。
所述的方法,其中,所述方法还包括F所述目标节点打开用逻辑电路设计的定时器,并启动完毕,等待所述升级服务器的测试命令;G所述目标节点若收到测试命令则反馈测试结果;否则循环等待;H所述升级服务器判断所述目标节点的反馈结果,若测试正常则发送命令关闭定时器、修改程序FLASH公共区的启动参数、发软启动命令;I所述目标节点收到软启动命令,从公共区的自举程序运行后,启动升级后的程序运行,升级流程结束。
所述的方法,其中,所述步骤H还包括J若所述定时器超时,所述目标节点被复位而重新启动,测试次数减1;否则循环等待直到定时器超时;
K当失败次数超过预设值时,启动FLASH的启动程序将公共区的启动参数复原,关闭定时器,启动先前的应用程序,升级流程结束。
所述的方法,其中,所述程序FLASH划分为至少一存放运行版本程序区一存放升级版本程序区以及一用来存放设备的自举程序、记载各版本程序的信息以及启动参数的公共区。
所述的方法,其中,所述公共区参数包括程序运行状态、测试次数、启动区间号、各版本程序的代码长度及各版本程序入口。
本发明所提供的一种具有自恢复功能的远程在线升级方法,与现有技术的两种升级技术相比,本发明方法不需要远端服务器,只需要在升级时启动一个升级服务器,也不用使其全天候工作;整个升级过程无需冷启动;若升级失败系统可以回复到先前的运行状态。
图1为本发明方法的最小系统硬件结构图;图2a和图2b为本发明方法的升级流程图。
具体实施例方式
下面结合附图,将对本发明的具体实施方式
作进一步描述。
本发明的具有自恢复功能的远程在线升级方法,如图1和图2所示的,升级过程主要包含以下步骤A1升级服务器与最近的节点相连,并发送升级命令,进入步骤A2;A2该节点判断此升级命令是否是发给自己的,若是则反馈,进入步骤A4;否则转发该升级命令,进入步骤A3;A3目标节点在收到升级命令后向所述升级服务器反馈,进入步骤A4;A4所述升级服务器收到确认消息,将新应用程序通过网络转发给目标节点,进入步骤A5;
A5所述目标节点接收完应用程序后,将其写入程序FLASH的特定区间,并修改公共区间的启动参数为新版本程序测试参数,向所述升级服务器反馈,进入步骤A6;A6所述升级服务器确认后向所述目标节点发送软启动命令,进入步骤A7;A7所述目标节点打开用逻辑电路设计的定时器,然后执行软启动命令,自举后,搬移新程序到内存,程序指针跳转到新程序的入口地址,开始执行,进入步骤A8;A8所述目标节点启动完毕,等待所述升级服务器的测试命令,进入步骤A9;A9所述目标节点若收到测试命令则反馈测试结果,进入步骤A10;否则循环等待;A10所述升级服务器判断反馈结果,若测试正常则发送命令关闭定时器、修改程序FLASH公共区的启动参数、指定新程序区为正常运行程序区的参数、发软启动命令,进入步骤A11;否则进入步骤A12;A11所述目标节点收到软启动命令,启动新程序运行,升级流程结束;A12若收到升级服务器的异常反馈,或者收不到升级服务器的反馈,说明升级不对,定时器超时,所述目标节点被复位而重新启动,测试次数减1,进入步骤A13;A13当失败次数超过预设值(通常设定为3次)时,启动FLASH的启动程序将FLASH公共区的启动参数复原,关闭定时器,启动先前的应用程序,升级流程结束。
如图1中所示的,程序FLASH被分为四个区,其中,三个区用来存放版本程序,其中一个区存放是当前正在使用的程序,其余两个为备用程序区。第四个区为公共区用来记载单板的自举程序、前面三个区存放的各版本程序的信息以及启动参数等,公共区的自举程序与版本程序区的分离使得当前运行的版本程序可以被更换;用一种可行的拓扑结构将众多的节点组成网络,每个节点具有网内唯一的ID号,通过一定的传输方式实现任意节点间相互访问的目的,所述升级服务器与最近的节点通过串口或者网口相连。
首先,所述升级服务器需将新应用程序写入目标节点的程序FLASH的某个程序区中。随后,配置公共区参数,包括程序运行状态、测试次数、启动区间号、代码长度及程序入口等。接着,所述升级服务器下发重启命令,系统软启动;自举程序执行结束前,判断FLASH中是否有测试程序、测试次数是否大于零,当两个条件都满足时,则进入测试流程;当两个条件任一个不满足,则正常启动把参数区指定的应用程序搬移到内存中执行,搬移过程中,代码长度及程序入口等参数都来自公共区中的记录。
在测试过程中,先启动在CPLD中用逻辑实现的定时器,在本发明方法中设定的超时时间为20分钟,该时间间隔可根据实际情况修改;测试次数,在本发明方法中缺省的测试次数为3,可根据实际情况进行修改,减1。如果所述目标节点能和升级服务器正常通讯,在规定的20分钟内,工作人员对所述目标节点的新程序的各项功能逐一验证,若各项都验证通过,工作人员则通过所述升级服务器向目标节点发送关闭定时器命令;然后发送命令修改公共区参数包括将该新应用程序标记为正式程序、测试次数清零、启动区间设置成本程序FLASH区等;最后发送软件复位命令,目标节点重新启动,程序进入正常流程,载入该新程序开始运行,直到下一次升级命令的到来,至此,目标节点测试通过并且升级成功。若测试程序运行后,所述目标节点和所述升级服务器通讯失败,在20分钟内,新程序无法由测试态被修改为正常状态,定时器不能被关闭,导致定时器超时,发出复位信号;所述目标节点重新启动,如果测试次数大于零,其将被减1,再次进入测试流程;若三次重启都无法正常运行测试程序,此时测试次数等于零,所述目标节点再次重启后,进入正常流程,载入旧程序运行,恢复到升级前的状态。这样,在升级失败时,可以恢复使用原先的版本程序。
本发明实现了一种对联网设备的远程在线升级的方法不需要在现场即可对远端正在运行的设备实现升级。该方法大大降低了设备维护人员的工作量,节省了升级成本;并且具有在升级失败的情况下自动恢复的功能,大大提高了远程升级的可靠性。
但应当理解的是,上述针对本发明具体实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
权利要求
1.一种具有自恢复功能的远程在线升级方法,其特征在于包括以下步骤A升级服务器向各节点相连并发送升级命令;B各节点判断此升级命令是否是发给自己的,若是则反馈;否则转发该升级命令给其它节点;C目标节点收到对应的升级命令后向所述升级服务器反馈,所述升级服务器收到反馈消息,将升级程序通过网络转发给所述目标节点;D所述目标节点接收完升级程序后,将其写入程序FLASH的存储区间,并修改其公共区间的启动参数,向所述升级服务器反馈;E所述升级服务器确认后向所述目标节点发送软启动命令。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括F所述目标节点打开用逻辑电路设计的定时器,并启动完毕,等待所述升级服务器的测试命令;G所述目标节点若收到测试命令则反馈测试结果;否则循环等待;H所述升级服务器判断所述目标节点的反馈结果,若测试正常则发送命令关闭定时器、修改程序FLASH公共区的启动参数、发软启动命令;I所述目标节点收到软启动命令,从公共区的自举程序运行后,启动升级后的程序运行,升级流程结束。
3.根据权利要求2所述的方法,其特征在于,所述步骤H还包括J若所述定时器超时,所述目标节点被复位而重新启动,测试次数减1;否则循环等待直到定时器超时;K当失败次数超过预设值时,启动FLASH的启动程序将公共区的启动参数复原,关闭定时器,启动先前的应用程序,升级流程结束。
4.根据权利要求3所述的方法,其特征在于,所述程序FLASH划分为至少一存放运行版本程序区、一存放升级版本程序区以及一用来存放设备的自举程序、记载各版本程序的信息以及启动参数的公共区。
5.根据权利要求3所述的方法,其特征在于,所述公共区参数包括程序运行状态、测试次数、启动区间号、各版本程序的代码长度及各版本程序入口。
全文摘要
本发明公开了一种具有自恢复功能的远程在线升级方法,其包括升级服务器向各节点相连并发送升级命令;各节点判断此升级命令是否是发给自己的,若是则反馈;否则转发该升级命令给其它节点;目标节点收到对应的升级命令后向所述升级服务器反馈,所述升级服务器收到反馈消息,将升级程序通过网络转发给所述目标节点;所述目标节点接收完升级程序后,将其写入程序FLASH的存储区间,并修改其公共区间的启动参数,向所述升级服务器反馈;所述升级服务器确认后向所述目标节点发送软启动命令。目标节点先对新程序进行测试,如果测试经过升级服务器确认为通过,则修改启动参数,确定启用新程序运行。否则返回使用旧版本程序。本发明方法不需要远端服务器,整个升级过程无需冷启动;若升级失败系统可以回复到先前的运行状态,大大提高了远程升级的可靠性。
文档编号H04L12/24GK1933416SQ20051010255
公开日2007年3月21日 申请日期2005年9月12日 优先权日2005年9月12日
发明者黄守旺, 李春阳, 花茂盛, 刘燕 申请人:中兴通讯股份有限公司