发明内容
有鉴如此,本发明实施例提供一种FOTA升级方法、无线通信终端及存储介质,旨在解决无线通信终端在云端更新过程中出现掉电情形下造成的升级失败问题。
为实现上述目的,本发明提供一种FOTA升级方法,存储芯片内包含一恢复分区与若干正常分区,并预留有备份分区,所述方法包括:
进入标准模式,此时所述恢复分区为待升级分区,对所述恢复分区执行备份流程;
对恢复分区进行升级;
进入恢复模式,依次判断每个所述正常分区是否为待升级分区,若是则对该正常分区执行备份流程;
对所有待升级的正常分区进行升级;
所述备份流程包括:
在所述备份分区内写入所述待升级分区的分区索引信息;
将所述待升级分区的数据备份至所述备份分区。
优选的,所述方法还包括:
若任一升级过程因掉电中断,则在下次上电后执行恢复流程;所述恢复流程包括:
根据分区索引信息找出相应的备份数据;
将备份数据恢复至对应的待升级分区。
优选的,所述方法还包括:
对待升级分区的数据恢复完成后,清除备份分区中对应于该待升级分区的数据。
优选的,所述恢复流程具体包括:
若所述将备份分区内的备份数据恢复至对应的待升级分区的复原过程顺利完成,直接执行下一步程序;
若复原过程因掉电发生中断,则在下次上电后,判断所述备份分区内的数据是否为空,是则恢复流程执行完成;
否则继续执行恢复流程。
优选的,所述在所述备份分区内写入待升级分区的分区索引信息之前还包括:
在所述备份分区内写入待升级分区的备份标记;
所述将待升级分区的数据备份至所述备份分区包括:
若将待升级分区的数据备份至所述备份分区的过程中顺利完成,直接执行下一步程序;
若将待升级分区的数据备份至所述备份分区的过程因失电中断,则在下次上电后,根据所述备份标记继续对待升级分区继续进行数据备份,直至备份完成。
优选的,所述将待升级分区的数据备份至所述备份分区之后还包括:
清除备份分区内对应于该待升级分区的备份标记。
优选的,所述在所述备份分区内写入待升级分区的分区索引信息具体包括:
在所述备份分区内写入待升级分区的大小以及开始在备份分区备份数据的起始页信息。
优选的,所述方法还包括:对所有待升级分区升级完成后,清除备份分区内的所有数据。
根据本发明的另一个方面,提供一种无线通信终端,所述无线通信终端包括处理器以及存储器;
所述存储器用于存储可执行程序;
所述处理器用于执行所述可执行程序以实现上述的FOTA升级方法。
根据本发明的再一个方面,一种存储介质,所述存储介质上存储有可执行程序,所述可执行程序被执行时以实现上述的FOTA升级方法。
本发明实施例所提供的FOTA升级方法、无线通信终端及存储介质,通过升级前备份分区数据以及升级中断的下次上电后将数据恢复至对应分区的方式,保证了存储芯片在升级失败后再次进行升级时可以校验正常,有效解决了升级失败造成的无线通信终端恢复困难的问题,可极大减少工作量与数据丢失风险。
具体实施方式
下面结合附图对本发明作更进一步的说明。
常见的无线通信终端100包含手机以及各类用于工业控制、安防、无线通信、监控、汽车电子的无线通信模块,对无线通信终端100的软件升级主要是通过FOTA升级的方式进行,FOTA(Firmware Over-The-Air)指通过云端升级技术,为具有联网功能的设备提供固件升级服务,用户使用网络以按需、易扩展的方式获取无线通信终端100的系统升级包,并通过FOTA进行云端升级,完成系统修复和优化。
如附图1所示,本发明中无线通信终端100可以包括:处理器110、存储芯片120、通讯单元230等部件,本领域技术人员可以理解,图1中示出的无线通信终端100的结构并不构成对无线通信终端的限定,无线通信终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图1对无线通信终端100的各个部件进行具体的介绍:
处理器110,无线通信终端的控制中心,利用各种接口和线路连接整个无线通信终端100设备的各个部分,通过运行或执行存储芯片120内的软件程序和/或模块,以及调用存储芯片120内的数据,执行无线通信终端100的各种功能,并可对无线通信终端100进行软件升级。
存储芯片120,即平时所说的“闪存”,常用的英文简称为Flash,用于存储软件程序以及各种数据,通过特定的程序可以修改其内的数据。它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),使数据不会因为断电而丢失。存储芯片120内部包含若干块(block),每个块包含若干页(page),其结构如附图2所示。
通讯单元230,用于连接云端,接收云端的FOTA升级包,当然也承担信号传输等常用功能。
对无线通信终端100的FOTA升级主要分为两步:差分包的校验和升级,差分包的校验工作主要是用于确认当前软件的版本和差分包是否匹配,若不匹配则无法升级,在完成差分包的校验通过的情况下,则可以对存储芯片120内存储的程序进行升级。升级过程中,若发生掉电情况,对无线通信终端100的升级过程会发生中断,导致无线通信终端100内的程序不完整,无线通信终端100无法稳定运行,且影响下一次对无线通信终端100升级时的差分包校验工作,无线通信终端100内的程序无法再次升级,只能通过恢复出厂设置来恢复无线通信终端100的功能。
为了避免这种状况的发生,本发明的解决方案是,在对存储芯片120内的待升级分区进行升级之前,先将待升级分区内的数据进行备份,因此存储芯片120内除了若干正常的数据分区外还需预留出一个备份分区专门用于存储待升级分区内的数据,其分区示意图如附图3所示。
本实施例中,无线通信终端100的存储芯片120内包含有三种分区:正常分区、恢复分区以及备份分区,正常分区为存储芯片120内的主要功能分区,无线通信终端100工作时的所有数据读写工作均由正常分区来完成,正常分区可以有多个,包含系统分区、数据分区等;恢复分区是专门为了FOTA升级而设置的,其只在对无线通信终端100进行FOTA升级时会启动,其目的是在需要对正常分区进行升级时,启用恢复分区内的程序使系统进入恢复模式,此时正常分区处于非工作模式,可对其内的程序数据进行更改升级。升级程序对存储芯片120内除备份分区外的其他分区进行依次备份与升级,具体到本实施例中,优选的升级顺序是,升级程序首先在标准模式(正常分区启动的状态)下对恢复分区进行升级,然后在系统重启进入恢复模式(恢复分区启动的状态),再对正常分区进行升级,如升级正常分区内的kernel、system、modem等模块。
请参考附图4,本实施例中,升级时保护存储芯片120内分区的方法包括下列步骤S201-S204:
在步骤S201中,进入标准模式,此时恢复分区为待升级分区,对恢复分区执行备份流程;
在步骤S202中,对恢复分区进行升级;
在步骤S203中,进入恢复模式,依次判断每个正常分区是否为待升级分区,若是则对该正常分区执行备份流程;
在步骤S204中,对所有待升级的正常分区进行升级。
可选地,在步骤S204之后还包括如下步骤:对所有待升级分区升级完成后,清除备份分区内的所有数据。这样可释放备份分区的数据空间。
由于存在多个待升级分区,因此需要对多个待升级分区依次进行备份,且在升级过程因掉电中断后对所有待升级分区的数据恢复工作也需要依次进行,因此,需要对备份分区内的备份数据的保存进行规划,本实施例中,所述备份流程包括下列步骤A1-A2:
在步骤A1中,在备份分区内写入待升级分区的分区索引信息;
在步骤A2中,将待升级分区的数据备份至备份分区:
分区索引信息包含待升级分区的大小以及开始在备份分区内备份数据的起始页信息,该分区索引信息相当于字典的索引,升级程序在恢复数据时,可根据分区索引信息快速判断存储芯片120内每个块的每一页的数据对应于哪个待升级分区,从而可以相应恢复。
备份分区的大小应当不小于所有待升级分区的总大小,各待升级分区的数据在备份分区内依次排列,彼此使用的存储空间不相互重叠,例如:A分区的数据大小包含m页,A分区的数据在备份分区内从第k页开始备份,则第k页为A分区在备份分区内开始备份数据的起始页,A分区的数据从第k页一直备份至k+m-1页;若下一个需要备份的分区为B分区,其数据大小包含n页,则其数据从备份分区的第k+m页开始备份,第k+m页为B分区在备份分区内开始备份数据的起始页,也就是说:对于相邻的两次分区备份,后一次分区备份前写入预留块中的起始页信息为前一次分区备份的起始页信息加上前一次备份的分区的大小。
上述对待升级分区依次进行备份的过程中,不同待升级分区的分区索引信息写入到不同的预留块中,由于考虑到存储芯片120中可能存在坏块,因此针对每一项分区索引信息在备份分区内均预留有多个块。
为了使升级程序可以方便读取到分区信息,备份分区内预留有若干个块专门用于存储分区信息,一般来说,预留出备份分区的前若干个块存储分区信息,如附图2所示,其余的块用于存储备份数据,分区信息在对待升级分区备份之前写入到预留的块中。
若上述任一升级过程(包括在标准模式下对恢复分区的升级过程,以及在恢复模式下对需要升级的正常分区的升级过程)因掉电中断,则在下次上电后执行恢复流程;所述恢复流程包括下列步骤B1-B2:
在步骤B1中,根据分区索引信息找出相应的备份数据;
在步骤B2中,将备份数据恢复至对应的待升级分区。
由于存储在备份分区的数据较多,若在恢复数据的时候发生掉电导致恢复数据的工作中断,下次上电后,程序将难以判断哪些分区的数据已经恢复,而哪些分区的数据仍未恢复,因此在本实施例中,可选地还包括下列步骤:对某个待升级分区的数据恢复完成后,清除备份分区中对应于该待升级分区的数据。基于该步骤,步骤S202中的恢复流程具体包含下列流程:
若将备份分区内的备份数据恢复至对应的待升级分区的复原过程顺利完成,直接执行下一步程序;
若复原过程因掉电发生中断,则在下次上电后,判断备份分区内的数据是否为空,是则恢复流程执行完成;否则继续执行恢复流程。
通过这种边恢复、边清除的方式,可以有效地防止在恢复数据的过程中断电,提高上电恢复后数据的恢复效率。
可选地,在备份分区内写入待升级分区的分区索引信息之前还包括:在备份分区内写入待升级分区的备份标记;对应地,将待升级分区的数据备份至备份分区包括:若将待升级分区的数据备份至备份分区的过程中顺利完成,直接执行下一步程序;若将待升级分区的数据备份至备份分区的过程因掉电中断,则在下次上电后,根据备份标记继续对待升级分区继续进行数据备份,直至备份完成。
可选地,在完成每一个待升级分区的数据备份后,清除备份分区内对应于该待升级分区的备份标记。
此过程与上述恢复一个分区数据则清空备份分区内对应于该分区的数据的过程目的类似,由于在备份某分区数据时,无线通信终端100也可能出现掉电导致备份数据的过程产生中断,待下次上电后,程序恢复运行时,程序将难以判断数据备份过程进行到了什么程度,因此引入了备份标记供程序参照,已完成备份的待升级分区的备份标记已经擦除,而未擦除的备份标记对应的待升级分区的数据为未完成备份的分区,程序可据此对未完成备份的分区继续进行数据备份。
至此,已经充分考虑到了在对无线通信终端100进行FOTA升级过程中可能出现的备份过程掉电、升级过程掉电以及恢复数据过程掉电这三种情况下的处理方式,可有效保护存储芯片120中的分区。
下面将对无线通信终端100的升级过程作详细说明。在本例中,且为了叙述方便,拟定存储芯片内只存在一个需要升级的正常分区,备份分区的地址分配示意图如附图5所示。
下面将对正常分区、恢复分区的数据备份过程进行详细叙述。
(1)在标准模式下升级恢复分区时
如附图6所示,在标准模式下升级恢复分区时其备份过程如步骤S301-S303:
步骤S301,在备份分区的第0个块的起始页写入恢复分区的备份标记(如0x12345678),考虑到存储芯片120中存在坏块,因此预留3个块(即第0、1、2个块)用于写入备份标记。
步骤S302,将恢复分区的大小(多少页)和开始在备份分区备份数据的起始页的信息记录在备份分区第3个块的起始页(同理增加冗余,预留3个块,即预留第3、4、5个块)。
步骤S303,将恢复分区的数据备份至备份分区,当备份完成后会将恢复分区的备份标记(即第0个块起始页的内容)清除。
如果针对恢复分区的升级过程因掉电中断,则在下次上电后,程序会首先去读取第3个块的分区索引信息,然后将数据从备份分区恢复到恢复分区,恢复完成之后,将备份的数据和该分区对应的分区索引信息全部清除。
如果恢复过程因掉电中断,下次上电后程序通过判断备份分区的信息是否为空来判断掉电中断之前恢复工作是否完成,若备份分区的信息不为空,说明上次的恢复工作未完成,则继续恢复数据,直到恢复完成之后,将备份的数据和备份分区索引信息全部清除。
(2)在恢复模式下升级正常分区时的备份与恢复过程
如附图6所示,在恢复模式下升级正常分区时其备份过程如步骤S401-S403:
步骤S401,在备份分区的第6个块起始页写入正常分区的备份标记(如0x56781234),同样考虑到存储芯片120中存在坏块,预留3个块(即第6、7、8个块)用于写入备份标记。
步骤S402,将正常分区的大小(多少页)和开始在备份分区备份数据的起始页的信息记录在备份分区第9个块的起始页(同理预留3个块,即预留第9、10、11个块),唯一不同之处在于本次备份数据的起始页是上次备份的起始页加上上次备份分区的大小。
步骤S403,将正常分区的数据备份至备份分区,当备份完成后会将正常分区的备份标记(即第6个块起始页的内容)清除。
如果针对正常分区的升级过程因掉电中断,则在下次上电后,程序会首先去读取第9个块的分区索引信息,然后将数据从备份分区恢复到正常分区,恢复完成之后,将备份的数据和备份分区索引信息全部清除。
如果恢复过程因掉电中断,下次上电后程序通过判断备份分区的信息是否为0来判断掉电中断之前恢复工作是否完成,若备份分区的信息不为0,说明上次的恢复工作未完成,则继续恢复数据,直到恢复完成之后,将备份的数据和备份分区索引信息全部清除。
图8所示为本发明实施例提供的一种无线通信终端100的结构示意图。如图8所示,无线通信终端100包括处理器110(无线通信终端100中的处理器110的数量可以一个或多个,图8以一个处理器110为例)以及存储芯片120。在本发明的实施例中,处理器110、存储芯片120可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
其中,存储芯片120中存储有可执行程序,处理器110执行可执行程序以实现如下步骤:
升级程序依次判断除备份分区外的每个分区是否为待升级分区,否则跳过该分区继续判断下一个分区,是则将该待升级分区的数据备份至备份分区;
升级程序对待升级分区进行升级,若升级过程因掉电中断,则在下次上电后执行恢复流程;恢复流程包括将备份分区内的备份数据恢复至对应的待升级分区。
可选的,可执行程序还可用于执行以实现上文中备份过程掉电与恢复数据过程掉电的处理方法,在此不赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台无线通信终端100(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
以上仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。