一种断电自恢复的空中升级方法及装置与流程

文档序号:12362706阅读:192来源:国知局
一种断电自恢复的空中升级方法及装置与流程

本发明涉及无线通信设备领域,尤其涉及一种断电自恢复的空中升级方法及装置。



背景技术:

在无线通信设备的应用场景中,不时需要对其中的模块固件进行升级,而空中升级以其方便高效的优势,成为越来越多的模块厂家优先考虑的升级方案。

现有的空中升级技术中,一般从空中下载下来就直接写flash的Code区域进行升级,但在升级的过程中有可能出现意外掉电、意外掉线、模块异常死机等情况,出现这些情况时,升级失败,且重新开机后无法恢复到之前的升级进程。



技术实现要素:

本发明的主要目的在于提出一种断电自恢复的空中升级方法及装置,能够保障在空中升级过程中遇到数据业务异常、意外掉电、模块意外死机等情况下的稳定性,且断电后可以自动恢复,继续升级。

为实现上述目的,本发明提供的一种断电自恢复的空中升级方法,包括:

S20、将空中下载的升级数据以预设的存储单位写入备份区;

S30、从所述备份区以所述预设的存储单位读取所述升级数据,并将所述升级数据写入到代码段进行升级;

其中,每个所述预设的存储单位的写入状态采用位掩码的方式进行标识。

可选地,所述步骤S20之前还包括:

S10、在闪存中定义flash标志区域字段,所述flash标志区域字段包括升级阶段标志、备份区写入索引记录和代码段被写入索引记录。

可选地,所述步骤S20包括:

S21、将所述升级阶段标志标识为即将向备份区填充升级数据;

S22、缓存一包数据,并检测缓存的数据的长度是否达到预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

S23、若是,则把所述一包数据以预设的存储单位写入备份区,并将该预设的存储单位的写入状态保存在所述备份区写入索引记录中;

S24、缓存完所有所述升级数据时,将所述升级阶段标志标识为升级数据已成功从空中下载到备份区。

可选地,所述步骤S30包括:

S31、从所述备份区读取一包数据,并检测所述一包数据的长度是否达到所述预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

S32、若是,则把所述一包数据以预设的存储单位写入代码段,并将该预设的存储单位的写入状态保存在所述代码段被写入索引记录中;

S33、读取完所有所述升级数据时,将所述升级阶段标志标识为代码段已更新完毕。

可选地,在升级过程中断电重启后的升级方法为:

S41、读取flash标志区域字段中的升级阶段标志;

S42、根据所述升级阶段标志判断空中升级的进度;

S43、若所述升级阶段标志标识为代码段已更新完毕,则直接启动执行代码;

S44、若所述升级阶段标志标识为升级数据已成功从空中下载到备份区,但代码段还未更新完毕,则根据所述代码段被写入索引记录进入步骤S30;

S45、若所述升级阶段标志标识为即将向备份区填充升级数据,但还未下载完毕,则根据所述备份区写入索引记录进入步骤S20。

根据本发明的另一个方面,提供的一种断电自恢复的空中升级装置,包括:

下载模块,用于将空中下载的升级数据以预设的存储单位写入备份区;

升级模块,用于从所述备份区以所述预设的存储单位读取所述升级数据,并将所述升级数据写入到代码段进行升级;

标识模块,用于将每个所述预设的存储单位的写入状态采用位掩码的方式进行标识。

可选地,还包括:

定义模块,用于在闪存中定义flash标志区域字段,所述flash标志区域字段包括升级阶段标志、备份区写入索引记录和代码段被写入索引记录。

可选地,所述下载模块包括:

第一标识单元,用于将所述升级阶段标志标识为即将向备份区填充升级数据;

缓存单元,用于缓存一包数据,并检测缓存的数据的长度是否达到预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

备份区写入单元,用于把所述一包数据以预设的存储单位写入备份区,并将该预设的存储单位的写入状态保存在所述备份区写入索引记录中;

第二标识单元,用于缓存完所有所述升级数据时,将所述升级阶段标志标识为升级数据已成功从空中下载到备份区。

可选地,所述升级模块包括:

数据读取单元,用于从所述备份区读取一包数据,并检测所述一包数据的长度是否达到所述预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

代码段写入单元,用于把所述一包数据以预设的存储单位写入代码段,并将该预设的存储单位的写入状态保存在所述代码段被写入索引记录中;

第三标识单元,用于读取完所有所述升级数据时,将所述升级阶段标志标识为代码段已更新完毕。

可选地,还包括断电重启模块,所述断电重启模块包括:

标志读取单元,用于读取flash标志区域字段中的升级阶段标志;

升级进度判断单元,用于根据所述升级阶段标志判断空中升级的进度;

直接启动单元,用于若所述升级阶段标志标识为代码段已更新完毕,则直接启动执行代码;

重启升级单元,用于若所述升级阶段标志标识为升级数据已成功从空中下载到备份区,但代码段还未更新完毕,则根据所述代码段被写入索引记录进入升级模块;

重启下载单元,用于若所述升级阶段标志标识为即将向备份区填充升级数据,但还未下载完毕,则根据所述备份区写入索引记录进入下载模块。

本发明提出的一种断电自恢复的空中升级方法及装置,该方法包括:将空中下载的升级数据以预设的存储单位写入备份区;从所述备份区以所述预设的存储单位读取所述升级数据,并将所述升级数据写入到代码段进行升级;其中,每个所述预设的存储单位的写入状态采用位掩码的方式进行标识,能够保障在空中升级过程中遇到数据业务异常、意外掉电、模块意外死机等情况下的稳定性,且断电后可以自动恢复,继续升级。

附图说明

图1为本发明实施例一提供的一种断电自恢复的空中升级方法流程;

图2为本发明实施例一提供的flash标志区域字段的分配示意图;

图3为本发明实施例二提供的一种断电自恢复的空中升级方法流程;

图4为本发明实施例三提供的一种断电自恢复的空中升级方法流程;

图5为本发明实施例四提供的一种断电自恢复的空中升级方法流程;

图6为本发明实施例五提供的一种断电自恢复的空中升级装置示范性结构框图;

图7为本发明实施例六提供的一种断电自恢复的空中升级装置示范性结构框图;

图8为本发明实施例七提供的一种断电自恢复的空中升级装置示范性结构框图;

图9为本发明实施例八提供的一种断电自恢复的空中升级装置示范性结构框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

实施例一

如图1所示,在本实施例中,一种断电自恢复的空中升级方法,包括:

S20、将空中下载的升级数据以预设的存储单位写入备份区;

S30、从所述备份区以所述预设的存储单位读取所述升级数据,并将所述升级数据写入到代码段进行升级;其中,每个所述预设的存储单位的写入状态采用位掩码的方式进行标识。

在本实施例中,主要适用于无线通信设备的空中升级,通过将升级数据暂存在备份区,再以预设的存储单位写入代码段进行升级,能够保障无线通信设备在空中升级过程中遇到数据业务异常、意外掉电、模块意外死机等情况下的稳定性,且断电后可以自动恢复,继续升级。

在本实施例中,所述预设的存储单位以block表示,block是数据库中的最小存储和处理单位,包含块本身的头信息数据或PL/SQL代码。块的大小是可以在安装时选择“自定义安装”来指定,在本实施例中,block的大小为8KB。

在本实施例中,所述步骤S20之前还包括:

S10、在闪存中定义flash标志区域字段,所述flash标志区域字段包括升级阶段标志、备份区写入索引记录和代码段被写入索引记录。

如图2所示为flash标志区域字段的分配示意图,其中,升级阶段标志的长度为4字节,备份区写入索引记录和代码段被写入索引记录的长度皆为256字节,每个字节包括8bit,每个bit位(也即block)代表一个8KB数据已经成功写入到了备份区/代码段,所以这里最多可以记录256*8*8KB=16MB的文件大小,足够我们容纳日常的固件的升级数据了。

在本实施例中,每个所述预设的存储单位block的写入状态采用位掩码(bit mask)的方式进行标识,并存储在所述备份区写入索引记录或代码段被写入索引记录中,使用位掩码的好处很明显,在于每次写这块数据不需要先擦除flash。

实施例二

如图3所示,在本实施例中,所述步骤S20包括:

S21、将所述升级阶段标志标识为即将向备份区填充升级数据;

S22、缓存一包数据,并检测缓存的数据的长度是否达到预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

S23、若是,则把所述一包数据以预设的存储单位写入备份区,并将该预设的存储单位的写入状态保存在所述备份区写入索引记录中;

S24、缓存完所有所述升级数据时,将所述升级阶段标志标识为升级数据已成功从空中下载到备份区。

在本实施例中,所述预设的长度为8KB,本发明以8KB为单位来存储升级数据,使得在断电时字节开销最小,从而使得空中升级在数据备份阶段断电后可以自动恢复到断电前的升级进度,继续升级,该升级进度可以在备份区写入索引记录中查询。

实施例三

如图4所示,在本实施例中,所述步骤S30包括:

S31、从所述备份区读取一包数据,并检测所述一包数据的长度是否达到所述预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

S32、若是,则把所述一包数据以预设的存储单位写入代码段,并将该预设的存储单位的写入状态保存在所述代码段被写入索引记录中;

S33、读取完所有所述升级数据时,将所述升级阶段标志标识为代码段已更新完毕。

与实施例二类似,在刷代码段升级阶段,依然采用8KB为数据包的长度,从而使得空中升级在刷代码段升级阶段断电后可以自动恢复到断电前的升级进度,继续升级,该升级进度可以在代码段被写入索引记录中查询。

实施例四

如图5所示,在本实施例中,在升级过程中断电重启后的升级方法为:

S41、读取flash标志区域字段中的升级阶段标志;

S42、根据所述升级阶段标志判断空中升级的进度;

S43、若所述升级阶段标志标识为代码段已更新完毕,则直接启动执行代码;

S44、若所述升级阶段标志标识为升级数据已成功从空中下载到备份区,但代码段还未更新完毕,则根据所述代码段被写入索引记录进入步骤S30;

S45、若所述升级阶段标志标识为即将向备份区填充升级数据,但还未下载完毕,则根据所述备份区写入索引记录进入步骤S20。

在步骤S41中,所述升级阶段标志,有以下几种状态:

1、0xFFFFFFFF,代表没有执行任何升级下载动作,设备直接启动系统;

2、0xFFFFFF00,代表已经开始进行向备份区保存升级数据了,只是还没有下载完成;此时,则进入步骤S45;

3、0xFFFF0000,代表已向备份区保存空中数据已完成,正在向代码段刷的过程中;此时,则进入步骤S44;

4、0xFF000000,代表向代码段刷新完成,此时,则进入步骤S43。

在本实施例中,通过以上方法,将空中升级分为4个阶段,不管在哪个阶段发生意外断电等情况,都可以自动恢复到断电前的升级进度,继续升级。

实施例五

如图6所示,在本实施例中,一种断电自恢复的空中升级装置,包括:

下载模块20,用于将空中下载的升级数据以预设的存储单位写入备份区;

升级模块30,用于从所述备份区以所述预设的存储单位读取所述升级数据,并将所述升级数据写入到代码段进行升级;

标识模块40,用于将每个所述预设的存储单位的写入状态采用位掩码的方式进行标识。

在本实施例中,还包括:

定义模块10,用于在闪存中定义flash标志区域字段,所述flash标志区域字段包括升级阶段标志、备份区写入索引记录和代码段被写入索引记录。

在本实施例中,主要适用于无线通信设备的空中升级,通过将升级数据暂存在备份区,再以预设的存储单位写入代码段进行升级,能够保障无线通信设备在空中升级过程中遇到数据业务异常、意外掉电、模块意外死机等情况下的稳定性,且断电后可以自动恢复,继续升级。

实施例六

如图7所示,在本实施例中,所述下载模块20包括:

第一标识单元21,用于将所述升级阶段标志标识为即将向备份区填充升级数据;

缓存单元22,用于缓存一包数据,并检测缓存的数据的长度是否达到预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

备份区写入单元23,用于把所述一包数据以预设的存储单位写入备份区,并将该预设的存储单位的写入状态保存在所述备份区写入索引记录中;

第二标识单元24,用于缓存完所有所述升级数据时,将所述升级阶段标志标识为升级数据已成功从空中下载到备份区。

在本实施例中,所述预设的长度为8KB,本发明以8KB为单位来存储升级数据,使得在断电时字节开销最小,从而使得空中升级在数据备份阶段断电后可以自动恢复到断电前的升级进度,继续升级,该升级进度可以在备份区写入索引记录中查询。

实施例七

如图8所示,在本实施例中,所述升级模块30包括:

数据读取单元31,用于从所述备份区读取一包数据,并检测所述一包数据的长度是否达到所述预设的长度,或者检测所述一包数据是否为升级数据的最后一包数据;

代码段写入单元32,用于把所述一包数据以预设的存储单位写入代码段,并将该预设的存储单位的写入状态保存在所述代码段被写入索引记录中;

第三标识单元33,用于读取完所有所述升级数据时,将所述升级阶段标志标识为代码段已更新完毕。

与实施例六类似,在刷代码段升级阶段,依然采用8KB为数据包的长度,从而使得空中升级在刷代码段升级阶段断电后可以自动恢复到断电前的升级进度,继续升级,该升级进度可以在代码段被写入索引记录中查询。

实施例八

如图9所示,在本实施例中,一种断电自恢复的空中升级装置,还包括断电重启模块50,所述断电重启模块50包括:

标志读取单元51,用于读取flash标志区域字段中的升级阶段标志;

升级进度判断单元52,用于根据所述升级阶段标志判断空中升级的进度;

直接启动单元53,用于若所述升级阶段标志标识为代码段已更新完毕,则直接启动执行代码;

重启升级单元54,用于若所述升级阶段标志标识为升级数据已成功从空中下载到备份区,但代码段还未更新完毕,则根据所述代码段被写入索引记录进入升级模块;

重启下载单元55,用于若所述升级阶段标志标识为即将向备份区填充升级数据,但还未下载完毕,则根据所述备份区写入索引记录进入下载模块。

在本实施例中,所述升级阶段标志,有以下几种状态:

1、0xFFFFFFFF,代表没有执行任何升级下载动作,设备直接启动系统;

2、0xFFFFFF00,代表已经开始进行向备份区保存升级数据了,只是还没有下载完成;此时,则进入重启下载单元55;

3、0xFFFF0000,代表已向备份区保存空中数据已完成,正在向代码段刷的过程中;此时,则进入重启升级单元54;

4、0xFF000000,代表向代码段刷新完成,此时,则进入直接启动单元53。

在本实施例中,通过以上方式,将空中升级分为4个阶段,不管在哪个阶段发生意外断电等情况,都可以自动恢复到断电前的升级进度,继续升级。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

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

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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