本发明涉及智能设备技术领域,具体地讲,是涉及一种基于双镜像的防止SD使用过程中flash被意外篡改的方法。
背景技术:
目前很多公司都纷纷尝试智能设备(SD,Smart Device)领域,SD设备功能越来越多,硬件集成度越来越高。但是因为一些成本控制或者设计方案不那么完善,以及一些难以避免的原因(如突然停电)导致了SD使用过程中flash(闪存)上固件被意外篡改,SD设备无法正常工作。
SD在使用过程中,由于硬件设备老化、正常使用突然断电等原因,导致了flash中存放的固件被意外篡改,使SD无法正常使用。图1所示,是常规的flash布局,具体的SD设备制造厂商可能略有不同。第一个分区一定是Bootloader分区,对系统进行引导,同时系统镜像分区也一定会有,实现设备主要的功能。其他区域按照各设备的需求而定。
由于某些特殊原因(如突然断电),flash中的镜像文件被篡改,导致SD无法正常启动。遇到这种情况用户只能选择退换货或者自认倒霉。Flash被意外篡改的情况导致退换货在SD设备制造公司非常普遍。如果能够有效减少flash被意外篡改的发生,可以有效的减少公司的损失。从源头上来减少flash被意外篡改,各大flash厂商正在努力的去改正,但是却无法避免。
技术实现要素:
针对上述现有技术的不足,本发明提供一种基于双镜像的防止SD使用过程中flash被意外篡改的方法。
为了实现上述目的,本发明采用的技术方案如下:
一种基于双镜像的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区,镜像配置的第一参数区和第二参数区,以及镜像配置的第一系统分区和第二系统分区,其中,第一参数区对应第一系统分区构成第一镜像系统,第二参数区对应第二系统分区构成第二镜像系统;该方法包括如下步骤:
(S1)SD设备上电,由bootloader分区内的bootloader引导程序,同时,配置第一参数区和第一系统分区为默认启动系统;
(S2)读取第一参数区和第一系统分区内数据进行系统启动;
(S3)在系统启动时,分别对第一参数区和第一系统分区内的数据进行校验,与预先存储的原始校验值进行比较,若校验成功,则正常启动系统,若校验失败,则进行下一步;
(S4)读取第二参数区和第二系统分区内数据进行系统启动;
(S5)在系统启动时,分别对第二参数区和第二系统分区内的数据进行校验,与预先存储的原始校验值进行比较,若校验成功,则正常启动系统,若校验失败,则进入设定的紧急升级模式。
进一步地,在系统正常启动后,每隔一设定时间升级当前使用的镜像系统。
更进一步地,在系统正常启动后,对启动前是否有校验失败进行检测,若存在校验失败,则通过当前使用的镜像系统对校验失败的镜像系统进行修复。
具体地,所述通过当前使用的镜像系统对校验失败的镜像系统进行修复的具体方法为将当前使用的镜像系统的内容复制并覆盖所述校验失败的镜像系统的内容。
优选地,所述进行校验所采用的校验值为MD5码。
与现有技术相比,本发明具有以下有益效果:
(1)本发明巧妙利用双镜像系统来解决SD的flash性能不稳定造成的被篡改问题,有效地改善了SD设备在使用过程中因停电、flash参数擦写过于频繁等导致被篡改而无法启动的情况,只要bootloader分区内的数据正常,即使参数区或系统分区内数据被意外篡改,也可以通过另一参数区或系统分区的读取来启动系统,不会影响SD设备的正常使用,并且本发明构思巧妙新颖,易于实现,应用性好,可靠性高,具有广泛的应用前景,适合推广应用。
附图说明
图1为现有技术中flash内的分区布局示意图。
图2为本发明的流程示意图。
图3为本发明中的flash分区布局示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图2至图3所示,该基于双镜像的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区,镜像配置的第一参数区和第二参数区,以及镜像配置的第一系统分区和第二系统分区,其中,第一参数区对应第一系统分区构成第一镜像系统,第二参数区对应第二系统分区构成第二镜像系统;本技术方案的典型应用是在频繁使用、功能较少的SD设备中,这类SD设备由于大量擦写参数区,在系统掉电时容易引起flash中bit位跳转,造成flash被篡改。同时一些认为因素也容易造成flash中固件损坏,如SD设备系统利用无线信号进行升级,由于信号不稳定,升级时间长,造成用户反感而断电引起的flash擦写到一半造成设备无法使用。
该方法包括如下步骤:
(S1)SD设备上电,由bootloader分区内的bootloader引导程序,同时,配置第一参数区和第一系统分区为默认启动系统;
(S2)读取第一参数区和第一系统分区内数据进行系统启动;
(S3)在系统启动时,分别对第一参数区和第一系统分区内的数据进行校验,与预先存储的原始校验值进行比较,若校验成功,则正常启动系统,若校验失败,则进行下一步;
(S4)读取第二参数区和第二系统分区内数据进行系统启动;
(S5)在系统启动时,分别对第二参数区和第二系统分区内的数据进行校验,与预先存储的原始校验值进行比较,若校验成功,则正常启动系统,若校验失败,则进入设定的紧急升级模式。在紧急升级模式中,可通过从外部导入数据的形式对损坏的系统数据进行修复。
进一步地,在系统正常启动后,每隔一设定时间升级当前使用的镜像系统。
更进一步地,在系统正常启动后,对启动前是否有校验失败进行检测,若存在校验失败,则通过当前使用的镜像系统对校验失败的镜像系统进行修复。
具体地,所述通过当前使用的镜像系统对校验失败的镜像系统进行修复的具体方法为将当前使用的镜像系统的内容复制并覆盖所述校验失败的镜像系统的内容。
优选地,所述进行校验所采用的校验值为MD5码。
通过本方案可以解决单个系统的各种系统数据错误的问题,同时在实际应用中,在一个镜像系统升级后,SD设备中便保存了两个版本的系统,如果用户对升级后的系统不满意,还可以通过相应的手段回退到相对旧的版本中使用,极大地方便了用户体验。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。