系统uboot损坏检测及恢复方法
文献发布时间:2023-06-19 09:47:53
技术领域
本发明涉及于计算机控制系统领域,具体涉及一种系统uboot损坏检测及恢复方法。
背景技术
在嵌入式linux平台下,通常系统分为SPL(Second Program Loader通常为可选)、uboot、kernel、rootfs等部分,其中SPL和uboot都属于bootloader,系统启动通常将先加载和执行SPL和uboot然后由uboot加载kernel和rootfs。通常如果kernel或者rootfs部分出现损坏可以通过uboot执行恢复完成恢复系统正常的功能。但是如果uboot出现损坏,将没有办法恢复。这种情况下设备会“变砖”,只有重新烧写才可以恢复。
发明内容
本发明的目的在于针对上述技术问题提供一种系统uboot损坏检测及恢复方法。
本发明解决上述技术问题的技术方案如下:
系统uboot损坏检测及恢复方法,包括以下步骤:
步骤1、在系统中特定区域存储uboot分区备份文件;
步骤2、启动SPL,并检测uboot跳转后是否正确执行,检测uboot未能正确执行的连续次数是否大于预设次数,若是,则判定uboot损坏,跳转至步骤3,若否,则继续执行SPL;
步骤3、在SPL中使用uboot备份文件还原uboot。
进一步的,所述步骤2中,存储uboot未能正确执行的连续次数为N,若uboot成功启动,则令N=0。
进一步的,所述步骤2中,预设次数为5。
本发明的有益效果为:在设备运行过程中,当系统软件的uboot出现损坏之后,可以由SPL检测到损坏发生并恢复uboot,防止设备因为uboot的损坏而无法使用。
附图说明
图1为本发明的方法流程示意图;
图2为本发明的实施例流程示意图。
具体实施方式
以下对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,系统uboot损坏检测及恢复方法,包括以下步骤:
步骤1、在系统中特定区域存储uboot分区备份文件;
步骤2、启动SPL,并检测uboot跳转后是否正确执行,检测uboot未能正确执行的连续次数是否大于预设次数,若是,则判定uboot损坏,跳转至步骤3,若否,则继续执行SPL;
步骤3、在SPL中使用uboot备份文件还原uboot。
作为一种实施方式,所述步骤2中,存储uboot未能正确执行的连续次数为N,若uboot成功启动,则令N=0。
作为一种实施方式,所述步骤2中,预设次数为5。
如图2所示,实施例1为在imx6solo平台空调屏上实现了基于emmc存储的uboot恢复功能后的方法,包括以下步骤:
1、正常启动使用boot0分区里的uboot镜像执行。使用boot1分区保存uboot备份镜像。事先在emmc的boot1分区中存放一份备份的uboot镜像。
2、SPL里添加和上级MCU之间的心跳超时重启状态检测逻辑。SPL里添加跳转uboot次数计数保存在非易失存储区。当成功启动uboot后清除计数。
3、跳转uboot后如果出现未正常执行心跳超时重启,将会在SPL导致uboot跳转次数增加。当连续5次出现这种情况判断为uboot损坏。
4、使用boot1分区里的uboot镜像写入到正常启动使用的boot0分区,完成uboot恢复功能。下次启动将可以正常使用boot0分区里的uboot启动。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 系统uboot损坏检测及恢复方法
- 基于VMware虚拟化文件系统损坏的数据恢复方法