差分升级方法及装置、终端与流程

文档序号:15163802发布日期:2018-08-14 17:11阅读:255来源:国知局

本发明涉及通信领域,具体而言,涉及一种差分升级方法及装置、终端。



背景技术:

目前,差分升级技术已经广泛的应用于移动终端的系统版本升级。差分升级包很小,通过空口的方式从服务器下发,它能够实现对终端系统分区未发生变化的系统版本进行快速升级。现在,系统版本不停的优化,新的应用也不断加入,如果在旧的系统版本上通过差分升级升到的新版本大小大于了装载版本分区的大小,那么差分升级则会失败,这种情况在特别是在小内存(内存紧张)的功能机、数据卡、路由器等非智能产品的系统版本升级中常见。针对这种情况,目前的处理方式是设定一个差分包大小的阈值,在升级时如果差分包大于这个阈值则不进行系统版本的差分升级,同时上报升级失败。

针对相关技术中的上述技术问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种差分升级方法及装置、终端,以至少解决相关技术中的版本分区大小不够导致系统版本升级失败的问题。

根据本发明的一个实施例,提供了一种差分升级方法,包括:获取终端中版本分区中的剩余空间大小;判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

可选地,扩容后的版本分区的空间大小与未扩容的版本分区的空间大小之差大于或者等于差分升级包的大小。

可选地,对版本分区进行扩容包括:判断与版本分区相邻的相邻分区的剩余空间是否大于第二预定阈值;在判断结果为大于第二预定阈值的情况下,将相邻分区中的预定空间借用给版本分区;其中,预定空间大于或者等于差分升级包的大小。

可选地,将相邻分区中的预定空间借用给版本分区包括:将相邻分区中的数据沿远离版本分区的方向移动预定距离;将相邻分区中空余出的预定距离所对应的空间分配给版本分区;其中,预定距离所对应的空间的大小为预定空间。

可选地,对版本分区进行扩容之后,方法还包括:在存储启动装载文件的分区对原始启动装载文件进行备份,得到备份的启动装载文件;将扩容后的版本分区的地址信息和移动后的相邻分区的地址信息更新到备份的启动装载文件中,得到更新后的启动装载文件。

可选地,在将依据差分升级包对系统版本升级后的版本数据写入扩容后的版本分区中之后,方法还包括:删除原始启动装载文件;利用更新后的启动装载文件,加载系统文件。

根据本发明的一个实施例,提供了一种差分升级装置,包括:获取模块,用于获取终端中版本分区中的剩余空间大小;判断模块,用于判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;扩容模块,用于在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;写入模块,用于将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

可选地,扩容模块,还用于判断与版本分区相邻的相邻分区的剩余空间是否大于第二预定阈值;以及在判断结果为大于第二预定阈值的情况下,将相邻分区中的预定空间借用给版本分区;其中,预定空间大于或者等于差分升级包的大小。

可选地,扩容模块,还用于将相邻分区中的数据沿远离版本分区的方向移动预定距离;以及将相邻分区中空余出的预定距离所对应的空间分配给版本分区;其中,预定距离所对应的空间的大小为预定空间。

可选地,装置还包括:备份模块,用于在存储启动装载文件的分区对原始启动装载文件进行备份,得到备份的启动装载文件;更新模块,用于将扩容后的版本分区的地址信息和移动后的相邻分区的地址信息更新到备份的启动装载文件中,得到更新后的启动装载文件。

根据本发明的一个实施例,提供了一种终端,包括:处理器,用于获取终端中版本分区中的剩余空间大小,其中,版本分区用于存储系统版本的版本数据;判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;以及在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;读写器,用于将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:获取终端中版本分区中的剩余空间大小,其中,版本分区用于存储系统版本的版本数据;判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

通过本发明,由于在版本分区中的剩余空间大小与差分升级包的大小之差小于第一预定阈值的情况下,对版本分区进行扩容,进而可以使得系统版本升级后的版本数据可以写入扩容后的版本分区中,进而可以完成系统版本升级,因此,可以解决相关技术中的版本分区大小不够导致系统版本升级失败的问题,保证了系统版本的成功升级。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的一种差分升级方法的移动终端的硬件结构框图;

图2是根据本发明实施例的差分升级方法的流程图;

图3是根据本发明实施例的差分升级装置的结构框图;

图4是根据本发明实施例提供的终端的结构示意图;

图5是根据本发明优选实施例提供的升级方法的流程示意图;

图6是根据本发明优选实施例提供的flash分区的示意图;

图7是根据本发明优选实施例提供的数据移动的示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种差分升级方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的差分升级方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

在本实施例中提供了一种运行于上述移动终端的差分升级方法,图2是根据本发明实施例的差分升级方法的流程图,如图2所示,该流程包括如下步骤:

步骤s202,获取终端中版本分区中的剩余空间大小;

步骤s204,判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;

步骤s206,在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;

步骤s208,将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

通过上述步骤,由于在版本分区中的剩余空间大小与差分升级包的大小之差小于第一预定阈值的情况下,对版本分区进行扩容,进而可以使得系统版本升级后的版本数据可以写入扩容后的版本分区中,进而可以完成系统版本升级,因此,可以解决相关技术中的版本分区大小不够导致系统版本升级失败的问题,保证了系统版本的成功升级。

需要说明的是,上述版本分区用于存储系统版本的版本数据,但并不限于此。

需要说明的是,在上述判断结果为大于或者等于上述第一预定阈值的情况下,可以直接进行版本的差分升级。

需要说明的是,上述扩容后的版本分区的空间大小与未扩容的版本分区的空间大小之差大于或者等于差分升级包的大小,即能够保证扩容后的版本分区能够容纳升级后的系统版本的版本数据。

需要说明的是,上述第一预定阈值可以根据实际情况进行设定,但需要说明的是,第一预定阈值为一个正数。

在本发明的一个实施例中,上述步骤s206可以表现为:判断与版本分区相邻的相邻分区的剩余空间是否大于第二预定阈值;在判断结果为大于第二预定阈值的情况下,将相邻分区中的预定空间借用给版本分区;其中,预定空间大于或者等于差分升级包的大小。即通过向相邻分区借用一定的空间来对版本分区进行扩容。

需要说明的是,上述预定空间可以根据实际情况进行设定,比如可以根据差分升级包的大小进行设定,但并不限于此。

需要说明的是,将相邻分区中的预定空间借用给版本分区可以表现为:将相邻分区中的数据沿远离版本分区的方向移动预定距离;将相邻分区中空余出的预定距离所对应的空间分配给版本分区;其中,预定距离所对应的空间的大小为预定空间。

以低于所述版本分区所在的地址的相邻分区为例来说明对版本分区的扩容:相邻分区的大小包括地址1到地址4,其中,地址1上存储数据1,地址2存储数据2,地址3存储数据3,地址4为空的,即相邻分区中数据和地址的对应关系如下:

数据1,数据2,数据3

地址1,地址2,地址3,地址4

那么,对版本分区的扩容包括:

(1)将数据3移至地址4,将数据2移至地址3,将数据1移至地址2,因而地址1此时为空,即相邻分区中数据和地址的对应关系变为:

数据1,数据2,数据3

地址1,地址2,地址3,地址4

(2)将相邻分区的起始地址变更为地址2;将空余的地址1化为版本分区里面,即将版本分区的结束地址变更为地址1,完成了对版本分区的扩容。

上述地址1对应的空间大小为上述预定空间。

需要说明的是,上述第二预定阈值可以根据实际情况进行设定,在相邻分区的剩余空间不足的情况下,还可以继续向上述相邻分区的下一个分区借用空间,以保证版本分区升级空间的需要。

需要说明的是,在上述步骤s208之前,上述方法还可以包括:将版本分区中的版本数据读出,根据差分算法,将差分升级包的数据差分升级到版本数据中,得到升级后的版本数据。

在本发明的一个实施例中,在上述步骤s206之后,上述方法还可以包括:在存储启动装载文件的分区对原始启动装载文件进行备份,得到备份的启动装载文件;将扩容后的版本分区的地址信息和移动后的相邻分区的地址信息更新到备份的启动装载文件中,得到更新后的启动装载文件。

需要说明的是,启动装载文件中记录有每个分区的空间大小和每个分区的起始地址等信息。

需要说明的是,在上述步骤s208之后,上述方法还可以包括:删除原始启动装载文件;利用更新后的启动装载文件,加载系统文件。

可选地,上述步骤的执行主体可以为终端等,但不限于此。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种差分升级装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本发明实施例的差分升级装置的结构框图,如图3所示,该装置包括:

获取模块32,用于获取终端中版本分区中的剩余空间大小;

判断模块34,与上述获取模块32连接,用于判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;

扩容模块36,与上述判断模块34连接,用于在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;

写入模块38,与上述扩容模块36连接,用于将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

通过上述装置,由于在版本分区中的剩余空间大小与差分升级包的大小之差小于第一预定阈值的情况下,上述扩容模块36对版本分区进行扩容,进而可以使得系统版本升级后的版本数据可以写入扩容后的版本分区中,进而可以完成系统版本升级,因此,可以解决相关技术中的版本分区大小不够导致系统版本升级失败的问题,保证了系统版本的成功升级。

需要说明的是,上述版本分区用于存储系统版本的版本数据,但并不限于此。

需要说明的是,上述扩容后的版本分区的空间大小与未扩容的版本分区的空间大小之差大于或者等于差分升级包的大小,即能够保证扩容后的版本分区能够容纳升级后的系统版本的版本数据。

需要说明的是,上述第一预定阈值可以根据实际情况进行设定,但需要说明的是,第一预定阈值为一个正数。

在本发明的一个实施例中,上述扩容模块36,还可以用于判断与版本分区相邻的相邻分区的剩余空间是否大于第二预定阈值;以及在判断结果为大于第二预定阈值的情况下,将相邻分区中的预定空间借用给版本分区;其中,预定空间大于或者等于差分升级包的大小。

需要说明的是,上述预定空间可以根据实际情况进行设定,比如可以根据差分升级包的大小进行设定,但并不限于此。

需要说明的是,上述扩容模块36,还可以用于将相邻分区中的数据沿远离版本分区的方向移动预定距离;以及将相邻分区中空余出的预定距离所对应的空间分配给版本分区;其中,预定距离所对应的空间的大小为预定空间。

在本发明的一个实施例中,上述装置还可以包括:备份模块,与上述扩容模块36连接,用于在存储启动装载文件的分区对原始启动装载文件进行备份,得到备份的启动装载文件;更新模块,与上述扩容模块36连接,用于将扩容后的版本分区的地址信息和移动后的相邻分区的地址信息更新到备份的启动装载文件中,得到更新后的启动装载文件。

在本发明的一个实施例中,上述装置还可以包括:删除模块,用于在将依据差分升级包对系统版本升级后的版本数据写入扩容后的版本分区中之后,删除原始启动装载文件。

需要说明的是,需要说明的是,启动装载文件中记录有每个分区的空间大小和每个分区的起始地址等信息。

需要说明的是,上述更新后的启动装载文件用于加载系统文件。

需要说明的是,上述装置可以位于终端中,但并不限于此。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明实施例还提供了一种终端,图4是根据本发明实施例提供的终端的结构示意图,如图4所示,该终端包括:

处理器42,用于获取终端中版本分区中的剩余空间大小;判断剩余空间大小与差分升级包的大小之差是否小于第一预定阈值;以及在判断结果为小于第一预定阈值的情况下,对版本分区进行扩容;

读写器44,与上述处理器42连接,用于将依据差分升级包对系统版本进行升级后的版本数据写入扩容后的版本分区中。

通过上述终端,由于在版本分区中的剩余空间大小与差分升级包的大小之差小于第一预定阈值的情况下,上述处理器32对版本分区进行扩容,进而可以使得系统版本升级后的版本数据可以写入扩容后的版本分区中,进而可以完成系统版本升级,因此,可以解决相关技术中的版本分区大小不够导致系统版本升级失败的问题,保证了系统版本的成功升级。

需要说明的是,上述版本分区用于存储系统版本的版本数据,但并不限于此。

需要说明的是,上述扩容后的版本分区的空间大小与未扩容的版本分区的空间大小之差大于或者等于差分升级包的大小,即能够保证扩容后的版本分区能够容纳升级后的系统版本的版本数据。

需要说明的是,上述第一预定阈值可以根据实际情况进行设定,但需要说明的是,第一预定阈值为一个正数。

在本发明的一个实施例中,上述处理器42,还可以用于判断与版本分区相邻的相邻分区的剩余空间是否大于第二预定阈值;以及在判断结果为大于第二预定阈值的情况下,将相邻分区中的预定空间借用给版本分区;其中,预定空间大于或者等于差分升级包的大小。

需要说明的是,上述预定空间可以根据实际情况进行设定,比如可以根据差分升级包的大小进行设定,但并不限于此。

在本发明的一个实施例中,上述处理器42,还可以用于将相邻分区中的数据沿远离版本分区的方向移动预定距离;以及将相邻分区中空余出的预定距离所对应的空间分配给版本分区;其中,预定距离所对应的空间的大小为预定空间。

在本发明的一个实施例中,上述读写器44还用于在存储启动装载文件的分区对原始启动装载文件进行备份,得到备份的启动装载文件;以上述处理器42还可以将扩容后的版本分区的地址信息和移动后的相邻分区的地址信息更新到备份的启动装载文件中,得到更新后的启动装载文件。

在本发明的一个实施例中,上述处理器42,还可以用于在将依据差分升级包对系统版本升级后的版本数据写入扩容后的版本分区中之后,删除原始启动装载文件。

需要说明的是,需要说明的是,启动装载文件中记录有每个分区的空间大小和每个分区的起始地址等信息。

需要说明的是,上述更新后的启动装载文件用于加载系统文件。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行实施例1中的方法的步骤的程序代码。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行实施例1中的方法的步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

为了更好的理解本发明,以下结合优选的实施例对本发明做进一步解释。

本发明优选实施例提出了一种动态分区的差分升级方法,通过对装载系统分区进行动态扩容,解决了分区大小不够导致升级失败问题。该方法包括:

将新旧两个系统版本的差分升级包通过空口的方式下载到移动终端,对差分升级包进行完整性校验,校验通过后,写入预留给差分包的flash分区空间,重启手机进入recover模式进行差分升级。

首先,读取装载版本分区的大小和装载的版本大小,算出分区的剩余空间大小。如果剩余空间大小减去差分包的大小小于某一个正数阈值,这时就必须对分区空间进行扩容,扩容的空间大小为差分包的大小。阈值取为正数是因为任何的分区都必须有一定的缓冲空间,因为分区中极有可能存在无法使用的坏块。接着在存储bootloader文件的分区备份bootloader文件,继续使用原始bootloader文件继续升级流程。然后判断相邻于版本分区的分区剩余空间大小,如果剩余空间大小大于某个阈值(一般取得比较大,保证剩余空间足够),则向此分区借差分包大小的区域给版本分区,就需要把此分区的起始位置向后移差分包大小的距离,同时将此分区的地址更新到备份的bootloader中。如果相邻分区剩余空间不够,则继续向下一个分区借空间来保证版本分区升级空间的需要。一般来讲,版本分区后的分区一般是文件系统分区或者user分区(因不同系统而异),空间都是足够的。最后ua(升级代理)完成差分升级,同时升级完成后,需要将备份的bootloader文件更新到原始文件,重启样机完成系统加载。

图5是根据本发明优选实施例提供的升级方法的流程示意图,如图5所示,该方法具体的交互步骤如下:

s501:通过空口将版本差分升级包下载到移动终端

s502:对差分包进行完整性校验,主要是版本是否比配,包大小是否正确,数据是否被篡改。包如果不正确则此次升级直接结束。

s503:将差分包写入预留的flash分区。

s504:读取装载版本分区的大小和装载的版本大小,算出分区的剩余空间大小。如果剩余空间大小减去差分包的大小小于某一个正数阈值,这时就必须对此分区空间进行扩容,扩容的空间大小为差分包的大小。如果版本分区空间足够,那么就ua就按照正常升级流程进行升级,升级完成重启终端。

s505:在移动相邻下一个分区之前,先对bootloader文件进行备份,分区信息改变后,同步也要升级bootloader文件。

s506:一般版本分区后相邻的分区为文件系统分区或者userdata分区,空间剩余比较多,所以直接移动版本分区的相邻分区的数据,移动大小为差分包大小。

s507:把移动后新的分区地址更新到备份的bootloader文件。

s508:ua执行升级流程,将版本分区的版本数据读出,同时根据查分算法,将差分包的数据差分升级到版本数据中,然后将升级后的版本数据重新写回版本分区中,完成版本升级。

s509:升级完成后,删除旧的bootloader文件,使用新的bootloader文件,重启终端,加载系统文件。

图6是根据本发明优选实施例提供的flash分区的示意图,如图6所示,该flash分区分为boot分区、kernel分区、版本或系统分区和文件系统分区。需要说明的是,当版本分区大小不够的情况下,可以是相邻分区借用空间使用,但优选的,可以向文件分区借用,但并不限于此。

图7是根据本发明优选实施例提供的数据移动的示意图,如图7所示,地址位由低到高存储数据,将数据1向高地址处移动一格,那么地址1就不存储数据,用于版本分区的扩容。

以一款手机内存为128m到256m左右为例。版本文件amss.mbn大约40兆左右,分配空间50兆,文件系统efs.mbn大约60兆,分配空间接近75兆。如果是128兆的内存空间,基本上就被使用完,当然如果内存是256兆,那么空间还比较充足。

以128兆配置来说明,保留5兆的文件系统空间来存储下载的差分包,按照查分算法,差分包最大不会超过版本文件的10%,也就是不会超过4.5兆,根据功能机差分升级的经验,差分包一般在2兆左右,那么如果升级一次,版本分区就会被占用2兆的空间,本来所剩的空间不多,同时还要预留一部分空间来保证坏块,版本缓冲空间。如果版本分区剩余空间的阈值设置为5兆,那么剩下的5兆的版本空间最多能升级两次,如果还要升级第三次就必须向文件系统扩容空间,如果差分包2兆,那么就把文件系统空间向高地址移动2兆,来保证版本的差分升级。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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