一种引导程序的存储方法、故障恢复方法及设备的制造方法

文档序号:9432402阅读:271来源:国知局
一种引导程序的存储方法、故障恢复方法及设备的制造方法
【技术领域】
[0001]本发明涉及嵌入式领域的引导程序管理技术,尤其涉及一种引导程序的存储方法、故障恢复方法及设备。
【背景技术】
[0002]UBoot及BootLoader是用于多种嵌入式设备的中央处理器(Central ProcessingUnit, CPU)的引导程序,UBoot是BootLoader升级后的版本;UBoot不仅支持Linux系统,而且支持VxWorks、NetBSD、LyxOS等嵌入式操作系统。UBoot可以支持的处理器包括:80X86、ARM、MIPS、XScale、PowerPC, UBoot的主要功能是初始化硬件设备,待将软硬件运行环境设置好后,将操作系统内核从存储介质中载入内存,最终跳转到操作系统入口,将控制权移交给操作系统。
[0003]空中接口固件更新(Firmware Over The Air,F0TA)是终端设备的固件升级空中下载技术,指终端设备通过云端设备管理(Device Management, DM)及下载协议,将固件升级包通过互联网下载到终端设备内部;然后,由终端设备内部的安装程序进行自升级,从而实现软件Bug的修复、新功能的扩展。
[0004]FOTA技术升级通常采用差分升级的方式,差分升级的思想是对比两个软件版本,根据差分算法计算出两个软件版本的差异部分,通过对存储介质Flash块中差异页进行搬运、修改、擦除来完成固件升级,通过对文件进行随机读写完成文件系统的升级。
[0005]发明人在实现本发明的过程中,发现现有引导程序升级的技术方案至少存在以下缺陷:
[0006]I)现有技术中,若升级引导程序时出现掉电,下次启动系统时会出现系统自举问题。
[0007]2)现有技术中,引导程序中的第一阶段代码和第二阶段代码是合并在一起存储于存储介质中的,这里,通常将用于完成基本参数设置和加载第二阶段代码到内存的代码称为第一阶段代码,将用于加载内核到内存并运行的代码称为第二阶段代码;若引导程序在运行或升级过程中出现了故障,系统将难以恢复,这种情况下,就需要进行存储介质拆卸,用烧片器进行软件重写或者用联合测试工作组(Joint Test Act1n Group, JTAG)接口进行写入,这样不但不安全,而且破坏了问题现场,为软件研发过程带来了许多不便。

【发明内容】

[0008]有鉴于此,本发明实施例期望提供一种引导程序的存储方法、故障恢复方法及设备,能够使嵌入式系统的引导程序保持稳定运行,从而提高嵌入式系统的安全性。
[0009]为达到上述目的,本发明的技术方案是这样实现的:
[0010]本发明实施例提供了一种引导程序的存储方法,该方法包括:
[0011]配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
[0012]将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
[0013]上述方案中,所述方法还包括:
[0014]配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
[0015]将所述第二阶段备份代码存储于存储介质中预设的第三分区。
[0016]上述方案中,所述方法还包括:
[0017]在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
[0018]本发明实施例提供了一种引导程序的故障恢复方法,将第一阶段代码和第二阶段代码分别存储于存储介质的第一分区和第二分区中;该方法还包括:
[0019]所述第一阶段代码在完成基本参数设置后,检测所述第二阶段代码是否故障;
[0020]检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
[0021]确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
[0022]上述方案中,所述方法还包括:
[0023]确定存在所述第二阶段备份代码时,检测所述第二阶段备份代码是否故障;
[0024]检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;
[0025]检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
[0026]上述方案中,所述方法还包括:
[0027]检测到所述第二阶段代码无故障时,确定是否存在所述第二阶段备份代码;
[0028]确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
[0029]确定存在所述第二阶段备份代码时,检测所述第二阶段代码与所述第二阶段备份代码是否一致;
[0030]若检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
[0031]若检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定存储于第二分区中的第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
[0032]基于上述方法,本发明实施例提供了一种存储设备,该存储设备包括:配置单元、存储单元;其中,
[0033]所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
[0034]所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
[0035]上述方案中,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
[0036]所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区。
[0037]上述方案中,所述存储设备还包括:
[0038]更新单元,用于在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
[0039]基于上述方法,本发明实施例还提供了一种嵌入式设备,该嵌入式设备包括:配置单元、存储单元、检测单元、确定单元、故障恢复单元;其中,
[0040]所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
[0041]所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;
[0042]所述检测单元,用于所述第一阶段代码在完成基本参数设置后,检测第二阶段代码是否故障;
[0043]所述确定单元,用于在检测单元检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
[0044]所述故障恢复单元,用于在确定单元确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
[0045]上述方案中,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;相应的,所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区;
[0046]所述检测单元,还用于检测所述第二阶段备份代码是否故障;
[0047]所述故障恢复单元,还用于在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
[0048]上述方案中,所述检测单元,还用于检测所述第二阶段代码与所述第二阶段备份代码是否一致;
[0049]所述嵌入式设备还包括:
[0050]执行单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
[0051]更新单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码不一致,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1