对固件进行升级的方法及装置的制造方法

文档序号:9375294阅读:434来源:国知局
对固件进行升级的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种对固件进行升级的方法及装置。
【背景技术】
[0002]固件为写入EROM(Eraseable Read Only Memory,可擦写只读存储器)或EEPROM(Ele4tri4alIy Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)中的程序,通俗来讲,固件也就是具有软件功能的硬件。固件在电子设备的嵌入式分布系统中承担着最基础、最底层的工作,通过对电子设备中的固件进行升级,可完善电子设备的功能、增强电子设备的稳定性、修补电子设备的漏洞。
[0003]目前,为了实现对固件的升级,常将电子设备的闪存(Flash)分为两个分区。其中一个分区用于写入Bootloader程序(Bootloader程序为一种引导启动程序,在系统内核运行前运行),另一个分区用于写入固件。电子设备启动后,先运行一个分区中的Bootloader程序,如果Bootloader程序中的升级标识位上的标识为非升级标识,则跳转到另一分区并运行另一分区中的固件;如果Bootloader程序中的升级标识位上的标识为升级标识,则删除另一分区中的固件,并将升级后的固件写入到另一分区,进而将Bootloader程序中的升级标识位上的标识重置为非升级标识,之后,重新启动电子设备,运行升级后的固件以完成对固件的升级。

【发明内容】

[0004]为克服相关技术中存在的问题,本发明提供一种对固件进行升级的方法及装置。
[0005]根据本发明实施例的第一方面,提供一种对固件进行升级的方法,所述方法包括:
[0006]在运行闪存的第二分区中固件的当前版本过程中,当检测到内存中存储有当前版本的升级版本时,将所述升级版本备份到所述闪存的第三分区,所述第三分区中存储有所述固件的不同版本;
[0007]将所述闪存的第四分区中指定标识位设置为升级状态;
[0008]重新启动电子设备,运行所述闪存的第一分区;
[0009]当检测到所述第四分区中所述指定标识位为升级状态时,将所述升级版本写入所述第二分区;
[0010]运行所述第二分区中的所述升级版本。
[0011]可选地,所述将所述升级版本备份到所述闪存的第三分区之前,还包括:
[0012]启动所述电子设备;
[0013]检测所述第四分区中所述指定标识位是否为升级状态;
[0014]当检测到所述第四分区中所述指定标识为非升级状态时,进行开机自检。
[0015]可选地,所述进行开机自检,包括:
[0016]对所述第二分区中的所述当前版本进行校验;
[0017]如果对所述第二分区中的所述当前版本校验成功,则运行所述第二分区中的所述当前版本;
[0018]如果对所述第二分区中的所述当前版本校验失败,则对所述第二分区中的所述当前版本进行修复。
[0019]可选地,所述对所述第二分区中的所述当前版本进行修复之前,还包括:
[0020]将所述当前版本从所述第二分区中删除;
[0021]所述对所述第二分区中的所述当前版本进行修复,包括:
[0022]从所述第三区中获取所述固件上一次升级时的升级版本;
[0023]将所述固件上一次升级时的升级版本解压缩到所述第二分区,得到解压缩数据;
[0024]对所述解压缩数据进行校验;
[0025]当对所述解压缩数据校验成功时,运行所述解压缩数据。
[0026]可选地,所述将所述升级版本备份到所述闪存的第三分区,包括:
[0027]从所述内存中获取所述升级版本;
[0028]将所述升级版本写入RAM(Random-Access Memory,随机存取存储器);
[0029]对所述RAM中的所述升级版本进行校验;
[0030]当对所述RAM中的所述升级版本校验成功时,将所述RAM中的所述升级版本写入到所述闪存的第三分区。
[0031]可选地,所述将所述升级版本写入所述第二分区之前,还包括:
[0032]将所述当前版本从所述第二分区中删除;
[0033]所述将所述升级版本写入所述第二分区,包括:
[0034]将所述RAM中的升级版本解压缩到所述第二分区。
[0035]可选地,所述运行所述第二分区中的所述升级版本之前,还包括:
[0036]对所述第二分区中的所述升级版本进行校验;
[0037]当对所述第二分区中的所述升级版本校验成功后,执行运行所述第二分区中的所述升级版本的步骤。
[0038]根据本发明实施例的第二方面,提供一种对固件进行升级的装置,所述装置包括:
[0039]备份模块,用于在运行闪存的第二分区中固件的当前版本过程中,当检测到内存中存储有当前版本的升级版本时,将所述升级版本备份到所述闪存的第三分区,所述第三分区中存储有所述固件的不同版本;
[0040]设置模块,用于将所述闪存的第四分区中指定标识位设置为升级状态;
[0041]第一启动模块,用于重新启动电子设备,运行所述闪存的第一分区;
[0042]写入模块,用于当检测到所述第四分区中所述指定标识位为升级状态时,将所述升级版本写入所述第二分区;
[0043]运行模块,用于运行所述第二分区中的所述升级版本。
[0044]可选地,所述装置还包括:
[0045]第二启动模块,用于启动所述电子设备;
[0046]检测模块,用于检测所述第四分区中所述指定标识位是否为升级状态;
[0047]自检模块,用于当检测到所述第四分区中所述指定标识为非升级状态时,进行开机自检。
[0048]可选地,所述自检模块,用于对所述第二分区中的所述当前版本进行校验;当对所述第二分区中的所述当前版本校验成功时,运行所述第二分区中的所述当前版本;当对所述第二分区中的所述当前版本校验失败时,对所述第二分区中的所述当前版本进行修复。
[0049]可选地,所述装置还包括:
[0050]删除模块,用于将所述当前版本从所述第二分区中删除;
[0051]所述自检模块,具体用于从所述第三区中获取所述固件上一次升级时的升级版本;将所述固件上一次升级时的升级版本解压缩到所述第二分区,得到解压缩数据;对所述解压缩数据进行校验;当对所述解压缩数据校验成功时,运行所述解压缩数据。
[0052]可选地,所述备份模块,用于从所述内存中获取所述升级版本;将所述升级版本写入RAM中;对所述RAM中的所述升级版本进行校验;当对所述RAM中的所述升级版本校验成功时,将所述RAM中的所述升级版本写入到所述第三分区。
[0053]可选地,所述装置还包括:
[0054]所述删除模块,用于将所述当前版本从所述第二分区中删除;
[0055]所述写入模块,用于将所述RAM中的升级版本解压缩到所述第二分区。
[0056]可选地,所述装置还包括:
[0057]校验模块,用于对所述第一分区中的所述升级版本进行校验;
[0058]所述运行模块,用于当所述校验模块对所述第二分区中的所述升级版本校验成功后,执行运行所述第二分区中的所述升级版本的步骤。
[0059]根据本发明实施例的第三方面,提供一种对固件进行升级的装置,所述装置包括:
[0060]处理器;
[0061]用于存储处理器可执行的指令的存储器;
[0062]其中,所述处理器被配置为:
[0063]在运行闪存的第二分区中固件的当前版本过程中,当检测到内存中存储有当前版本的升级版本时,将所述升级版本备份到所述闪存的第三分区,所述第三分区中存储有所述固件的不同版本;
[0064]将所述闪存的第四分区中指定标识位设置为升级状态;
[0065]重新启动电子设备,运行所述闪存的第一分区;
[0066]当检测到所述第四分区中所述指定标识位为升级状态时,将所述升级版本写入所述第二分区;
[0067]运行所述第二分区中的所述升级版本。
[0068]本发明的实施例提供的技术方案可以包括以下有益效果:
[0069]将固件的升级版本在闪存的第三分区进行备份,使得升级版本运行失败后,能够从第三分区中获取到备份的固件,从而避免了电子设备因固件升级失败不能正常运行,提高了升级的可靠性。
[0070]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1