一种软件补丁在线升级方法、单板及系统转让专利

申请号 : CN200610165416.4

文献号 : CN101206575B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程国向

申请人 : 大唐移动通信设备有限公司

摘要 :

本发明提供一种软件补丁在线升级方法,加载升级文件,向相关任务发送升级请求;相关任务收到请求后回送响应,并进入循环等待状态;回送响应齐全后,执行相关任务的升级操作,然后设置完毕标志;相关任务检查到全部升级完毕标志后,升级结束。同时,本发明也提供一种软件补丁在线升级系统,包括服务器、主控板和目标板,所述核心单元加载升级文件后,向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元执行相关任务的升级操作,然后设置完毕标志;相关任务检查到全部完毕标志后,升级结束。本发明能够实现动态的在线软件补丁升级过程,并且将升级时间有效控制在1秒以内,大大减小了升级对系统产生的影响。

权利要求 :

1.一种软件补丁在线升级方法,其特征在于,包括:

加载升级文件,向相关任务发送升级请求;

相关任务收到请求后回送响应,并进入循环等待状态;

回送响应齐全后,调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;

相关任务检查到全部升级完毕标志后,升级结束。

2.如权利要求1所述的方法,其特征在于,还包括设置超时定时器,如果超时后还没有收齐响应,则本次升级失败,并向所有相关任务发送升级结束消息。

3.如权利要求2所述的方法,其特征在于,所述定时器的定时长为1秒。

4.如权利要求1所述的方法,其特征在于,所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去是将注册指针指向升级文件。

5.如权利要求4所述的方法,其特征在于,还包括判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。

6.如权利要求5所述的方法,其特征在于,还包括根据升级文件的类型设定循环等待周期。

7.如权利要求6所述的方法,其特征在于:所述循环等待周期为10毫秒。

8.一种软件补丁在线升级系统,包括服务器、主控板、以及目标板,其特征在于,所述目标板包括核心单元和接口单元,其中:所述核心单元加载升级文件后,向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元执行如下操作:调用相关子模块的注册接口,并将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;

相关任务检查到全部完毕标志后,升级结束。

9.如权利要求8所述的系统,其特征在于,还包括定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。

10.如权利要求9所述的系统,其特征在于,所述定时器的定时长预设为1秒。

11.如权利要求8所述的系统,其特征在于:所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去更具体是指将注册指针指向升级文件。

12.如权利要求8所述的系统,其特征在于:所述核心单元更进一步包括业务处理单元和信令处理单元,其中:所述业务处理单元,用于加载升级文件,以及设置相关任务的循环等待周期;

所述信令处理单元,用于向相关任务发送升级请求,并接收相关任务回送的响应,以及当回送响应齐全时,触发接口单元。

13.如权利要求12所述的系统,其特征在于:所述信令处理单元还包括判断单元,用于判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。

14.如权利要求13所述的系统,其特征在于:所述业务处理单元还包括时间设置单元,用于根据升级文件的类型设定相关任务的循环等待周期。

15.如权利要求14所述的系统,其特征在于:所述循环等待周期为10毫秒。

16.一种实现软件补丁在线升级的单板,其特征在于,包括:核心单元和接口单元,其中:所述核心单元加载升级文件后,向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元执行如下操作:调用相关子模块的注册接口,并将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;

相关任务检查到全部完毕标志后,升级结束。

17.如权利要求16所述的单板,其特征在于,还包括定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。

18.如权利要求17所述的单板,其特征在于,所述定时器的定时长预设为1秒。

19.如权利要求16所述的单板,其特征在于:所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去更具体是指将注册指针指向升级文件。

20.如权利要求16所述的单板,其特征在于:所述核心单元更进一步包括业务处理单元和信令处理单元,其中:所述业务处理单元,用于加载升级文件,以及设置相关任务的循环等待周期;

所述信令处理单元,用于向相关任务发送升级请求,并接收相关任务回送的响应,以及当回送响应齐全时,触发接口单元。

21.如权利要求20所述的单板,其特征在于:所述信令处理单元还包括判断单元,用于判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。

22.如权利要求21所述的单板,其特征在于:所述业务处理单元还包括时间设置单元,用于根据升级文件的类型设定相关任务的循环等待周期。

23.如权利要求22所述的单板,其特征在于:所述循环等待周期为10亳秒。

说明书 :

技术领域

本发明涉及通信领域,尤其涉及一种软件补丁在线升级方法、单板及系统。

背景技术

如图1所示,为电信系统中一般设备模型。在软件发布之后,为了解决运行中目标板出现的缺陷,一般通过升级软件的方案解决。但是对于电信系统平均无故障时间要求的不断提高,全系统升级越来越难被局方接受。
通常的缺陷解决方法可以有以下两种方式:其一是整系统升级时顺带解决;其二是单独提供缺陷解决版本。
升级步骤通常为:
1、将升级版本文件放入服务器;
2、通过手动方式触发目标板卡启动自动加载新版本流程;
3、加载完毕后写入FLASH或其他存储外设。
4、在业务较轻时触发主备倒换或直接复位,让目标板卡重启然后加载新版本运行。
由上可知,对于方式一而言,整系统升级的机会较少,需要等待较长周期才能解决。而对于方式二,需要重新启动目标板卡,不能于系统在线状态下打补丁。此外,板卡重启一般在分钟级以上才能进入服务状态,对系统的影响较大。

发明内容

本发明要解决的技术问题在于提供一种软件补丁在线升级方法、单板及系统,能够实现在线软件补丁升级,并大大缩短升级时间。
实现本发明目的的技术方案如下:
一种软件补丁在线升级方法,包括:
加载升级文件,向相关任务发送升级请求;
相关任务收到请求后回送响应,并进入循环等待状态;
回送响应齐全后,调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;
相关任务检查到全部升级完毕标志后,升级结束。
优选的,还包括设置超时定时器,如果超时后还没有收齐响应,则本次升级失败,并向所有相关任务发送升级结束消息。
优选的,所述定时器的定时长为1秒。
优选的,所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去是指将注册指针指向升级文件。
优选的,还包括判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。
优选的,还包括根据升级文件的类型设定循环等待周期。
优选的,所述循环等待周期为10毫秒。
一种软件补丁在线升级系统,包括服务器、主控板、以及目标板,所述目标板包括核心单元和接口单元,其中:
所述核心单元加载升级文件后,向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元执行如下操作:调用相关子模块的注册接口,并将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;
相关任务检查到全部完毕标志后,升级结束。
优选的,还包括定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。
优选的,所述定时器的定时长预设为1秒。
优选的,所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去更具体是指将注册指针指向升级文件。
优选的,所述核心单元更进一步包括业务处理单元和信令处理单元,其中:
所述业务处理单元,用于加载升级文件,以及设置相关任务的循环等待周期;
所述信令处理单元,用于向相关任务发送升级请求,并接收相关任务回送的响应,以及当回送响应齐全时,触发接口单元。
优选的,所述信令处理单元还包括判断单元,用于判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。
优选的,所述业务处理单元还包括时间设置单元,用于根据升级文件的类型设定相关任务的循环等待周期。
优选的,所述循环等待周期为10毫秒。
一种实现软件补丁在线升级的单板,包括:核心单元和接口单元,其中:
所述核心单元加载升级文件后,向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元执行如下操作:调用相关子模块的注册接口,并将新的替代子模块升级的服务函数指针注册进去,然后设置完毕标志;
相关任务检查到全部完毕标志后,升级结束。
优选的,还包括定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。
优选的,所述定时器的定时长预设为1秒。
优选的,所述调用相关子模块的注册接口,将新的替代子模块升级的服务函数指针注册进去更具体是指将注册指针指向升级文件。
优选的,所述核心单元更进一步包括业务处理单元和信令处理单元,其中:
所述业务处理单元,用于加载升级文件,以及设置相关任务的循环等待周期;
所述信令处理单元,用于向相关任务发送升级请求,并接收相关任务回送的响应,以及当回送响应齐全时,触发接口单元。
优选的,所述信令处理单元还包括判断单元,用于判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。
优选的,所述业务处理单元还包括时间设置单元,用于根据升级文件的类型设定相关任务的循环等待周期。
优选的,所述循环等待周期为10毫秒。
与现有技术相比,本发明具有以下有益效果:
本发明提出一种基于VXWORKS操作系统下的软件补丁在线升级方法及系统。通过对软件或硬件设计的模块化封装及函数指针调用的注册管理方式,对升级过程的相关影响任务的保护处理,实现动态的在线软件补丁升级过程,并且将升级时间有效控制在1秒以内,大大减小了升级对系统产生的影响。
此外,本发明通过对升级可能有较大延迟的任务里的函数,设置为先发送“升级启动请求”消息到相关单板;收到允许响应后再按照普通升级执行。通过对升级文件的区分,可以有效控制升级的时间。
另外,升级时间的限制体现在各个任务或“线程”执行单条消息的最大时延。由于升级启动时,某任务或“线程”可能正在执行某消息,而升级消息必须等该消息执行结束后才能执行。因此,升级需要的时间主要消耗在等待最大消息执行时间上。真正执行升级的时间只有几条简单的注册语句,10毫秒之内保证可以完成。
下面结合附图和具体实施方式对本发明作进一步描述。

附图说明

图1是现有技术设备模型示意图;
图2是本发明模块A的封装示意图;
图3是本发明设备框架示意图;
图4是本发明升级控制任务启动升级后板内处理流程图;
图5是本发明RNC软件补丁升级流程。

具体实施方式

本发明提出一种基于VXWORKS操作系统下的软件补丁在线升级方法及系统。
首先,如图4所示,对在线升级的过程详细描述如下:
步骤401、将升级使用的.o文件放入文件服务器;
步骤402、向相关任务发送升级请求;
步骤403、相关任务收到请求后回送响应,并进入循环周期为10ms的循环踏步等待状态;
步骤404、升级控制任务检查是否全部响应,如果是则继续步骤405;否则继续检查;
步骤405、升级任务接收到所有相关任务的响应后,调用相关子模块的注册接口,将新的替代子模块升级的某个或某几个服务函数指针注册进去,完成后设置升级完毕标志;
步骤406、升级控制任务检查是否全部升级标志完成,如果是则相关任务继续原程序代码处理流程,升级结束;否则转至步骤407;
步骤407、进入10ms循环踏步等待状态。
此外,在上述步骤中还包括设置1秒定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。
如图5所示,为本发明RNC软件补丁升级的另一流程图,过程说明如下:
首先将升级使用的.o文件放入文件服务器,该服务器可以是独立服务器,也可能是网管服务器;
如果是升级可能有较大延迟的任务里的函数,则需要先发送“升级启动请求”消息到相关单板;收到允许响应后按照普通升级执行;如果是不允许响应,则等待允许的指示消息,待收到指示消息后执行普通升级;
然后,网管台触发在线升级请求,相关单板上的升级任务收到该请求后启动FTP/TFTP过程,将需要的.o文件下载到本板内存中;对下载的文件执行校验和,检查文件有没有异常;如果校验失败,则向网管台回送失败响应,原因是校验和失败;否则,执行下一步;
执行loadmodule过程,升级任务通知该CPU上所有相关任务,开始升级;
相关任务接到通知后回复确认消息后,进入循环等待时间,循环周期为10ms;
升级任务接收到所有相关任务的响应后,进入替换子模块处理:
1>逐个扫描子模块的注册接口;
2>新的替代子模块升级的某个或某几个服务函数指针注册进去;
3>处理完所有子模块;
4>设置升级完毕标志;
相关任务检查是否升级标志完成,继续原程序代码处理流程,升级过程结束。
此外,本发明用以实现软件补丁在线升级的单板能够应用于RNC设备中,如图3所示。在RNC的所有单板中,主要采用两种处理器,即PPC系列和pentimu系列。本发明可以应用到这两种系列CPU中,各单板与升级服务器存在通路。
如图3所示,该软件补丁在线升级系统包括服务器31、主控板32、以及目标板33。其中目标板33包括业务处理单元331、信令处理单元332、以及接口单元333。
所述业务处理单元331加载升级文件后,通过信令处理单元332向相关任务发送升级请求,相关任务回送响应并进入循环等待状态;待收到的回送响应齐全时,触发接口单元333注册指针指向升级文件,然后设置完毕标志;相关任务检查到全部完毕标志后,升级结束。
此外,所述信令处理单元还可以包括判断单元,用于判断升级文件的类型,如果为普通升级文件,则向相关任务发送升级请求;如果为特殊升级文件,则向相关任务发送升级启动请求,收到相关任务回送的响应后,再向相关任务发送升级请求。所述业务处理单元还可以包括时间设置单元,用于根据升级文件的类型设定相关任务的循环等待时间。
另外,还可以包括定时器,如果相关任务回送响应的时长超过该定时器预设的定时长,则本次升级失败,由所述接口单元向所有相关任务发送升级结束消息。
再如图2所示,为本发明一个具体实施例。假设一个模块A,其由A1/A2两个单元组成,其中A1为核心单元,A2为接口单元。核心单元A1对外提供的服务接口函数全部向A2接口单元进行注册,再由A2单元对外提供服务。
当A1算法出现缺陷时,将A1核心单元出现缺陷的某个或某几个函数修改后编译为一个.o文件,然后将该.o文件传输到目标板上的软件升级处理任务中,包括本次升级影响的任务列表。
软件升级处理任务向受影响的任务列表中的每个任务发送升级通知,然后等待响应。当收齐响应后,调用A2接口单元的注册接口,将新的A1核心单元升级的某个或某几个服务函数指针注册进去,完成后设置升级完毕标志。
各受影响任务收到升级通知消息时,会进入周期为10毫秒的循环延时,然后检查升级完成标志。如果升级完成标志为TRUE,则继续向下执行;否则继续循环延时等待。
各任务检测到升级完成标志,均退出循环延时状态,系统再次使用A1提供的服务时,就会由升级后的A1实现。
其中,利用实时操作系统VXWORKS提供的功能如下:
VXWORKS系统在5.4版本及其后续版本提供的动态加载模块功能很强大,对于动态加载的模块中使用到的但是没有定义的全局变量或函数,VXWORKS会自动在系统符号表中查找并链接,如果其他.out或.o中有,则会自动链接到本模块。
作为本发明的另一实施例,在操作系统的任务管理基础上增加一个调度单元,管理多个调度单位。每个调度单位有自己的队列邮箱、私有数据区等。上层应用大部分以独立的调度单位存在。
在可在线升级的模块设计时,采用外壳加内核方式。外壳是对外提供的服务接口函数,内核是核心执行函数。初始化时,内核向外壳函数注册。当内核函数算法升级或出现缺陷时,可以通过在线升级方式解决。
在可在线升级的模块设计时,内核函数不允许使用静态变量。如果需要使用,也需要定义为全局变量。
各独立任务设计时需要支持“在线升级”请求消息。收到该消息时停止后续消息处理,原地踏步,等待“在线升级完成”消息或标志。
升级控制任务需要支持对各独立任务的“升级启动请求”消息,各个任务收到状态查询请求后需要停止执行下一条消息,原地踏步,等待“在线升级”请求消息。“升级启动请求”消息设计主要是针对那些执行特别慢的任务,比如FTP/TFTP下载或上传管理任务,当下载或上传一个几百兆字节的文件时,可能会阻塞较长时间。
凡是可升级模块在设计时需要满足动态资源的可释放功能。比如动态内存、信号量、消息队列等需要提供可访问的全局变量,当升级时,将原资源释放掉。
优化各任务或基本调度单位对单条消息的最大执行时长,保证不超过500毫秒。这样才能保证1秒的升级指标。
设备内部有通用的通信模块完成设备板卡之间消息的传输封装,使升级流程和硬件设备独立。
此外,升级时间的限制体现在各个任务或“线程”执行单条消息的最大时延。由于升级启动时,某任务或“线程”可能正在执行某消息,而升级消息必须等该消息执行结束后才能执行。因此,升级需要的时间主要消耗在等待最大消息执行时间上。真正执行升级的时间只有几条简单的注册语句,10毫秒之内保证可以完成。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。