一种引导程序的备份方法及其备份装置的制作方法

文档序号:6463102阅读:163来源:国知局
专利名称:一种引导程序的备份方法及其备份装置的制作方法
技术领域
本发明涉及嵌入式应用领域,尤其是指一种支持远程加载设备中的引导程序(BOOT)备份的方法及采用该方法的装置。
技术背景目前嵌入式系统已广泛应用在电子产品中, 一般应用中该些电子产品的嵌 入式系统均设置存储器,用于存储CPU的启动代码,该代码通常为BOOT引 导程序代码。当CPU接收到复位信息进行复位、重新启动时,系统自动从存 储器中读取代码并运行程序,从而达到对CPU进行配置、启动的功能。通常BOOT引导程序代码存放在存储介质中,其在运行过程中难免会有 突发状态发生,如在长时间的运行过程中可能会出现数据变化,或者硬件异常 等情况,因此要求设备或单板必须具有自动恢复的功能,这样才能保证BOOT 的可靠性,并且保证设备或单板下次能够成功启动。目前已有开发出多种 BOOT备份的方法,主要包括有利用两个完全相同的硬件进行备份,或者在 备份电路中增加存储硬件等,用于指示前次成功启动的区域,以指导本次启动 地址。然而上述的备汾方法的缺点是由于增加了辅助硬件,因此意味着同时增 加了系统运行的不可靠因素。此外,为了提高设备维护的效率,降低设备维护费用,目前大多数的BOOT 引导程序已经实现了远程升级功能,在远程升级的过程中也极有可能会发生异 常情况,导致升级不成功,因此在该种情况下,也必须要求设备或单板具有自 动恢复功能,否则在远程升级过程中必须到现场进行>险查、恢复,既费时又耗 力,造成工作延误。然而在上述现有技术的BOOT引导程序备份方法中,并 没有针对BOOT可远程升级对BOOT备份做相应的措施。综合以上所述,在这个基础上提出了能够支持远程升级的BOOT引导程 序备份的要求。5发明内容本发明的目的是提供一种支持远程升级的引导程序的备份方法,该方法支 持引导程序的远程升级,并使引导程序的备份并不局限于相似硬件备份,或者 同一硬件上不同区域的备份上。为实现上述发明目的,本发明提供一种引导程序的备份方法,包括设置 两个存储《1导程序的存储区,其中存储有需要进行备份的?I导程序的存储区为 主存储区,需要写入该需要进行备份的引导程序的存储区为备份存储区;提取 所述主存储区中的引导程序代码,将该引导程序代码的硬件信息l奮改为所述备 份存储区的硬件信息,并重新计算代码校验值,得到修改后的引导程序代码; 将所述修改后的引导程序代码存储到所述备份存储区。优选地,上述方法中,所述主存储区和所述备份存储区位于同一载体或者 位于不同载体。优选地,上述方法中,所述硬件信息包括位宽信息。优选地,上述方法中,所述主存储区和所述备份存储区的硬件信息以及校 验信息存放于保留存储区域。优选地,上述方法中,所述保留存储区域为CPU启动保留的存储区域。优选地,上述方法中,所述两个存储引导程序的存储区为第一存储区和第 二存储区,在启动时备份所述引导程序的过程中,所述方法进一步包括如下步 骤A. 根据启动信息判断当前启动是否从第一存储区启动;若判断结果为 "否",程序进入步骤D;若判断结果为"是",程序进入步骤B;B. 判断第二存储区的版本与第一存储区的版本是否一致;若判断结果为 "是",程序进入步骤G;否则程序进入步骤C;C. 提取第一存储区的引导程序代码,修改所述提取的引导程序代码的硬 件信息为第二存储区的硬件信息,并重新计算代码的校验值,将修改所得的引 导程序代码写入第二存储区,并回读进行校验;进入步骤E;D. 提取第二存储区的引导程序代码,修改所述提取的引导程序代码的硬 件信息为第一存储区的硬件信息,并重新计算代码的校验值,将修改所得代码写入第一存储区,并回读进行校验;进入步骤E;E.判断步骤C或步骤D是否正确写入;若判断结果为"是",程序进入 步骤G;若判断结果为"否",则进入步骤F;F:产生告警信息;G:设备正常运行。优选地,上述方法中,所述两个存储引导程序的存储区为第一存储区和第 二存储区,在升级所述引导程序的过程中,所述方法进一步包括如下步骤A: CPU响应远程发起的对引导程序升级的命令;B:提取第二存储区的引导程序代码,对该区域的引导程序代码进行校验, 判断代码是否正确;若判断结果为"是",执行步骤D;若判断结果为"否", 执行步骤C;C:提取第一存储区中的引导程序代码,修改该存储区的硬件信息和校验 值,并将修改后的引导程序代码写入第二存储区; D:执行第一存储区的升级操作。优选地,上述方法中,所述执行引导程序的升级操作步骤中,保证所提供 加载的引导程序代码的硬件信息与第一存储区的硬件信息相符合,并增加校验 值,将该修改后的引导程序代码写入至第一存储区。优选地,上述方法中,所述在升级引导程序的过程中,还包括E:系统 从第 一存储区重启,将第 一存储区的引导程序备份至第二存储区。此外,为实现上述发明目的,本发明还提供了一种引导程序的备份装置, 包括两个存储引导程序的存储区,其中存储有需要进行备份的引导程序的存 储区为主存储区,需要写入该需要进行备份的引导程序的存储区为备份存储 区;修改单元,用于提取所述主存储区中的引导程序代码,将该引导程序代 码的硬件信息修改为所述备份存储区的硬件信息,并重新计算代码校验值,得 到修改后的引导程序代码;写入单元,用于将所述修改后的引导程序代码存 储到所述备份存储区。优选地,上述装置,还包括保留存储区域,用于存储所述主存储区和所述 备份存储区.的硬件信息以及校验信息。优选地,上述装置,所述保留存储区域为CPU启动保留的存储区域。优选地,上述装置,所述主存储区和所述备份存^f渚区位于同一载体或者位 于不同载体。优选地,上述装置,所述硬件信息包括位宽信息。上述技术的有益效果在于,本发明所述的引导程序备份的方法,采取可变 硬件信息,能够支持引导程序的远程升级,而且可以利用设备上已有的存储介质完成引导程序备份,无需额外添加硬件,因此能够节省额外添加硬件的开支; 此外,本发明在引导程序代码中加入校验信息,可以在不使用该代码启动的情 况下判断代码是否正确,避免了必须从该代码启动才能判断是否正确的过程, 从而能够简化引导程序远程加载的流程,降低操作的复杂度。


图1为本发明所述引导程序的备份方法的实施例中,设备刚启动时BOOT 引导程序备份方法的流程示意图;图2为本发明所述引导程序的备份方法的实施例中,设备在BOOT引导 程序进行远程升级时的流程示意图;图3为本发明所述引导程序的备份装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实 施例对本发明进行详细描述。本发明所述的引导程序的备份方法,包括设置两个存储引导程序的存储 区,其中存储有需要进行备份的引导程序的存储区为主存储区,需要写入该需 要进行备份的S1导程序的存储区为名—分存储区;提取所述主存储区中的引导程 序代码,将该引导程序代码的硬件信息修改为所述备份存储区的硬件信息,并 重新计算代码校验值,得到修改后的引导程序代码;将所述修改后的引导程序 代码存储到所述备份存储区。所述主存储区和所述备份存储区位于同一载体或 者位于不同载体。所述硬件信息包含用于区分两个存储区不同载体的信息,例 如芯片的位宽信息等。如图1所示为本发明所述引导程序的备份方法的实施例中,设备启动时BOOT引导程序备^f分方法的流程示意图。在该实施例中,BOOTl为主BOOT 代码存储区,BOOT2为备份BOOT代码存储区,BOOT2作为BOOT1的完全 备份,用以防止当启动设备为系统的某块单板时,若BOOT代码与系统中的 版本不符合,导致单板不可用的情形发生,所以设备每次启动后需要保证 BOOT2中的代码为BOOT1相同版本的备份。参阅图l,设备启动时首先根据启动信息判断是否从主代码存储区BOOT1 启动,如步骤S101。若步骤S101的判断结果为"是",也即设备是从BOOTl启动,说明BOOT1 的代码是正确可用的,但为了保证BOOT2与BOOT1的代码同步,需要判断 BOOT2中代码的版本号是否与BOOT1中代码的版本号一致,因此程序开始 执行步骤S102。在步骤S102中,判断BOOT2中的BOOT版本是否与BOOT1中版本一 致。若步骤S102的判断结果为"是",说明BOOT1与BOOT2版本为一致, 设备正常启动,程序直接跳转至S109步骤,设备正常运行;若步骤S102的 判断结果为"否",说明BOOT1与BOOT2版本不一致,则程序开始执行步骤 S103。在该步骤S103中,提取BOOTl中的代码,并针对BOOT2修改生成BOOT2 中的备份代码,该修改信息包括BOOT的硬件、代码的校验信息等。执行该 步骤的原因是由于嵌入式系统启动时可能会用到BOOT的位宽等与硬件相关 的信息,所以需要把该信息保存在BOOT中的4呆留空间中。由于BOOT1和 BOOT2的载体硬件不一定相同,因此需要在做备份时修改该信息,另外为了 检验代码是否正确,还在保留区域中增加了代码的校验信息,由于其它字节值 的改变,该校验值的信息同样需要重新计算。在程序扭^于完成步骤S103后,进入步骤S104。在步骤S104中,把修改所得的代码写入到BOOT2中作为备份,并回读 进行校验,判断写入到BOOT2中的代码是否正确。程序在完成步骤S104后,开始执行步骤S107。在该步骤S107中,根据 校验信息,判断代码是否正确写入。若S107判断结果为"否",则执行程序 步骤S108,产生告警信息;若S107判断结果为"是",则程序跳转到步骤S109,设备正常运行。参阅图1,本实施例所述设备刚启动时的另外一种情形,步骤S101根据 启动信息判断结果为从备4分代码区BOOT2启动,而不是从主代码区BOOT1 启动,说明当前主代码区BOOT1的代码为不可用,需要重新写入,程序进入 步骤S105中。在该步骤S105中,需要提取BOOT2中的代码,并针对BOOTl修改生成 BOOT1中的备份代码,等同于步骤S103中所执行程序。在程序执行完成步骤S105后,进入步骤S106。在步骤S106中,把修改 所得的代码写入到BOOT1中,并回读进行校-睑,判断写入到BOOT1中的代 码是否正确。程序在完成步骤S106后,即执行步骤S107,其具体执行方式已如上所述, 在此将不再详述。如图2所示为在该实施例中,设备在对BOOT进行远程升级时,BOOT 程序备份方法的流程示意图,包括以下步骤步骤S201:接收远程加载BOOT软件升级命令。由于执行步骤S201,从远程接收BOOT软件升级命令后能够使BOOTl 升级,但为了确保升级后单板可以正常启动,所以必须检测BOOT2中的代码 是否完整及可用,只有在保i正BOOT2代码可用后才升级BOOTl 。也即程序进入步骤S202:提取BOOT2中的代码。步骤S203:通过校验判断BOOT2中的代码是否可用。采用的是判断全部 文件校验的方式,校验可以釆用任意有效的方法。该校验值随代码存放于 BOOT空间中的保留空间。如果才t验通过则直接跳转至步骤S205执行BOOT1 的升级操作,否则跳转至步骤S204执行代码备份操作。步骤S204:提取BOOT1中的代码,并针对BOOT2的位宽等与BOOT1 不相同的硬件信息,修改生成BOOT2中的备份代码,然后把修改后的代码写 入到BOOT2中。执行完BOOT备份后,程序进入步骤S205,进行BOOTl的升级操作, 并保证提供加载的代码的硬件信息和BOOTl的硬件信息相符,并增加校验值, 把修改后的代码写入到BOOTl。10在该实施例,按照图2的流程」执行完BOOTl的升级后会自动重启,如果 能够从BOOTl重启,则会依据图1所示的设备启动时BOOT程序备份方法的 流程图,自动将BOOT1代码备份到BOOT2中,从而实现两个空间的升级。本发明所述采用该引导程序的备份方法的装置结构示意图如图3所示,包 括两个存储引导程序的存储区, 一主存储区和一备份存储区,该两代码存储区 的代码信息除了包含引导程序外还包括硬件信息和校验信息;此外如图3示, 本发明所述引导程序的备份装置还包括修改单元,用于提取所述主存储区中的 引导程序代码,将该引导程序代码的硬件信息修改为所述备份存储区的硬件信 息,并重新计算代码校验值,得到修改后的引导程序代码;写入单元,用于将 修改后的引导程序代码存储到备份存储区;保留存储区域,用于存储主存储区 和备份存储区的硬件信息以及校验信息等。本发明所述引导程序的备份装置可设置于 一 包含嵌入式系统的完整系统 或一单板。本发明所述的BOOT引导程序备份的方法及装置,能够支持BOOT引导 程序的远程升级,而且可以利用设备上已有的存储介质完成BOOT引导程序 的备份,无需额外添加硬件,因此能够节省额外添加硬件的开支;此外,本发 明在BOOT代码中加入校验信息,可以在不使用该代码启动的情况下判断代 码是否正确,避免了必须从该代码启动才能判断是否正确的过程,从而能够简 化BOOT引导程序远程加载的流程,降低才喿作的复杂度。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若千改进和润饰, 这些改进和润饰也应一见为本发明的保护范围。
权利要求
1.一种引导程序的备份方法,其特征在于,包括设置两个存储引导程序的存储区,其中存储有需要进行备份的引导程序的存储区为主存储区,需要写入该需要进行备份的引导程序的存储区为备份存储区;提取所述主存储区中的引导程序代码,将该引导程序代码的硬件信息修改为所述备份存储区的硬件信息,并重新计算代码校验值,得到修改后的引导程序代码;将所述修改后的引导程序代码存储到所述备份存储区。
2. 根据权利要求l所述的方法,其特征在于,所述主存储区和所述备份 存储区位于同 一载体或者位于不同载体。
3. 根据权利要求l所述的方法,其特征在于,所述硬件信息包括位宽信白
4. 根据权利要求1所述的方法,其特征在于,所述主存储区和所述备份 存储区的硬件信息以及校验信息存放于保留存储区域。
5. 根据权利要求4所述的方法,其特征在于,所述保留存储区域为CPU 启动保留的存储区域。
6. 根据权利要求1所述的方法,其特征在于,所述两个存储引导程序的 存储区为第一存4诸区和第二存储区,在启动时备份所述引导程序的过程中,所 述方法进一步包括如下步骤A. 根据启动信息判断当前启动是否从第一存储区启动;若判断结果为 "否",程序进入步骤D;若判断结果为"是",程序进入步骤B;B. 判断第二存储区的版本与第一存储区的版本是否一致;若判断结果为 "是",程序进入步骤G;否则程序进入步骤C;C. 提取第一存储区的引导程序代码,修改所述提取的引导程序代码的硬 件信息为第二存储区的硬件信息,并重新计算代码的校验值,将修改所得的引 导程序代码写入第二存储区,并回读进行校验;进入步骤E;D. 提取第二存储区的引导程序代码,修改所述提取的引导程序代码的硬件信息为第一存储区的硬件信息,并重新计算代码的校验值,将修改所得代码写入第一存储区,并回读进行校验;进入步骤E;E.判断步骤C或步骤D是否正确写入;若判断结果为"是",程序进入 步骤G;若判断结果为"否",则进入步骤F;F:产生告警信息;G:设备正常运行。
7. 根据权利要求1所述的方法,其特征在于,所述两个存储引导程序的 存储区为第一存储区和第二存储区,在升级所述引导程序的过程中,所述方法 进一步包括如下步骤A: CPU响应远程发起的对引导程序升级的命令;B:提取第二存储区的引导程序代码,对该区域的引导程序代码进行校验, 判断代码是否正确;若判断结果为"是",执行步骤D;若判断结果为"否", 执行步骤C;C:提取第一存储区中的引导程序代码,修改该存储区的硬件信息和校验 值,并将修改后的引导程序代码写入第二存储区; D:执行第一存储区的升级操作。
8. 根据权利要求7所述的方法,其特征在于,所述执行引导程序的升级 操作步骤中,保证所提供加载的引导程序代码的硬件信息与第 一存储区的硬件 信息相符合,并增加校验值,将该修改后的引导程序代码写入至第一存储区。
9. 根据权利要求7所述的方法,其特征在于,所述在升级引导程序的过 程中,还包括E:系统从第一存储区重启,将第一存储区的引导程序^M分至第二存储区。
10. —种引导程序的备^f分装置,其特征在于,包括两个存储引导程序的存储区,其中存储有需要进行备份的引导程序的存储 区为主存储区,需要写入该需要进行备份的引导程序的存储区为备份存储区;修改单元,用于提取所述主存储区中的引导程序代码,将该引导程序代 码的硬件信息修改为所述备份存储区的硬件信息,并重新计算代码校验值,得 到修改后的引导程序代码;写入单元,用于将所述修改后的引导程序代码存储到所述备份存储区。
11. 根据权利要求10所述的装置,其特征在于,还包括保留存储区域,用于存储所述主存储区和所述备份存储区的硬件信息以及校验信息。
12. 根据权利要求11所述的装置,其特征在于,所述保留存储区域为CPU 启动保留的存储区域。
13. 根据权利要求10所述的装置,其特征在于,所述主存储区和所述备 份存储区位于同 一载体或者位于不同载体。
14. 根据权利要求10所述的装置,其特征在于,所述硬件信息包括位宽
全文摘要
本发明公开了一种引导程序的备份方法及其备份装置,所述方法包括设置两个存储引导程序的存储区,其中存储有需要进行备份的引导程序的存储区为主存储区,需要写入该需要进行备份的引导程序的存储区为备份存储区;提取所述主存储区中的引导程序代码,将该引导程序代码的硬件信息修改为所述备份存储区的硬件信息,并重新计算代码校验值,得到修改后的引导程序代码;将所述修改后的引导程序代码存储到所述备份存储区。本发明的引导程序的备份方法支持远程升级,且无需添加硬件,而且能够简化BOOT加载的流程,降低操作的复杂度。
文档编号G06F11/14GK101256527SQ20081010182
公开日2008年9月3日 申请日期2008年3月12日 优先权日2008年3月12日
发明者葳 封, 彤 罗, 罗文胜, 郭俊敏 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1