CN105183580A - 一种引导程序的存储方法、故障恢复方法及设备 - Google Patents
一种引导程序的存储方法、故障恢复方法及设备 Download PDFInfo
- Publication number
- CN105183580A CN105183580A CN201410250492.XA CN201410250492A CN105183580A CN 105183580 A CN105183580 A CN 105183580A CN 201410250492 A CN201410250492 A CN 201410250492A CN 105183580 A CN105183580 A CN 105183580A
- Authority
- CN
- China
- Prior art keywords
- code
- subordinate phase
- fault
- backup
- subregion
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Abstract
本发明公开了一种引导程序的存储方法,该方法包括:配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。本发明还同时公开了一种引导程序的故障恢复方法、存储设备及嵌入式设备。
Description
技术领域
本发明涉及嵌入式领域的引导程序管理技术,尤其涉及一种引导程序的存储方法、故障恢复方法及设备。
背景技术
UBoot及BootLoader是用于多种嵌入式设备的中央处理器(CentralProcessingUnit,CPU)的引导程序,UBoot是BootLoader升级后的版本;UBoot不仅支持Linux系统,而且支持VxWorks、NetBSD、LyxOS等嵌入式操作系统。UBoot可以支持的处理器包括:80×86、ARM、MIPS、XScale、PowerPC,UBoot的主要功能是初始化硬件设备,待将软硬件运行环境设置好后,将操作系统内核从存储介质中载入内存,最终跳转到操作系统入口,将控制权移交给操作系统。
空中接口固件更新(FirmwareOverTheAir,FOTA)是终端设备的固件升级空中下载技术,指终端设备通过云端设备管理(DeviceManagement,DM)及下载协议,将固件升级包通过互联网下载到终端设备内部;然后,由终端设备内部的安装程序进行自升级,从而实现软件Bug的修复、新功能的扩展。
FOTA技术升级通常采用差分升级的方式,差分升级的思想是对比两个软件版本,根据差分算法计算出两个软件版本的差异部分,通过对存储介质Flash块中差异页进行搬运、修改、擦除来完成固件升级,通过对文件进行随机读写完成文件系统的升级。
发明人在实现本发明的过程中,发现现有引导程序升级的技术方案至少存在以下缺陷:
1)现有技术中,若升级引导程序时出现掉电,下次启动系统时会出现系统自举问题。
2)现有技术中,引导程序中的第一阶段代码和第二阶段代码是合并在一起存储于存储介质中的,这里,通常将用于完成基本参数设置和加载第二阶段代码到内存的代码称为第一阶段代码,将用于加载内核到内存并运行的代码称为第二阶段代码;若引导程序在运行或升级过程中出现了故障,系统将难以恢复,这种情况下,就需要进行存储介质拆卸,用烧片器进行软件重写或者用联合测试工作组(JointTestActionGroup,JTAG)接口进行写入,这样不但不安全,而且破坏了问题现场,为软件研发过程带来了许多不便。
发明内容
有鉴于此,本发明实施例期望提供一种引导程序的存储方法、故障恢复方法及设备,能够使嵌入式系统的引导程序保持稳定运行,从而提高嵌入式系统的安全性。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种引导程序的存储方法,该方法包括:
配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
上述方案中,所述方法还包括:
配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
将所述第二阶段备份代码存储于存储介质中预设的第三分区。
上述方案中,所述方法还包括:
在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
本发明实施例提供了一种引导程序的故障恢复方法,将第一阶段代码和第二阶段代码分别存储于存储介质的第一分区和第二分区中;该方法还包括:
所述第一阶段代码在完成基本参数设置后,检测所述第二阶段代码是否故障;
检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
上述方案中,所述方法还包括:
确定存在所述第二阶段备份代码时,检测所述第二阶段备份代码是否故障;
检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;
检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
上述方案中,所述方法还包括:
检测到所述第二阶段代码无故障时,确定是否存在所述第二阶段备份代码;
确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
确定存在所述第二阶段备份代码时,检测所述第二阶段代码与所述第二阶段备份代码是否一致;
若检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
若检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定存储于第二分区中的第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
基于上述方法,本发明实施例提供了一种存储设备,该存储设备包括:配置单元、存储单元;其中,
所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
上述方案中,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区。
上述方案中,所述存储设备还包括:
更新单元,用于在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
基于上述方法,本发明实施例还提供了一种嵌入式设备,该嵌入式设备包括:配置单元、存储单元、检测单元、确定单元、故障恢复单元;其中,
所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;
所述检测单元,用于所述第一阶段代码在完成基本参数设置后,检测第二阶段代码是否故障;
所述确定单元,用于在检测单元检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
所述故障恢复单元,用于在确定单元确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
上述方案中,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;相应的,所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区;
所述检测单元,还用于检测所述第二阶段备份代码是否故障;
所述故障恢复单元,还用于在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
上述方案中,所述检测单元,还用于检测所述第二阶段代码与所述第二阶段备份代码是否一致;
所述嵌入式设备还包括:
执行单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
更新单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定所述第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
本发明实施例所提供的引导程序的存储方法、故障恢复方法及设备,配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;如此,在引导程序运行或升级过程中,不会对存储介质中预设的第一分区进行频繁擦写,仅是对存储介质中预设的第二分区进行擦写,这样,能够缩小存储介质中出现问题的存储区域,从而延长存储介质的使用寿命。
本发明实施例在第二阶段代码故障恢复时,若不存在所述第二阶段备份代码,可以进入引导程序的下载操作模式;若存在所述第二阶段备份代码且检测所述第二阶段备份代码无故障,可以利用存储于第三分区中的第二阶段备份代码恢复故障的存储于第二分区第二阶段代码;若存在所述第二阶段备份代码但检测所述第二阶段备份代码故障,可以进入引导程序的下载操作模式;如此,能够及时地对引导程序运行或升级过程中出现的故障进行恢复,从而提高嵌入式系统的安全性。
附图说明
图1为本发明实施例引导程序的存储方法实现流程示意图;
图2为本发明实施例引导程序的故障恢复方法实现流程示意图;
图3为本发明实施例存储设备的组成结构示意图;
图4为本发明实施例嵌入式设备的组成结构示意图。
具体实施方式
本发明实施例中,配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
下面结合附图和具体实施方式对本发明所述方法和装置作进一步说明。
本发明实施例提出了一种引导程序的存储方法,如图1所示,该方法包括:
步骤S100:配置引导程序的第一阶段stage1代码及第二阶段stage2代码。
这里,引导程序可以为BootLoader、UBoot,也可以为更高级版本的引导程序。
这里,引导程序通常包括启动加载模式和下载模式,而且允许用户在这两种工作模式之间进行切换;其中,启动加载模式,也称为“自主引导方式”,也即引到程序从目标机的存储介质上将操作系统加载到内存随机存取存储器(RandomAccessMemory,RAM)中并引导运行,整个过程并没有用户的介入,该引导方式是引导程序的正常工作模式下普遍采用的一种引导方式,因此,在嵌入式设备发布的时候,引到程序一般以该引导方式对内核代码进行启动引导;下载模式,该引导方式下目标机上的引导程序将通过串口连接或网络连接等通信手段从主机下载文件,如下载应用程序、数据文件、内核映像等,从主机下载的文件通常首先被引导程序保存到目标机的内存RAM中,然后再被引导程序写到目标机上的存储介质中,最后完成内核的引导运行。
一般,引导程序在启动加载模式下分为:stage1和stage2,stage1代码通常用汇编语言实现,包含以下几个基本步骤:
1)基本参数设置;
2)为stage2准备内存RAM空间;
3)将stage2从存储介质中读取到内存RAM空间。
4)设置好堆栈;
5)跳转到stage2的入口处。
Stage2代码通常用C语言实现,包含以下几个基本步骤:
1)初始化本阶段需要用到的硬件;
2)检测系统的内存映象;
3)将内核和根文件系统从存储介质上加载到内存RAM空间;
4)为内核设置启动参数;
5)调用内核。
本步骤中,配置的所述stage1代码用于完成基本参数设置、对所述stage2代码进行故障检测及根据检测结果执行相应的操作;其中,基本参数,例如,中央处理器(CentralProcessingUnit,CPU)参数、内存参数以及一些基本的输入/输出(Input/Output,I/O)控制参数;配置的所述stage2代码用于完成剩余的初始化操作,即:加载内核到内存并运行。
步骤S101:将所述stage1代码存储于存储介质中预设的第一分区,并将所述stage2代码存储于存储介质中预设的第二分区。
通常,嵌入式设备中的存储介质采用NANDFlash。
这里,将所述stage1代码及所述stage2代码在存储介质中分区进行存储,在采用FOTA技术对引导程序升级时,所述stage1代码是固定不变的,永远不被升级,仅升级可被升级的所述stage2代码,因此,在引导程序升级过程中,不会对存储介质中预设的第一分区进行频繁擦写,仅是对存储介质中预设的第二分区进行擦写,这样,能够缩小存储介质中出现问题的存储区域,从而延长存储介质的使用寿命;并且在引导程序运行或升级的过程中,若第一阶段代码检测到第二阶段代码故障,则直接进入引导程序的下载模式,这样,可以挽救嵌入式系统,从而提高嵌入式系统的安全性。
优选的,可以对所述stage2代码进行备份得到第二阶段备份stage2backup代码,并将所述stage2backup代码存储于存储介质中预设的第三分区;在引导程序运行或升级过程中,认为所述stage1代码肯定是不会出现故障的,在所述stage2代码出现故障时,可以利用存储于第三分区中的所述stage2backup代码恢复故障的stage2代码,如此,能够及时地对引导程序运行或升级过程中出现的故障进行恢复,从而提高嵌入式系统的安全性。
进一步地,在所述stage2代码升级后,利用升级后的stage2代码更新存储于第三分区中的stage2backup代码。
进一步地,将故障的stage2代码存储于存储介质中预设的第四分区,以便后续根据故障的stage2代码排查问题,且方便问题的定位。
基于上述方法,本发明实施例提出了一种引导程序的故障恢复方法,将第一阶段代码和第二阶段代码分别存储于存储介质的第一分区和第二分区中;如图2所示,该方法包括:
步骤S200:第一阶段stage1代码在完成基本参数设置后,检测第二阶段stage2代码是否故障,若检测所述stage2代码故障,则转入步骤S201;若检测所述stage2代码无故障,则转入步骤S204。
步骤S201:确定是否存在stage2backup代码,确定存在第二阶段备份代码时,转入步骤S202;确定不存在stage2backup代码时,进入引导程序的下载模式。
步骤S202:检测所述stage2backup代码是否故障,检测到所述stage2backup代码无故障时,转入步骤S203;检测到所述stage2backup代码故障时,进入引导程序下载模式。
步骤S203:利用stage2backup代码恢复故障的存储于第二分区中的stage2代码,转入步骤S200。
步骤S204:确定是否存在stage2backup代码,确定不存在stage2backup代码时,跳转到stage2代码的入口处,完成剩余的初始化操作;确定存在stage2backup代码时,转入步骤S205。
步骤S205:检测stage2代码与stage2backup代码是否一致,若检测到stage2代码与stage2backup代码一致,则跳转到stage2代码的入口处,完成剩余的初始化操作;若检测到stage2代码与stage2backup代码不一致,则转入步骤S206。
步骤S206:确定stage2代码已被升级,利用升级后的stage2代码更新存储于第三分区中的stage2backup代码。
具体的,在步骤S200中,所述stage1代码在完成基本参数设置后,将所述stage2代码从存储介质中读取到内存,采用预设的校验码生成算法生成所述stage2代码的校验码,将生成的校验码与预存的stage2校验码进行对比,从而检测所述stage2代码是否故障,若生成的校验码与预存的stage2校验码不相同,则检测所述stage2代码故障,转入步骤S201;若生成的校验码与预存的stage2校验码相同,则检测所述stage2代码无故障,转入步骤S204。
在步骤S201中,确定是否存在stage2backup代码,确定存在第二阶段备份代码时,转入步骤S202;确定不存在stage2backup代码时,进入引导程序的下载模式。
在步骤S202中,采用预设的校验码生成算法生成所述stage2backup代码的校验码,将生成的校验码与预存的stage2backup校验码进行对比,从而检测所述stage2backup代码是否故障,若生成的校验码与预存的stage2backup校验码不相同,则检测所述stage2backup代码故障,进入引导程序下载模式;若生成的校验码与预存的stage2backup校验码相同,则检测到所述stage2backup代码无故障时,转入步骤S203。
在步骤S203中,利用stage2backup代码恢复故障的存储于第二分区中的stage2代码,即:将存储于第三分区中的stage2backup代码写入故障的stage2代码对应的第二分区中,这样能够及时地进行纠错,并对故障的stage2代码进行恢复;优选的,将stage2backup代码写入故障的stage2代码对应的第二分区中后,可以在预先定义的标志位写入表示“引导程序需要重新运行或升级”的标志,当检测到表示“引导程序需要重新运行或升级”的标志时,转入步骤S200,重新发起引导程序运行或升级流程,并清除该标志。
在步骤S204中,确定是否存在stage2backup代码,确定不存在stage2backup代码时,跳转到stage2代码的入口处,完成剩余的初始化操作;确定存在stage2backup代码时,转入步骤S205。
在步骤S205中,首先采用与所述stage2相同的校验码生成算法生成所述stage2backup代码的校验码,确定所述stage2backup代码无故障时,将所述stage2backup的校验码与所述stage2的校验码进行对比,若所述stage2backup的校验码与所述stage2的校验码相同,则检测到stage2代码与stage2backup代码一致,跳转到stage2代码的入口处,完成剩余的初始化操作;若所述stage2backup的校验码与所述stage2的校验码不相同,则检测到stage2代码与stage2backup代码不一致,此时确定stage2代码已被升级,转入步骤S206。
在步骤S206中,利用升级后的stage2代码更新存储于第三分区中的stage2backup代码,即:将升级后的stage2代码写入stage2backup代码对应的第三分区中。
具体实施中,所述stage2代码的故障可能是由于在升级stage2代码时掉电造成的,在下次启动系统时,首先运行引导程序中的stage1代码,对stage2代码进行检测,检测到stage2代码故障时,能够及时地恢复并挽救所述系统,从而避免了现有技术中出现的系统自举问题;所述stage2代码的故障也可能是由对存储介质中的第二分区频繁擦写,造成第二分区出现坏块引起的。
具体实施中,所述校验码生成算法可以是外部不可逆推,碰撞成本比较高的算法,比如经过盐化处理的信息摘要算法MD5。校验操作对性能要求比很高,可以设计适当的校验码生成算法,优选的,可以设计具有一定加密强度的校验码生成算法,这里对校验码生成算法不作具体限定。
进一步地,检测到所述stage2代码故障后,将故障的stage2代码写入存储介质中预设的第四分区,以便后续根据故障的stage2代码排查问题。
本发明实施例中,将所述stage1代码及所述stage2代码在存储介质中分区进行存储,即:将所述stage1代码存储于存储介质中预设的第一分区,并将所述stage2代码存储于存储介质中预设的第二分区;在引导程序运行或升级时,所述stage1代码是固定不变的,永远不被升级,仅升级可被升级的所述stage2代码,因此,在引导程序运行或升级过程中,不会对存储介质中预设的第一分区进行频繁擦写,仅是对存储介质中预设的第二分区进行擦写;这样,在所述stage2代码出现故障时,可以直接进入引导程序的下载模式,能够及时地挽救系统,从而提高嵌入式系统的安全性。
在上述一种优选的实施方式中,对所述stage2代码进行备份得到stage2backup代码,并将所述stage2backup代码存储于存储介质中预设的第三分区,在引导程序运行或升级时,认为所述stage1代码肯定是不会出现故障的,所述stage2代码和所述stage2backup代码由软件逻辑保证某一个时间点其中一个是无故障的或完整的,在所述stage2代码出现故障时,可以利用存储于第三分区中的无故障的stage2backup代码恢复存储于第二分区中的故障的stage2代码;如此,能够及时地对引导程序运行或升级过程中出现的故障进行恢复,从而提高嵌入式系统的安全性;
进一步地,在所述stage2代码出现故障时,若stage2backup代码也出现故障,则进入引导程序的下载模式,此时也能够及时地挽救系统。
本发明实施例不仅可以应用于引导程序的升级场景,也可以应用于确保引导程序完整性的任意场景。
为实现上述方法,本发明实施例还提供了一种存储设备、嵌入式设备,由于该存储设备、嵌入式设备解决问题的原理与方法相似,因此,存储设备、嵌入式设备的实施过程及实施原理均可以参见前述方法的实施过程及实施原理描述,重复之处不再赘述。
如图3所示,本发明实施例提供的存储设备,包括:配置单元300、存储单元301;其中,
所述配置单元300,用于配置引导程序的第一阶段代码及第二阶段代码;
所述存储单元301,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;
其中,所述第一阶段代码用于完成基本参数设置、对第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行。
为了描述的方便,以上所述存储设备的各部分以功能分为各种模块或单元分别描述。以上功能单元或模块的划分方式仅为本发明实施例给出的一种优选实现方式,功能单元或模块的划分方式不构成对本发明的限制。
具体实施中,所述配置单元300,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
所述存储单元301还用于:
将所述第二阶段备份代码存储于存储介质中预设的第三分区。
具体实施中,所述存储设备还包括:
更新单元302,用于在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
如图4所示,本发明实施例提供的嵌入式设备,包括:配置单元300、存储单元301、检测单元400、确定单元401、故障恢复单元402;其中,
所述配置单元300,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
所述存储单元301,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;
所述检测单元400,用于在第一阶段代码在完成基本参数设置后,检测第二阶段代码是否故障;
所述确定单元401,用于在检测单元400检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
所述故障恢复单元402,用于在确定单元401确定不存在所述第二阶段备份代码时,进入引导程序的下载操作模式。
为了描述的方便,以上所述存储设备的各部分以功能分为各种模块或单元分别描述。以上功能单元或模块的划分方式仅为本发明实施例给出的一种优选实现方式,功能单元或模块的划分方式不构成对本发明的限制。
具体实施中,所述配置单元300,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;相应的,所述存储单元301,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区;
所述检测单元400,还用于检测所述第二阶段备份代码是否故障;
所述故障恢复单元402,还用于在确定单元401确定存在所述第二阶段备份代码,并在检测单元400检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;在确定单元401确定存在所述第二阶段备份代码,并在检测单元400检测到所述第二阶段备份代码故障时,进入引导程序的下载操作模式。
具体实施中,所述检测单元400,还用于检测所述第二阶段代码与所述第二阶段备份代码是否一致;
所述嵌入式设备还包括:
执行单元403,用于在检测单元400检测到所述第二阶段代码无故障,并在确定单元401确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;在检测单元400检测到所述第二阶段代码无故障,并在确定单元401确定存在所述第二阶段备份代码时,若所述检测单元400检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
更新单元302,用于在检测单元400检测到所述第二阶段代码无故障,并在确定单元401确定存在所述第二阶段备份代码时,若所述检测单元400检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定存储于第二分区中的第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
在实际应用中,所述配置单元300、所述存储单元301、所述更新单元302可由位于所述存储设备的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现;所述配置单元300、所述存储单元301、所述更新单元302、所述检测单元400、所述确定单元401、所述故障恢复单元402、所述执行单元403可由位于所述嵌入式设备的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其它的实施方式,同样属于本发明的技术创新范围。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种引导程序的存储方法,其特征在于,所述方法包括:
配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
将所述第二阶段备份代码存储于存储介质中预设的第三分区。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
4.一种引导程序的故障恢复方法,其特征在于,将第一阶段代码和第二阶段代码分别存储于存储介质的第一分区和第二分区中;所述方法还包括:
所述第一阶段代码在完成基本参数设置后,检测所述第二阶段代码是否故障;
检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
确定存在所述第二阶段备份代码时,检测所述第二阶段备份代码是否故障;
检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;
检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
检测到所述第二阶段代码无故障时,确定是否存在所述第二阶段备份代码;
确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
确定存在所述第二阶段备份代码时,检测所述第二阶段代码与所述第二阶段备份代码是否一致;
若检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
若检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定存储于第二分区中的第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
7.一种存储设备,其特征在于,所述存储设备包括:配置单元、存储单元;其中,
所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区。
8.根据权利要求7所述的存储设备,其特征在于,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;
所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区。
9.根据权利要求8所述的存储设备,其特征在于,所述存储设备还包括:
更新单元,用于在所述第二阶段代码升级后,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
10.一种嵌入式设备,其特征在于,所述嵌入式设备包括:配置单元、存储单元、检测单元、确定单元、故障恢复单元;其中,
所述配置单元,用于配置引导程序的第一阶段代码及第二阶段代码;其中,所述第一阶段代码用于完成基本参数设置、对所述第二阶段代码进行故障检测及根据检测结果执行相应操作;所述第二阶段代码用于加载内核到内存并运行;
所述存储单元,用于将所述第一阶段代码存储于存储介质中预设的第一分区,并将所述第二阶段代码存储于存储介质中预设的第二分区;
所述检测单元,用于所述第一阶段代码在完成基本参数设置后,检测第二阶段代码是否故障;
所述确定单元,用于在检测单元检测到所述第二阶段代码故障时,确定是否存在第二阶段备份代码;
所述故障恢复单元,用于在确定单元确定不存在所述第二阶段备份代码时,进入引导程序的下载模式。
11.根据权利要求10所述的嵌入式设备,其特征在于,所述配置单元,还用于配置所述第二阶段代码的备份代码,得到第二阶段备份代码;相应的,所述存储单元,还用于将所述第二阶段备份代码存储于存储介质中预设的第三分区;
所述检测单元,还用于检测所述第二阶段备份代码是否故障;
所述故障恢复单元,还用于在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码无故障时,利用所述第二阶段备份代码恢复故障的存储于第二分区中的第二阶段代码;在确定单元确定存在所述第二阶段备份代码,并在检测单元检测到所述第二阶段备份代码故障时,进入引导程序的下载模式。
12.根据权利要求10或11所述的嵌入式设备,其特征在于,所述检测单元,还用于检测所述第二阶段代码与所述第二阶段备份代码是否一致;
所述嵌入式设备还包括:
执行单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定不存在所述第二阶段备份代码时,跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码一致,则跳转到所述第二阶段代码的入口处,完成剩余的初始化操作;
更新单元,用于在检测单元检测到所述第二阶段代码无故障,并在确定单元确定存在所述第二阶段备份代码时,若所述检测单元检测到所述第二阶段代码与所述第二阶段备份代码不一致,则确定所述第二段代码已被升级,利用升级后的第二阶段代码更新存储于第三分区中的第二阶段备份代码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410250492.XA CN105183580A (zh) | 2014-06-06 | 2014-06-06 | 一种引导程序的存储方法、故障恢复方法及设备 |
PCT/CN2014/090696 WO2015184732A1 (zh) | 2014-06-06 | 2014-11-10 | 引导程序的存储方法、故障恢复方法及设备、计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410250492.XA CN105183580A (zh) | 2014-06-06 | 2014-06-06 | 一种引导程序的存储方法、故障恢复方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105183580A true CN105183580A (zh) | 2015-12-23 |
Family
ID=54766007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410250492.XA Withdrawn CN105183580A (zh) | 2014-06-06 | 2014-06-06 | 一种引导程序的存储方法、故障恢复方法及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105183580A (zh) |
WO (1) | WO2015184732A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122668A (zh) * | 2017-04-28 | 2017-09-01 | 环球智达科技(北京)有限公司 | 固件加密方法 |
CN107122212A (zh) * | 2017-04-28 | 2017-09-01 | 环球智达科技(北京)有限公司 | 固件加密方法 |
CN108958769A (zh) * | 2018-06-26 | 2018-12-07 | 四川斐讯信息技术有限公司 | 一种嵌入式设备软件系统修复方法及系统 |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN110134426A (zh) * | 2019-04-18 | 2019-08-16 | 深圳市致宸信息科技有限公司 | 一种嵌入式系统升级方法、装置及终端设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007219877A (ja) * | 2006-02-17 | 2007-08-30 | Hitachi Ltd | 記憶システム及び仮想化方法並びにストレージ装置 |
CN101118494A (zh) * | 2006-08-01 | 2008-02-06 | 环达电脑(上海)有限公司 | 嵌入式设备从外接电子卡启动操作系统的系统与方法 |
CN102289397A (zh) * | 2011-09-13 | 2011-12-21 | 全星科技(珠海)有限公司 | 一种机顶盒的嵌入式系统自动恢复方法及装置 |
CN102945176A (zh) * | 2012-11-09 | 2013-02-27 | 青岛海信移动通信技术股份有限公司 | 终端设备开机、升级方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100373337C (zh) * | 2006-01-20 | 2008-03-05 | 北京朗通环球科技有限公司 | 一种嵌入式系统的引导系统 |
-
2014
- 2014-06-06 CN CN201410250492.XA patent/CN105183580A/zh not_active Withdrawn
- 2014-11-10 WO PCT/CN2014/090696 patent/WO2015184732A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007219877A (ja) * | 2006-02-17 | 2007-08-30 | Hitachi Ltd | 記憶システム及び仮想化方法並びにストレージ装置 |
CN101118494A (zh) * | 2006-08-01 | 2008-02-06 | 环达电脑(上海)有限公司 | 嵌入式设备从外接电子卡启动操作系统的系统与方法 |
CN102289397A (zh) * | 2011-09-13 | 2011-12-21 | 全星科技(珠海)有限公司 | 一种机顶盒的嵌入式系统自动恢复方法及装置 |
CN102945176A (zh) * | 2012-11-09 | 2013-02-27 | 青岛海信移动通信技术股份有限公司 | 终端设备开机、升级方法和设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122668A (zh) * | 2017-04-28 | 2017-09-01 | 环球智达科技(北京)有限公司 | 固件加密方法 |
CN107122212A (zh) * | 2017-04-28 | 2017-09-01 | 环球智达科技(北京)有限公司 | 固件加密方法 |
CN108958769A (zh) * | 2018-06-26 | 2018-12-07 | 四川斐讯信息技术有限公司 | 一种嵌入式设备软件系统修复方法及系统 |
CN110007971A (zh) * | 2019-03-25 | 2019-07-12 | 联想(北京)有限公司 | 一种信息处理方法及装置、设备、存储介质 |
CN110134426A (zh) * | 2019-04-18 | 2019-08-16 | 深圳市致宸信息科技有限公司 | 一种嵌入式系统升级方法、装置及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2015184732A1 (zh) | 2015-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572206A (zh) | 应用程序自更新和备份恢复的方法 | |
CN102364891B (zh) | 嵌入式以太网设备升级软件的方法及嵌入式以太网设备 | |
US9110843B2 (en) | Rack and method thereof for simultaneously updating basic input output systems | |
EP2456257B1 (en) | Method and system for upgrading wireless data card | |
CN102567049B (zh) | 嵌入式操作系统的升级方法 | |
CN105183580A (zh) | 一种引导程序的存储方法、故障恢复方法及设备 | |
KR100952585B1 (ko) | 운영체제(os) 자동복구기능을 갖는 임베디드 시스템 및운영체제 자동복구 방법 | |
CN104360877A (zh) | 基于Bootloader自更新的ECU固件更新方法 | |
CN106020861A (zh) | 一种智能手表的fota升级方法及系统 | |
CN110865831B (zh) | 关于在部署联网设备时进行改进的自动软件更新的方法 | |
CN105260209A (zh) | 一种程序热更新解决方法 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN104915226A (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
CN104965744A (zh) | 一种系统升级方法及嵌入式系统 | |
CN106775674B (zh) | 一种基于通用引导加载程序的设备及其启动方法 | |
CN102184111A (zh) | 操作系统在线升级方法及带操作系统的设备 | |
CN111158712A (zh) | 一种车载Tbox升级的方法、装置、设备以及存储介质 | |
KR20080023841A (ko) | 펌웨어 업그레이드와 손상된 펌웨어 자동 복구 시스템 및방법 | |
CN105045640A (zh) | 一种软件升级方法、装置及智能设备 | |
CN109375953B (zh) | 一种操作系统启动方法及装置 | |
CN116028084A (zh) | 一种基于OpenStack云平台跨版本热升级的方法、系统及终端 | |
CN116126379A (zh) | 一种bios固件升级方法、装置、设备及存储介质 | |
CN111949290B (zh) | 一种热补丁管理方法、装置、电子设备及存储介质 | |
CN110309018B (zh) | 充电设备系统切换方法、充电设备及可读存储介质 | |
CN110647343B (zh) | 一种OpenPower服务器及其系统部署方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20151223 |