嵌入式设备固件补丁包生成及固件差分升级方法和装置与流程

文档序号:11154513阅读:482来源:国知局
嵌入式设备固件补丁包生成及固件差分升级方法和装置与制造工艺

本发明涉及通信领域,具体而言,本发明涉及一种嵌入式设备固件补丁包生成方法及装置,同时还涉及一种嵌入式设备差分升级方法及系统。



背景技术:

随着信息技术的发展,嵌入式设备越来越多样化,应用也越来越广泛。也越来越多的设备需要集中式管理,布局网管中心系统来集中监控、维护这些设备,如蜂窝式微基站、基站、路由器等一系列的设备都需要网管中心系统来监控其运行情况以及对其软件版本维护。往往网管中心系统管理了大量的设备,且其有不同的固件版本在运行,这个时候固件升级的速度、效率及其稳定性就显得非常重要,如果升级包过大以及网络传输速度的限制,会导致升级时间变长,升级时间过长对设备升级来说带来了诸多问题。升级期间出现突发事件影响升级结果的情况增加,比如链路异常、设备掉电等。升级包过大,不但会占用较多的设备资源,包括设备存储空间和CPU等资源,同时耗费网络带宽,耗费网络流量,如果用户通过以流量计费的渠道升级,又会增加额外开销。

现阶段,传统的设备固件升级有基本两种:一种整包升级方式,即用户通过网管升级整包完成升级;一种是补丁包升级方式,即用户在本地制作好补丁包,然后通过网管升级补丁包完成升级。第一种方式缺点在于整包比较大,远程传输比较慢,特别是在网速受限的环境下,直接影响网络升级的稳定性;第二种方式缺点是在网设备版本管理需要用户管理,因为制作补丁包,需要设备正在运行的固件版本,因此用户需要管理在网所有设备正在运行的固件版本;这样虽然在固件传输效率上大大提高了,但是却需要额外的人工投入到在网设备版本维护上。因此,必须要有新的方法,用以解决上述问题。



技术实现要素:

本发明的目的旨在采用最小有效的固件补丁包进行嵌入式设备固件的差分升级,节省人力维护和宽带成本。

为了实现上述目的,本发明提供以下技术方案:

本发明一实施例提供一种嵌入式设备固件补丁包生成方法,包括以下步骤:

接收上传的固件升级包;

解析所述固件升级包并校验其合法性;

基于校验成功的固件升级包制作固件补丁包。

进一步,还包括步骤,更新数据库中固件的记录信息。

更进一步,还包括步骤,将制作完成的固件补丁包通过远程接口下载到相应设备。

具体的,所述通过远程接口下载固件补丁包到相应设备,具体依据数据库中固件的记录信息执行下载。

其中,所述固件的记录信息包括:用于表征固件补丁包制作是否成功的标记信息、用于表征是否支持固件补丁包升级的标记信息、固件补丁包路径、原固件包路径、当前固件升级包路径。

具体的,所述制作固件补丁包的步骤包括:

获取原固件包路径信息和版本号信息;

筛选出固件升级包和原固件包中不同的文件;

采用bsdiff工具对所述筛选出的不同文件进行差分处理;

生成固件补丁包的相关记录信息;

对所述经过差分处理的文件和固件补丁包的相关记录信息进行压缩打包,生成固件补丁包。

其中,所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

本发明另一实施例提供一种嵌入式设备固件差分升级方法,包括以下步骤:

通过远程接口获取采用上述任意一项所述的方法生成的固件补丁包;

解差分所述获取的固件补丁包,还原得到固件整包;

按照固件整包升级流程执行升级。

具体的,所述还原得到固件整包的步骤中,具体依据所述固件补丁包的相关记录信息,还原固件补丁包得到固件整包。

其中,所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

本发明又一实施例提供一种嵌入式设备固件补丁包生成装置,包括:

接收模块,用于接收上传的固件升级包;

解析校验模块,用于解析所述接收模块接收的固件升级包并校验其合法性;

补丁包制作模块,用于基于所述解析校验模块校验成功的固件升级包制作固件补丁包。

进一步,还包括更新模块,用于更新数据库中固件的记录信息。

更进一步,还包括远程下载模块,用于将所述补丁包制作模块制作完成的固件补丁包通过远程接口下载到相应设备。

具体的,所述远程下载模块依据数据库中固件的记录信息执行下载。

其中,所述固件的记录信息包括:用于表征固件补丁包制作是否成功的标记信息、用于表征是否支持固件补丁包升级的标记信息、固件补丁包路径、原固件包路径、当前固件升级包路径。

具体的,所述补丁包制作模块包括:

获取模块,用于获取原固件包路径信息和版本号信息;

筛选模块,用于筛选出固件升级包和原固件包中不同的文件;

差分模块,用于采用bsdiff工具对所述筛选出的不同文件进行差分处理;

第一生成模块,用于生成固件补丁包的相关记录信息;

第二生成模块,用于对所述经过差分处理的文件和固件补丁包的相关记录信息进行压缩打包,生成固件补丁包。

其中,所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

本发明再一实施例提供一种嵌入式设备固件差分升级系统,包括:

远程获取模块,用于通过远程接口获取采用上述任意一项所述的方法生成的固件补丁包;

还原模块,用于解差分所述远程获取模块获取的固件补丁包,还原得到固件整包;

升级模块,用于按照固件整包升级流程执行升级。

具体的,所述还原模块依据所述固件补丁包的相关记录信息,还原固件补丁包得到固件整包。

其中,所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

相比现有技术,本发明的方案具有以下优点:

本发明所述方法通过改进补丁包的制作过程,使得可以通过网管中心系统在最短时间内自动生成最小有效的固件升级补丁包,由设备通过该固件升级补丁包对固件进行差分升级,从而提高固件升级效率和稳定性,同时节省人力维护和宽带成本,增强用户体验度。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明所述嵌入式设备固件补丁包生成方法流程示意图;

图2为本发明所述嵌入式设备固件差分升级方法流程示意图;

图3为本发明所述嵌入式设备固件补丁包生成装置结构框图;

图4为本发明所述嵌入式设备固件差分升级系统结构框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

请参阅图1,图1是本发明一实施例所述一种嵌入式设备固件补丁包生成方法的流程示意图,包括以下步骤:

步骤101、、接收上传的固件升级包;

用户上传固件升级包到网管中心系统,用户在本地登录网管的界面,上传升级固件,此时固件是整包,可以是某种格式的压缩包,如zip格式、XZ格式等,压缩包包含升级用的一系列文件,这些文件中有许多是跟设备在运行的固件是相同的,传输时这些文件是可以不用传输,直接从设备中获取即可。网管中心系统接收用户上传的固件升级包,对用户来说,仍然是按传统的固件整包升级的,补丁包制作和版本自动管理工作都由网管中心系统自动完成。

步骤102、解析所述固件升级包并校验其合法性;

解析和校验固件升级包,主要是网管中心系统接收到固件升级包后,对其进行解压及合法性校验,校验是否是合法的固件升级包,如果合法,则从固件升级包中的版本文件号文件中读取其固件版本号。

步骤103、基于校验成功的固件升级包制作固件补丁包;

网管中心系统自动执行补丁包制作。具体制作过程包括以下步骤:

step1:获取原固件包路径信息和版本号信息;

当获取到固件版本号后,查询数据库版本表中的固件的记录信息,获取目前在网设备的所有固件版本号,且依次获取其固件整包在网管中心系统中的对应路径并解压。

step2:筛选出固件升级包和原固件包中不同的文件;

对上传的固件升级包中的文件与设备正在运行的固件包中的文件进行遍历且进行大小比较和MD5码比较,判断两个固件整包文件夹之间是否有文件增加或删除,是否有相同文件,同时筛选出不同的文件。

step3:采用bsdiff工具对所述筛选出的不同文件进行差分处理;

对不同的文件用bsdiff工具进行比较,得出不同文件的补丁文件。如果遍历固件中遇到压缩包,则再进行解压缩,解压缩至没有经过压缩的具体文件,对文件遍历、匹配和处理都必须记录在补丁制作清单文件中,清单文件格式如下:

<PatchFilesversion="xxxx_V12.02.01.01_0">

<filepath="my.db"md5="e42f142b017e5a0c4b402331a6bf5ac0"typeInfo="0"/>

<filepath="node.zip/app"md5="9846cbdbe5caaa336859b6ec41502208"typeInfo="2"/>

</PatchFiles>

其中,version代表固件包的版本号;path代表每个文件在压缩包中的相对路径;md5代表每个文件的md5码,用于后续还原文件时,校验是否还原成功;typeInfo代表文件类型,所述类型包括增加文件、删除文件、用bsdiff工具处理过的文件。

step4:生成固件补丁包的相关记录信息;

所述补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息等信息。后续设备还原补丁包时,根据这些信息进行还原操作。

step5:对所述经过差分处理的文件和固件补丁包的相关记录信息进行压缩打包,生成固件补丁包。

最后把相对于设备正在运行的固件包,属于增加的文件和经过bsdiff工具处理过的文件以及清单文件一起打包,生成固件补丁包。

进一步,本发明实施例所述方法还包括,网管中心系统更新数据库的固件的记录信息。其中,所述固件的记录信息主要包括用于表征固件补丁包制作是否成功的标记信息、用于表征是否支持固件补丁包升级的标记信息、固件补丁包路径、原固件包路径、当前固件升级包路径等信息。

固件的记录信息自动管理主要原理就是利用数据库版本表来记录当前设备正在运行的固件路径信息且网管中心系统本身可以存储当前设备正在运行的固件整包的信息的特点。当这些信息有变化时,需要进行及时更新,远程补丁包文件下载到设备时,会自动查询这些信息,同时对不是当前设备正在运行的固件整包也要进行删除,以避免长时间运行后,造成网管中心系统的存储空间的不足的问题。

更进一步的,所述方法还包括将制作完成的固件补丁包通过远程接口下载到相应设备,由相应设备执行差分升级。

具体地,网管中心系统自动根据数据库的固件的记录信息执行远程下载固件补丁包,此步骤主要就是查询数据库版本表中,是否具有设备正在运行固件版本的固件补丁包,如果有固件补丁包,则获取其固件补丁包路径信息,否则,获取整包路径信息;然后根据获取的路径信息,把固件补丁包或固件整包下载到设备。

请参阅图示2,本发明另一实施例提供一种嵌入式设备固件差分升级方法,包括以下步骤:

步骤201、通过远程接口获取采用上述实施例中所述的嵌入式设备固件补丁包生成方法生成的固件补丁包;

具体地,本实施例中嵌入式设备进行固件差分升级所采用的固件补丁包由网管中心系统生成,并通过远程接口下载到相应设备。

步骤202、解差分所述获取的固件补丁包,还原得到固件整包;

设备获取固件补丁包或固件整包后,首先解析包的类型,如果是固件补丁包则根据固件补丁包清单文件进行解差分,还原固件补丁包。按制作固件补丁包相反的过程,取出设备正在运行的固件整包,具体依据所述固件补丁包的相关记录信息,遍历每条记录,把新增的文件、删除的文件和不同的文件进行还原后,根据记录清单文件中的路径信息,替换正在运行固件包中的对应文件,最终还原出固件整包。其中,所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

如果解析出是固件整包,则直接进行后续的固件整包升级流程,设备按固件整包的流程,执行升级流程。

步骤203、按照固件整包升级流程执行升级。

该步骤由相应设备在还原得到固件整包以后,按照相应固件整包的升级流程执行升级,以完成对相应固件的升级。

请参阅图示3,本发明又一实施例提供一种嵌入式设备固件补丁包生成装置,所述装置包括:接收模块31、解析校验模块32、补丁包制作模块33以及其他变换实施例中的更新模块34、远程下载模块35,其中,

接收模块用于接收上传的固件升级包;解析校验模块用于解析所述接收模块接收的固件升级包并校验其合法性;补丁包制作模块用于基于所述解析校验模块校验成功的固件升级包制作固件补丁包。

所述补丁包制作模块33包括五个子模块,分别为获取模块330、筛选模块331、差分模块332、第一生成模块333、第二生成模块334。获取模块330用于获取原固件包路径信息和版本号信息,筛选模块331用于筛选出固件升级包和原固件包中不同的文件,差分模块332用于采用bsdiff工具对所述筛选出的不同文件进行差分处理,第一生成模块333用于生成固件补丁包的相关记录信息,第二生成模块334用于对所述经过差分处理的文件和固件补丁包的相关记录信息进行压缩打包生成固件补丁包。其中,所述第一生成模块333生成的固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

所述更新模块34用于更新数据库中固件的记录信息。所述固件的记录信息包括:用于表征固件补丁包制作是否成功的标记信息、用于表征是否支持固件补丁包升级的标记信息、固件补丁包路径、原固件包路径、当前固件升级包路径。

所述远程下载模块35用于将所述补丁包制作模块33制作完成的固件补丁包通过远程接口下载到相应设备。具体的,所述远程下载模块35依据数据库中固件的记录信息执行下载。

请参阅图示4,本发明再一实施例提供一种嵌入式设备固件差分升级系统,所述系统包括:远程获取模块41,用于通过远程接口获取采用上述实施例提供的嵌入式设备固件升级包生成方法生成的固件补丁包;还原模块42,用于解差分所述远程获取模块获取的固件补丁包,还原得到固件整包;升级模块43,用于按照固件整包升级流程执行升级。

具体的,所述还原模块42依据所述固件补丁包的相关记录信息,还原固件补丁包得到固件整包。所述固件补丁包的相关记录信息包括:固件补丁包版本号、每个文件在固件包的相对路径、用于表征是否新增或删除文件的标记信息、用于表征是否相同文件的标记信息、用于表征是否经过bsdiff工具差分的标记信息。

综上可知,本发明所述嵌入式设备固件补丁包生成装置通过在传统网管中心系统中加入补丁包制作模块、更新数据库信息模块,实现了在网管中心系统上对设备自动进行补丁包的制作和自动固件记录信息管理,从而解决了传统固件升级效率低和人工管理版本的问题。同时,本发明所述嵌入式设备固件差分升级系统使得设备能够自动还原固件整包并完成升级,实现在操作上,用户仅上传固件升级整包即可完成设备的固件升级,由此即提高了升级效率和稳定性,又大大节省人力成本,增强了用户体验度。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1