CN101377744B - 一种终端设备软件升级恢复方法及装置 - Google Patents

一种终端设备软件升级恢复方法及装置 Download PDF

Info

Publication number
CN101377744B
CN101377744B CN2008101612851A CN200810161285A CN101377744B CN 101377744 B CN101377744 B CN 101377744B CN 2008101612851 A CN2008101612851 A CN 2008101612851A CN 200810161285 A CN200810161285 A CN 200810161285A CN 101377744 B CN101377744 B CN 101377744B
Authority
CN
China
Prior art keywords
data
target data
data block
nth target
nth
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008101612851A
Other languages
English (en)
Other versions
CN101377744A (zh
Inventor
苑康强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Device Co Ltd
Original Assignee
Huawei Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Device Co Ltd filed Critical Huawei Device Co Ltd
Priority to CN2008101612851A priority Critical patent/CN101377744B/zh
Publication of CN101377744A publication Critical patent/CN101377744A/zh
Application granted granted Critical
Publication of CN101377744B publication Critical patent/CN101377744B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种终端设备软件的升级恢复方法,包括:获取新版的软件包数据;确定待更新的目标数据块,并保存所述目标数据块;比较所述新版的软件包数据与所述目标数据块,得到差异数据集,并保存所述差异数据集;利用获取新版的软件包数据更新所述目标数据块;若更新操作失败,则根据所述差异数据集将所述软件恢复到原有版本。本发明还提供相应的可采用该方法进行软件升级的终端设备。根据本发明,在软件升级异常时,可实现终端软件的自动恢复,自动还原为升级前的原有软件版本,保护了终端设备。

Description

一种终端设备软件升级恢复方法及装置
技术领域
本发明涉及通信技术领域,具体涉及终端设备软件升级恢复方法及装置。
背景技术
终端设备的软件升级是一个现实且基本的需求。通过软件升级,可以解决原软件存在的BUG,或者为设备提供新的软件功能。
当升级过程中发生异常,如断电或升级程序故障等,如果升级方案无法使终端软件自动恢复为原版本的软件,则将导致软件被破坏,终端设备无法继续正常使用,对用户造成极大损害。
目前有一种方案,可解决软件升级失败后终端无法使用的问题,其实现过程大致如下:
在终端设备中存储有基本运行系统和正常运行系统,当需要对终端的基本运行系统升级时,使用终端中的正常运行系统从服务器下载对应升级软件,更新终端本地的基本运行系统;当需要对终端的正常运行系统升级时,使用终端中的基本运行系统从服务器下载对应升级软件,更新终端本地的正常运行系统。
此软件升级方案中,由于终端有两套可运行系统,升级时不是用来更新自身系统,而是用于更新另一个系统,即使发生升级失败的情况,也不会影响本系统的正常运行。因此可以再次操作运行升级程序,来达到正确更新另一系统的目的。
但是,要求终端设备兼顾两套运行系统的操作,因此软件开发需求和硬件存储设备的需求都要提高,增加研发的人力投入和产品成本。并且这种双系统的切换操作,如果只是为了满足升级需求,而导致用户操作不便。因此,这种运行两套系统的软件升级方案,总体来看,是不经济的一种方案。
发明内容
有鉴于此,本发明提供一种终端设备软件升级恢复方法及装置,实现终端设备在软件升级发生异常的情况下,将升级软件恢复至升级前版本的功能时,节省成本。
本发明实施例提供的一种终端设备软件的升级恢复方法,包括:
获取软件的更新数据;
根据所述更新数据确定对应的所述软件的需更新的目标数据,保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;其中n为不大于所述目标数据的数据块的数量的自然数;
用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;
若所述第n目标数据块的数据更新不成功,则将所述第n目标数据块的备份数据作为恢复数据,保存所述恢复数据;
若所述第n目标数据块的数据更新成功,则获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据,保存所述恢复数据;
确定所述软件升级失败,则根据所述恢复数据恢复所述软件的所述目标数据。
本发明实施例还提供一种终端装置,包括:
接收单元,用于获取软件的更新数据;
恢复数据获取单元,根据所述更新数据确定对应的所述软件的需更新的目标数据,根据所述目标数据获取恢复数据;
存储单元,用于保存获取的所述恢复数据;
软件更新单元,利用所述更新数据更新所述软件中的所述目标数据;
恢复操作单元,用于在所述软件升级失败时,根据所述恢复数据恢复所述软件的所述目标数据;其中,
所述软件更新单元包括:
备份单元,用于保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;其中n为不大于所述目标数据的数据块的数量的自然数;
更新单元,用于用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;
所述恢复数据获取单元包括:
第一获取单元,用于在所述更新单元对所述第n目标数据块的数据更新不成功时,则将所述第n目标数据块的备份数据作为所述恢复数据;
第二获取单元,用于在所述更新单元对所述第n目标数据块的数据更新成功时,获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据。
本发明实施例提供的技术方案中,通过保存终端设备软件升级所涉及的目标数据块;比较所获取新版的软件包数据与所述目标数据块,得到差异数据集,并保存所述差异数据集;利用获取新版的软件包数据更新所述目标数据块;若更新操作失败,则根据所述目标数据块或差异数据集和当前操作的目标数据块将所述软件恢复到原有版本。在升级自身软件时,如果发生异常,可以实现终端软件的自动恢复,自动还原为升级前的原有软件版本。相对与现有技术中的软件升级方法,不会导致软件被破坏,终端设备可继续正常使用,也可以保证终端设备完好如前,保护了终端设备。相对于现有技术中的终端设备兼顾两套运行系统的操作,本发明提供的方案只需支持一套软件运行系统不必增加成本,且操作便捷易行。
附图说明
图1为本发明提供的终端设备软件升级方法流程示意图;
图2为本发明实施例提供的一种终端设备软件升级方法流程示意图;
图3为本发明实施例中终端设备软件恢复流程示意图;
图4为本发明实施例中提供的一种终端装置示意图。
具体实施方式
鉴于终端设备运行两套系统的成本高且更为复杂,终端设备通常适宜采用一套运行系统。对于只有一套运行系统的终端设备,本发明实施例提供的一种终端设备软件升级方法,在升级自身软件时,如果发生异常,可以实现终端软件的自动恢复,自动还原为升级前的原有软件版本,不会造成因升级失败而导致设备不能再使用的后果。
在本发明提供的一个升级恢复方法,如图1所示,可包括如下步骤:
步骤S101,获取软件的更新数据;
从升级服务器或其他方式获取软件更新需要的更新数据。
步骤S102,根据所述更新数据确定对应的所述软件的需更新的目标数据,根据所述目标数据获得恢复数据,保存所述恢复数据;
利用获取的更新数据对软件对应的目标数据进行更新,为保证升级失败时,可将软件恢复,故保存根据目标数据获得的更新数据。
步骤S103,利用所述更新数据更新所述软件中的所述目标数据;
需指出的是,步骤S102和步骤S103的执行没有严格的次序限制,可先执行步骤S102,在执行步骤S103,反之亦可。
步骤S104,确定所述软件升级失败,则根据所述恢复数据恢复所述软件的所述目标数据。
由于恢复数据是根据目标数据而获得,故,在软件升级失败时,可根据恢复数据恢复目标数据。
在上述实施例中,由于在软件升级的过程中保存了用以恢复目标数据的恢复数据,故可在软件升级失败时,将软件恢复至升级以前的版本,且该实现方法消耗的软件资源少,节约了实现成本。
在本发明提供的软件升级恢复方法的一个实施例中,上述实施例中的恢复数据可以是目标数据本身,故而,在升级失败时,可直接用保存的原目标数据恢复升级过程中被替换了的相应数据,从而实现软件的恢复。
在本发明提供的软件升级恢复方法的一个实施例中,上述实施例中的利用所述更新数据更新所述软件中的所述目标数据的步骤S103可以包括:保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;
软件升级时,可对需升级的目标数据中的目标数据块逐块进行升级,当升级到第n目标数据块时,对第n目标数据块的数据进行备份。
用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;其中n为不大于所述目标数据的数据块的数量的自然数;
第n目标数据块中的数据备份之后,用第n更新数据块中的数据去更新第n目标数据块中的数据。
当确定所述软件升级失败,则根据所述目标数据获得恢复数据的步骤S104具体可包括:
若所述第n目标数据块的数据更新不成功,则将所述第n目标数据块的备份数据作为所述恢复数据;
当在对第n目标数据块进行更新时,更新过程发生异常,则可将第n目标数据块的备份数据作为恢复数据。
若所述第n目标数据块的数据更新成功,则获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据;
若第n目标数据块的数据更新成功,则可将第n目标数据块的差异数据集作为恢复数据进行保存。
在本发明的一个实施例中,上述得到所述第n目标数据块的差异数据集具体可以为:
从所述第n目标数据块的备份数据中获取所述第n目标数据块的数据集Aold
将所述第n更新数据块的数据作为更新数据集Anew
按如下算法求得所述第n目标数据块的差异数据集:
Adiff=Anew-Aold
在本发明的一个实施例中,根据所述恢复数据恢复所述软件的所述目标数据可以包括:
判断需恢复的所述第n目标数据块在软件升级时是否更新成功;
若更新不成功,则用所述第n目标数据块的备份数据恢复所述第n目标数据块的数据;
如果更新不成功,则该数据块的对应的第n更新数据块的数据不便获取,故,采取使用第n目标数据块的备份数据恢复所述第n目标数据块的数据较为方便。
若更新成功,则用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据;
若更新成功,则更新后的该软件中对应数据块的数据就是第n更新数据块的数据,可方便地利用第n更新数据块的数据与第n目标数据块的差异数据集恢复第n目标数据块的数据。
具体而言,用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据可以为:
用所述Anew减去所述第n目标数据块的差异数据集Adiff,得到所述Aold,用所述Aold恢复所述第n目标数据块的数据。
另外,在对所述恢复数据压缩后进行保存,具体包括:
压缩所述目标数据和/或第n目标数据块的差异数据集,得到所述第n目标数据块的压缩差异数据集,保存所述第n目标数据块的压缩差异数据集;
所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据之前进行解压缩:解压所述第n目标数据块的压缩差异数据集,得到所述第n目标数据块的差异数据集。
通过设置标志信息对升级失败进行记录。
具体地,设置所述标志数据块用于存储标识所述软件升级是否成功的标识信息;根据标志数据块确定所述软件升级失败。
在所述软件的升级过程中根据软件升级是否成功实时更新所述标志信息。
在上述实施例中,由于通过保存终端设备软件升级所涉及的目标数据块;比较所获取新版的软件包数据与所述目标数据块,得到差异数据集,并保存所述差异数据集;利用获取新版的软件包数据更新所述目标数据块;若更新操作失败,则根据所述目标数据块或差异数据集和当前操作的目标数据块将所述软件恢复到原有软件。利用差异数据集来恢复原有软件,可节省存储空间,以及对所述目标数据和/或差异数据集进行压缩后再进行存储,可进一步节省存储空间,从而降低成本。本发明实施例将所述目标数据及差异数据集保存在非易失存储介质中。通常,终端设备都采用闪存FLASH设备作为自己的非易失存储介质,有NAND FLASH和NORFLASH两种。
下面本发明实施例提供的方案以NAND FLASH为例来具体阐述。
首先,在当前终端设备运行系统的存储介质NAND FLASH存储空间中增加一个升级分区UPDATE,用于存储升级过程中的新老版本差异。如果升级程序包可以再分为几个部分,则在UPDATE分区中相应的创建其对应子分区。
NAND FLASH分为块(BLOCK)和页(PAGE),一般一页PAGE的用户操作区为512bytes或2048bytes,一块BLOCK包括32个PAGE或64个PAGE。且NAND FLASH的操作是按BLOCK进行擦除,按PAGE进行读写操作,如此则存在数据操作的不同步性。因此在擦除一个BLOCK前,需要先备份此BLOCK的数据,以防升级失败发生在操作此BLOCK的最后一个PAGE之前。设定此BLOCK为当前操作的BLOCK,并创建一个用于备份当前操作BLOCK数据的子分区UPDATE_BLOCK,该分区用于备份升级操作过程中待擦除的BLOCK数据,也即正在操作的BLOCK的数据,以便在升级失败后恢复时使用。同时记录该BLOCK的ID,以可以查询到是哪一个BLOCK,方便恢复。
同时,为了区分升级成功与失败,在UPDATE分区中的第一个BLOCK为标志BLOCK,通过读取此BLOCK的数据,可判断升级成功与否,是否需要恢复。例如:标志BLOCK的数据结构定义如下:
升级前,先更新此状态为默认的需要恢复状态,即上述数据结构的成员项update_need_restore为TRUE。
由于NAND FLASH的操作是按PAGE进行读写操作,因此,定义差异数据块的最小单位(称为差异子元)为PAGE,一个差异子元表示以PAGE为单位的新老版本差异数据。
参照图2,本发明实施例提供的一种终端设备软件升级恢复方法,其处理流程包括:
步骤S201,终端设备从服务器或PC下载新版本的软件镜像(二进制的流文件),即升级软件数据包。
下载及升级过程可以是,在获取新版的软件包数据过程中,每收到一个新版的软件数据,及时利用获取新版的软件数据更新所述目标数据块。也就是说,升级过程操作中边接收新版本软件数据边进行软件数据更新操作,而不是把整个软件镜像都下载下来后再升级,这样以节约内存空间。
为便于描述,本实施例中,定义每PAGE的字节数为PAGE_SIZE,每个下载包的大小为8*PAGE_SIZE,则一个数据包一次可以更新8个PAGE。具体的更新操作如下:
步骤S202,找到要升级的目标BLOCK,将该BLOCK的数据保存到预先设置的BLOCK备份区,然后擦除此BLOCK。
步骤S203,从所保存的备份BLOCK中读取第一个PAGE的数据,得到老版本数据集Aold,可表示为数组Aold[PAGE_SIZE]。
步骤S204,从获取的数据包中取第一个PAGE的升级数据,得到新版本数据集Anew,可表示为数组Anew[PAGE_SIZE]。
步骤S205,按如下算法求得升级前数据集Aold和升级后新版本数据集Anew的差异集Adiff=Anew-Aold,显然可导出如下公式:
Adiff=Anew-Aold                  (a)
Anew-Adiff=Aold,                (b)
Aold+Adiff=Anew。                (c)
差异集Adiff可表示为一个数组Adiff[PAGE_SIZE]。以上计算,实际上是对数组的每个成员项进行差异计算,以满足公式(a)、(b)、(c)的要求。
一般而言,新版本和老版本的差别不大,则对于差异集Adiff,其大部分的成员项应该是0。
在本发明的一个实施例中,对于差异集Adiff,通过常用压缩算法进行压缩,得到压缩后的数据Acompress,存储到写FLASH的缓存write_buffer[PAGE_SIZE]中,等到write_buffer的数据达到PAGE_SIZE长度后,完成一次写FLASH的PAGE的操作。一般而言,需要多个PAGE的差分压缩数据才够写一次PAGE,因此可以极大的节约存储空间。
步骤S206,参照步骤S204-步骤S205对数据包中各页PAGE数据进行操作,一直到该接收包的数据都处理完毕,给下载服务器回ACK应答消息,申请服务器下发下一个升级包。
步骤S207,重复步骤S202-步骤S206的操作,一直到本次升级操作结束,升级成功或者升级失败。如果升级成功,则更新标志BLOCK的状态数据为成功,不需要恢复,否则仍默认为需要恢复。
终端设备对升级操作进行监测,当判定升级操作失败,根据所述差异数据集对已完成更新的数据块BLOCK进行回复,对于当前正在更新操作中数据块BLOCK,根据之前记录的该BLOCK的ID,利用所保存的该BLOCK以及利用差异数据集回复的数据块BLOCK将所述软件恢复到原有版本。
另外,还可按照下述步骤进行升级操作:
在升级操作过程中获取软件的更新数据;
根据所述更新数据确定对应的所述软件的需更新的目标数据,并保存所涉及的目标数据作为备份数据;
当所述软件升级失败,则根据利用所保存的目标数据恢复所述软件。
终端设备重新启动即再加电运行时,通过主BOOTLOADER程序(此程序是不会被升级更新的,类似PC的BIOS系统),读取UPDATE分区的标志BLOCK数据,判断是否需要恢复。如果需要恢复,则启动恢复流程,还原终端软件为老版本软件。参照图3,恢复流程的主要操作步骤如下:
步骤S301,选择当前操作的BLOCK为第一个BLOCK,备份当前BLOCK的数据到UPDATE的子分区UPDATE_BLOCK,并记录当前BLOCK的ID。通过该ID,可以知道已经恢复到什么程度了,如果在恢复过程中发生了异常,则下次终端上电运行后,还可以继续进行恢复。
步骤S302,备份完毕,擦除当前BLOCK,为写操作做好准备。
步骤S303,读取UPDATE分区的第一个备份差异数据页PAGE的数据到读缓存read_buffer[PAGE_SIZE],对此数据依次进行解压缩,依次生成每个PAGE的差异集Adiff,根据公式(b),得到待更新PAGE对应的老版本数据集Aold。执行写PAGE操作,以进行版本恢复。
步骤S304,参照步骤S202-S203对UPDATE分区的其余各备份差异数据页PAGE的数据进行相应操作,以恢复整个BLOCK的数据。
步骤S305,重复执行步骤S201-步骤S204,恢复整个备份差异集对应的数据。
步骤S306,读取UPDATE分区的子分区UPDATE_BLOCK中的备份升级BLOCK的ID和数据,将此BLOCK的数据完整的恢复到对应BLOCK。
步骤S307,更新UPDATE分区的标志BLOCK的数据为恢复成功,表示软件恢复为正常。至此,整个恢复操作完毕,所有升级失败前的修改已经都恢复为升级前的老版本状态。完成了软件修复。
步骤S308,如果恢复过程中发生异常,则可以通过已经恢复的BLOCK的ID,接着这个BLOCK继续执行步骤S302-步骤S307的操作,直至恢复成功。
参照图4,本发明实施例提供的一种终端装置400,包括:
接收单元410,用于获取软件的更新数据;
恢复数据获取单元420,根据所述更新数据确定对应的所述软件的需更新的目标数据,根据所述目标数据获取恢复数据;
存储单元430,用于保存获取的所述恢复数据;
软件更新单元440,利用所述更新数据更新所述软件中的所述目标数据;
恢复操作单元450,用于在所述软件升级失败时,根据所述恢复数据恢复所述软件的所述目标数据。
所述软件恢复数据为所述目标数据;或所述软件恢复数据为已更新数据与相应目标数据的差异数据集和当前操作中的目标数据。
所述软件更新单元440包括:
备份单元440a,用于保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;其中n为不大于所述目标数据的数据块的数量的自然数;
更新单元440b,用于用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;
所述恢复数据获取单元420包括:
第一获取单元420a,用于在所述更新单元对所述第n目标数据块的数据更新不成功时,则将所述第n目标数据块的备份数据作为所述恢复数据;
第二获取单元420b,用于在所述更新单元对所述第n目标数据块的数据更新成功时,获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据。
所述第二获取单元420b具体用于,在所述更新单元对所述第n目标数据块的数据更新成功时,从所述第n目标数据块的备份数据中获取所述第n目标数据块的数据集Aold,将所述第n更新数据块的数据作为更新数据集Anew,按如下算法求得所述第n目标数据块的差异数据集Adiff=Anew-Aold,将所述第n目标数据块的差异数据集Adiff作为所述恢复数据。
所述恢复操作单元450包括:
判断单元450a,用于判断需恢复的所述第n目标数据块在软件升级时是否更新成功;
第一恢复单元450b,用于在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新不成功的情况下,用所述第n目标数据块的备份数据恢复所述第n目标数据块的数据;
第二恢复单元450c,用于在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新成功的情况下,用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据。
所述第二恢复单元450c具体用于,在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新成功时,用所述Anew减去所述第n目标数据块的差异数据集差异数据集Adiff,得到所述Aold,用所述Aold恢复所述第n目标数据块的数据。
所述存储单元430具体用于压缩所述第n目标数据块的差异数据集,得到所述第n目标数据块的压缩差异数据集,保存所述第n目标数据块的压缩差异数据集;
所述恢复操作单元450,还包括:
解压单元450d,用于解压所述第n目标数据块的压缩差异数据集,得到所述第n目标数据块的差异数据集。
所述存储单元具体用于采用非易失存储介质存储所述恢复数据。
应用实施例
目前,空中传送固件升级(FOTA,Firmware Over-The-Air)技术越来越成熟,这项技术允许用户通过无线网络下载和接受最新的手机升级文件,不需要借助其它设备就可以完成升级。
将本发明实施例提供的终端设备软件升级方法应用到采用空中传送固件升级FOTA技术的无线终端设备中,可取得更好的效果,以提高用户满意度。
具体地,通过特定运算,计算出升级版本和老版本之间的差分包。类似如上Adiff=Anew-Aold的操作,并将差分包上传到升级服务器。
如果需要升级,则可以通过网络触发和用户触发两种触发方式来进行升级。其中网络触发是服务器接受到上传的新版本后,给目标终端发送一条PUSH短信,短信中带有要升级的版本的URL地址。终端接受并解析此短信,发现需要升级,则与服务器直接进行版本信息鉴权,以验证是否服务器版本比终端当前版本新。
用户触发升级是用户向服务器发一条PUSH短信,主动发起升级请求,服务器收到短信后,由服务器发起版本信息鉴权。
鉴权通过,则终端发起与服务器的网络连接,通过HTTP方式从服务器上将升级差分包下载下来,存储到终端的文件系统中,并启动终端自身的升级过程。终端的升级过程一般是将终端当前老版本数据读出到内存中,根据差分包,计算出新版本数据。然后将新版本数据由RAM中写入FLASH,完成升级操作。
采用本发明提供的软件升级方式,因为可以实现升级自恢复,则不需要像如上方式那样计算差分包,而直接可以从网络上下载新版本数据,边下载边升级即可。
本发明实施例提供的技术方案中,通过保存终端设备软件升级所涉及的目标数据块;比较所获取新版的软件包数据与所述目标数据块,得到差异数据集,并保存所述差异数据集;利用获取新版的软件包数据更新所述目标数据块;若更新操作失败,则根据所述差异数据集将所述软件恢复到原有版本。在升级自身软件时,如果发生异常,该方案可以实现终端软件的自动恢复,自动还原为升级前的原有软件版本,本发明方案可以解决升级失败导致终端设备无法使用的问题,即使升级过程中人为中断升级过程,也可以保证终端设备完好如前,保护了终端设备。
同时本发明方案对存储空间的需求很小,且对用户操作是透明的。用户不需要特殊操作。
显然,本领域的技术人员应该明白,上述的本发明的各单元或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个单元或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (13)

1.一种终端设备软件的升级恢复方法,其特征在于,包括:
获取软件的更新数据;
根据所述更新数据确定对应的所述软件的需更新的目标数据,保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;其中n为不大于所述目标数据的数据块的数量的自然数;
用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;
若所述第n目标数据块的数据更新不成功,则将所述第n目标数据块的备份数据作为恢复数据,保存所述恢复数据;
若所述第n目标数据块的数据更新成功,则获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据,保存所述恢复数据;
确定所述软件升级失败,则根据所述恢复数据恢复所述软件的所述目标数据。
2.如权利要求1所述的方法,其特征在于,所述保存所述恢复数据为:采用非易失存储介质保存所述恢复数据。
3.如权利要求1所述的方法,其特征在于,所述获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集具体为:
从所述第n目标数据块的备份数据中获取所述第n目标数据块的数据集Aold
将所述第n更新数据块的数据作为更新数据集Anew
按如下算法求得所述第n目标数据块的差异数据集Adiff=Anew-Aold
4.如权利要求3所述的方法,其特征在于,所述根据所述恢复数据恢复所述软件的所述目标数据,包括:
判断需恢复的所述第n目标数据块在软件升级时是否更新成功;
若更新不成功,则用所述第n目标数据块的备份数据恢复所述第n目标数据块的数据;
若更新成功,则用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据。
5.如权利要求4所述的方法,其特征在于,所述用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据具体为:
用所述Anew减去所述第n目标数据块的差异数据集Adiff,得到所述Aold,用所述Aold恢复所述第n目标数据块的数据。
6.如权利要求4所述的方法,其特征在于,所述保存所述恢复数据包括:
压缩所述第n目标数据块的差异数据集,得到所述第n目标数据块的压缩差异数据集,保存所述第n目标数据块的压缩差异数据集;
所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据之前还包括:解压所述第n目标数据块的压缩差异数据集,得到所述第n目标数据块的差异数据集。
7.如权利要求1所述的方法,其特征在于,所述确定所述软件升级失败具体为:
根据标志数据块确定所述软件升级失败;所述标志数据块用于存储标识所述软件升级是否成功的标识信息;
所述方法还包括:
在所述软件的升级过程中根据软件升级是否成功实时更新所述标识信息。
8.一种终端设备软件的升级恢复装置,其特征在于,包括:
接收单元,用于获取软件的更新数据;
恢复数据获取单元,根据所述更新数据确定对应的所述软件的需更新的目标数据,根据所述目标数据获取恢复数据;
存储单元,用于保存获取的所述恢复数据;
软件更新单元,利用所述更新数据更新所述软件中的所述目标数据;
恢复操作单元,用于在所述软件升级失败时,根据所述恢复数据恢复所述软件的所述目标数据,其中,
所述软件更新单元包括:
备份单元,用于保存所述目标数据中的第n目标数据块的数据,作为第n目标数据块的备份数据;其中n为不大于所述目标数据的数据块的数量的自然数;
更新单元,用于用所述第n目标数据块对应的所述更新数据中的第n更新数据块中的数据更新所述第n目标数据块的数据;
所述恢复数据获取单元包括:
第一获取单元,用于在所述更新单元对所述第n目标数据块的数据更新不成功时,则将所述第n目标数据块的备份数据作为所述恢复数据;
第二获取单元,用于在所述更新单元对所述第n目标数据块的数据更新成功时,获取所述第n更新数据块的数据与所述第n目标数据块的备份数据中不同数据的集合,得到所述第n目标数据块的差异数据集,将所述第n目标数据块的差异数据集作为所述恢复数据。
9.如权利要求8所述的装置,其特征在于,所述第二获取单元具体用于,在所述更新单元对所述第n目标数据块的数据更新成功时,从所述第n目标数据块的备份数据中获取所述第n目标数据块的数据集Aold,将所述第n更新数据块的数据作为更新数据集Anew,按如下算法求得所述第n目标数据块的差异数据集Adiff=Anew-Aold,将所述第n目标数据块的差异数据集Adiff作为所述恢复数据。
10.如权利要求9所述的装置,其特征在于,所述恢复操作单元包括:
判断单元,用于判断需恢复的所述第n目标数据块在软件升级时是否更新成功;
第一恢复单元,用于在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新不成功的情况下,用所述第n目标数据块的备份数据恢复所述第n目标数据块的数据;
第二恢复单元,用于在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新成功的情况下,用所述第n目标数据块的差异数据集恢复所述第n目标数据块的数据。
11.如权利要求10所述的装置,其特征在于,所述第二恢复单元具体用于,在所述判断单元的判断结果为所述第n目标数据块在软件升级时更新成功时,用所述Anew减去所述第n目标数据块的差异数据集Adiff,得到所述Aold,用所述Aold恢复所述第n目标数据块的数据。
12.如权利要求10所述的装置,其特征在于,所述存储单元具体用于压缩所述第n目标数据块的差异数据集,得到所述第n目标数据块的压缩差异数据集,保存所述第n目标数据块的压缩差异数据集;
所述恢复操作单元还包括:
解压单元,用于解压所述第n目标数据块的压缩差异数据集,得到所述第n目标数据块的差异数据集。
13.如权利要求8-11任一所述的装置,其特征在于,
所述存储单元具体用于采用非易失存储介质存储所述恢复数据。
CN2008101612851A 2008-09-24 2008-09-24 一种终端设备软件升级恢复方法及装置 Active CN101377744B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008101612851A CN101377744B (zh) 2008-09-24 2008-09-24 一种终端设备软件升级恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008101612851A CN101377744B (zh) 2008-09-24 2008-09-24 一种终端设备软件升级恢复方法及装置

Publications (2)

Publication Number Publication Date
CN101377744A CN101377744A (zh) 2009-03-04
CN101377744B true CN101377744B (zh) 2012-02-15

Family

ID=40421299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101612851A Active CN101377744B (zh) 2008-09-24 2008-09-24 一种终端设备软件升级恢复方法及装置

Country Status (1)

Country Link
CN (1) CN101377744B (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102169437A (zh) * 2010-02-26 2011-08-31 英业达股份有限公司 以分离的模块提供软件更新的系统及其方法
CN102193805B (zh) * 2010-03-11 2014-05-07 华为技术有限公司 一种软件补丁升级装置及方法
CN102346673A (zh) * 2010-07-27 2012-02-08 比亚迪股份有限公司 一种手机系统升级的方法及装置
CN102117234B (zh) * 2011-03-23 2013-07-03 惠州Tcl移动通信有限公司 移动终端在软件升级失败时恢复原有软件的方法
CN103136010A (zh) * 2011-11-25 2013-06-05 环旭电子股份有限公司 韧体更新方法及可供该方法使用的韧体更新装置
CN104252364B (zh) * 2013-06-25 2017-09-12 腾讯科技(深圳)有限公司 增量更新的方法、设备及系统
CN103544033B (zh) * 2013-09-30 2017-02-08 小米科技有限责任公司 应用程序回退方法、装置及相关设备
CN104866388B (zh) * 2014-02-24 2021-04-09 腾讯科技(北京)有限公司 数据处理方法及装置
CN105094875A (zh) * 2014-05-19 2015-11-25 中兴通讯股份有限公司 一种软件升级方法及装置
CN103995721B (zh) * 2014-05-22 2018-01-23 广州金山网络科技有限公司 一种应用程序的升级方法、装置及系统
US10045427B2 (en) * 2014-09-29 2018-08-07 Philips Lighting Holding B.V. System and method of autonomous restore point creation and restoration for luminaire controllers
CN105550060B (zh) * 2014-10-31 2019-07-19 Tcl集团股份有限公司 一种增量升级的备份方法及装置
CN105677375A (zh) * 2014-11-18 2016-06-15 中兴通讯股份有限公司 升级控制设备、终端、终端升级方法及系统
CN105786549B (zh) * 2014-12-26 2019-09-24 乐融致新电子科技(天津)有限公司 智能设备及其升级方法
CN106933604B (zh) * 2015-12-30 2021-03-05 中移(苏州)软件技术有限公司 一种系统升级方法及装置
CN106126306A (zh) * 2016-07-08 2016-11-16 深圳市中兴物联科技股份有限公司 一种基于fota服务器组的无线升级方法及其系统
CN107766063A (zh) * 2016-08-15 2018-03-06 深圳壹号柜科技股份有限公司 一种批量升级软件的方法及系统
US10409685B2 (en) * 2017-07-24 2019-09-10 Uber Technologies, Inc. Recovery of application functions via analysis of application operational requests
CN107943511A (zh) * 2017-11-08 2018-04-20 上海青橙实业有限公司 升级方法及移动终端
CN108509215B (zh) * 2018-03-22 2022-03-29 广州视源电子科技股份有限公司 一种系统软件的更换方法、装置、终端设备及存储介质
CN108804124B (zh) * 2018-06-15 2020-08-28 歌尔科技有限公司 一种tws耳机、充电盒及其升级方法、存储介质
CN108874421B (zh) * 2018-06-15 2020-08-28 歌尔科技有限公司 一种tws耳机及其升级方法、装置、存储介质
CN108804123B (zh) * 2018-06-15 2020-08-28 歌尔科技有限公司 一种tws耳机及其升级方法、装置、存储介质
CN109614128B (zh) * 2018-11-15 2022-03-15 深圳市广和通无线股份有限公司 程序升级方法、装置、计算机设备和存储介质
CN109960611B (zh) * 2019-03-07 2021-06-29 杭州迪普科技股份有限公司 数据恢复的方法、装置、电子设备及机器可读存储介质
CN111857740A (zh) * 2019-05-19 2020-10-30 北京骑胜科技有限公司 一种软件升级方法及装置
CN112073446B (zh) * 2019-06-10 2022-09-30 海信视像科技股份有限公司 一种双系统ota并行升级方法及系统
CN111831300A (zh) * 2019-08-23 2020-10-27 北京骑胜科技有限公司 App更新方法、装置、电子设备及计算机可读存储介质
CN111124458A (zh) * 2019-12-29 2020-05-08 北京浪潮数据技术有限公司 一种软件更新方法及相关装置
CN111506326A (zh) * 2020-04-07 2020-08-07 Oppo(重庆)智能科技有限公司 终端设备的升级方法、装置、设备及存储介质
CN111651304B (zh) * 2020-07-16 2024-02-27 南方电网数字电网科技(广东)有限公司 基于双芯智能电表的软件恢复方法、装置和计算机设备
CN112346773A (zh) * 2020-11-05 2021-02-09 经纬恒润(天津)研究开发有限公司 Ecu升级方法及装置
CN113595556B (zh) * 2021-07-30 2023-10-17 深圳市华星光电半导体显示技术有限公司 补偿数据的压缩存储方法、装置、电子设备及存储介质
CN116166298B (zh) * 2023-03-16 2024-03-01 北京百度网讯科技有限公司 一种固件升级方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1834909A (zh) * 2005-03-18 2006-09-20 上海华为技术有限公司 用于远程设备系统软件的升级方法
CN1936844A (zh) * 2005-09-23 2007-03-28 三星电子株式会社 用于更新软件的方法和系统
CN1980447A (zh) * 2005-12-06 2007-06-13 中兴通讯股份有限公司 一种通信系统软件版本的平滑升级方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1834909A (zh) * 2005-03-18 2006-09-20 上海华为技术有限公司 用于远程设备系统软件的升级方法
CN1936844A (zh) * 2005-09-23 2007-03-28 三星电子株式会社 用于更新软件的方法和系统
CN1980447A (zh) * 2005-12-06 2007-06-13 中兴通讯股份有限公司 一种通信系统软件版本的平滑升级方法

Also Published As

Publication number Publication date
CN101377744A (zh) 2009-03-04

Similar Documents

Publication Publication Date Title
CN101377744B (zh) 一种终端设备软件升级恢复方法及装置
US20070055969A1 (en) System and method for updating firmware
CN109634645B (zh) 固件升级方法及终端
US8539471B2 (en) Updating firmware of an electronic device
CN108027753B (zh) 车载控制装置、程序更新系统以及保存有程序更新软件的存储介质
US8201054B2 (en) Fault-tolerant method and apparatus for updating compressed read-only file systems
US20110004871A1 (en) Embedded electronic device and firmware updating method thereof
JP5113700B2 (ja) ファームウェア更新装置及び方法
US7512777B2 (en) Method and system for maintaining system management BIOS
CN109086078B (zh) 安卓系统升级方法、装置、服务器及移动终端
WO2007005790A2 (en) Firmware update for consumer electronic device
CN101904105A (zh) 在更新期间使用高效的块备份和块恢复的移动手持送受话器
CN111221682B (zh) 一种存储系统镜像的方法
JP3864337B2 (ja) バージョンアップ方法
WO2015127730A1 (zh) 版本文件的运行方法及装置
CN104572354A (zh) 基于恢复服务的操作系统备份和恢复的方法及其设备
CN112433739B (zh) 一种固件升级方法
CN106775874B (zh) 终端设备的系统升级方法
CN106293621B (zh) 一种固件升级方法及装置
CN109871334B (zh) 电缆调制解调器及操作方法
KR101085681B1 (ko) 이동통신 단말기의 데이터 복구 시스템 및 방법
CN114035818A (zh) 固件升级方法、装置、计算机设备和存储介质
KR100832269B1 (ko) 무선 통신 단말의 프로그램 갱신 방법 및 시스템
CN112099819A (zh) 一种数据处理方法、数据处理装置及车载终端
KR100636518B1 (ko) 이동통신단말기의 펌웨어 업그레이드 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171102

Address after: Metro Songshan Lake high tech Industrial Development Zone, Guangdong Province, Dongguan City Road 523808 No. 2 South Factory (1) project B2 -5 production workshop

Patentee after: HUAWEI terminal (Dongguan) Co., Ltd.

Address before: 518129 Longgang District, Guangdong, Bantian HUAWEI base B District, building 2, building No.

Patentee before: Huawei Device Co., Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 523808 Southern Factory Building (Phase I) Project B2 Production Plant-5, New Town Avenue, Songshan Lake High-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee after: Huawei Device Co., Ltd.

Address before: 523808 Southern Factory Building (Phase I) Project B2 Production Plant-5, New Town Avenue, Songshan Lake High-tech Industrial Development Zone, Dongguan City, Guangdong Province

Patentee before: HUAWEI terminal (Dongguan) Co., Ltd.