公开/公告号CN106293531A
专利类型发明专利
公开/公告日2017-01-04
原文格式PDF
申请/专利权人 深圳市蜂联科技有限公司;
申请/专利号CN201610648520.2
申请日2016-08-10
分类号G06F3/06;G06F11/10;G11C29/42;G06F9/24;
代理机构成都众恒智合专利代理事务所(普通合伙);
代理人刘华平
地址 518000 广东省深圳市前海深港合作区前湾一路鲤鱼门街1号前海深港合作区管理局综合办公楼A201室(入驻深圳市前海商务秘书有限公司)
入库时间 2023-06-19 01:14:33
法律状态公告日
法律状态信息
法律状态
2022-07-19
未缴年费专利权终止 IPC(主分类):G06F 3/06 专利号:ZL2016106485202 申请日:20160810 授权公告日:20190906
专利权的终止
2019-09-06
授权
授权
2017-02-01
实质审查的生效 IPC(主分类):G06F3/06 申请日:20160810
实质审查的生效
2017-01-04
公开
公开
技术领域
本发明涉及智能设备技术领域,具体地讲,是涉及一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法。
背景技术
目前很多公司都纷纷尝试智能设备(SD,Smart Device)领域,SD设备功能越来越多,硬件集成度越来越高。但是因为一些成本控制或者设计方案不那么完善,以及一些难以避免的原因(如突然停电)导致了SD使用过程中flash(闪存)上固件被意外篡改,SD设备无法正常工作。
SD在使用过程中,由于硬件设备老化、正常使用突然断电等原因,导致了flash中存放的固件被意外篡改,使SD无法正常使用。图1所示,是常规的flash布局,具体的SD设备制造厂商可能略有不同。第一个分区一定是Bootloader分区,对系统进行引导,同时系统镜像分区也一定会有,实现设备主要的功能。其他区域按照各设备的需求而定。
由于某些特殊原因(如突然断电),flash中的镜像文件被篡改,导致SD无法正常启动。遇到这种情况用户只能选择退换货或者自认倒霉。Flash被意外篡改的情况导致退换货在SD设备制造公司非常普遍。如果能够有效减少flash被意外篡改的发生,可以有效的减少公司的损失。从源头上来减少flash被意外篡改,各大flash厂商正在努力的去改正,但是却无法避免。
发明内容
针对上述现有技术的不足,本发明提供一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法。
为了实现上述目的,本发明采用的技术方案如下:
一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区、参数区和系统内核根文件分区,其中,对所述bootloader分区进行flash写保护;
(S1)当所述SD设备启动时,将flash写保护指令集和flash去保护指令集全部载入SD设备的内存中保存;
(S2)检测bootloader分区是否需要升级,若需要,则进行下一步,否则保持所述bootloader分区处于写保护状态;
(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;
(S4)对bootloader分区内数据进行擦写操作,升级bootloader内容;
(S5)从flash中读取升级后的bootloader内容进行校验,并与升级前的bootloader的校验值进行对比,判断是否升级成功,若是,则进行下一步,否则跳转至步骤(S4);
(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。
进一步地,所述flash中还设有一校验区,用于保存升级前的bootloader内容的校验值。
作为一种优选,所述校验值为ECC校验值。
作为一种优选,所述检验值为MD5码。
与现有技术相比,本发明具有以下有益效果:
(1)本发明巧妙利用flash写保护保证了SD设备中bootloader分区不被意外篡改,也不会被破坏,从而使得SD设备在使用时能够至少启动bootloader,即便其他分区部分出现被篡改的情况,也能够通过应急通道进行升级,恢复SD设备的功能,避免了现有技术中因flash出现意外而导致整个SD设备报废的情况,可有效减少SD设备制造公司的损失,同时本发明中在进行写保护和去保护操作时,均先将相关的指令集载入内存再在SPI空闲时一次性写入flash,实现了纳秒级操作,相比现有技术中多条指令分别下达flash的毫秒级操作有极大的提升,在有效提升操作效率的同时更是避免了毫秒级操作更容易造成flash损害的问题,并且本发明构思巧妙新颖,易于实现,应用性好,成本低廉,具有广泛的应用前景,适合推广应用。
(2)本发明利用校验区单独保存升级前的bootloader校验值,保证了升级成功的准确度,有效避免错误进行flash写保护的情况发生。
附图说明
图1为现有技术中flash内的分区布局示意图。
图2为本发明的流程示意图。
图3为本发明中的flash分区布局示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图2至图3所示,该基于flash写保护的防止SD使用过程中flash被意外篡改的方法,所述flash内包括bootloader分区、参数区和系统内核根文件分区,其中,对所述bootloader分区进行flash写保护;
(S1)当所述SD设备启动时,将flash写保护指令集和flash去保护指令集全部载入SD设备的内存中保存;
(S2)检测bootloader分区是否需要升级,若需要,则进行下一步,否则保持所述bootloader分区处于写保护状态;
(S3)从外部载入待升级的bootloader内容,同时在该过程中当flash与内存之间的串行接口空闲时,从内存中向该bootloader分区一次性写入所述flash去保护指令集,对该bootloader分区进行去保护操作;
(S4)对bootloader分区内数据进行擦写操作,升级bootloader内容;
(S5)从flash中读取升级后的bootloader内容进行校验,并与升级前的bootloader的校验值进行对比,判断是否升级成功,若是,则进行下一步,否则跳转至步骤(S4);
(S6)从内存中一次性写入flash写保护指令集,对所述bootloader分区进行flash写保护操作。
其中,所述flash中还设有一校验区,用于保存升级前的bootloader内容的校验值。优选地,所述校验值为ECC校验值或MD5码。
所述flash写保护是指通过设置flash内置的寄存器,保证flash在没有收到特定的指令时,保护特定区域执行擦除或写入操作不会生效。现有的flash写保护基于硬件特点,只能随机保护一个块或者flash头部或尾部的一个区域。针对SD设备内的flash设置情况,我们选择通过flash写保护保护其flash头部区域,即从bootloader分区起的区域,但是由于SD设备flash中参数区在使用过程中需要频繁擦写,因而其进行flash写保护的意义不大,对其进行flash写保护反而会影响参数读写的效率,因此只能对bootloader分区进行flash写保护,其意义在于SD系统启动过程中,设备需要先加载bootloader然后通过bootloader去引导系统,对bootloader分区进行flash写保护后,即使系统镜像文件发送了篡改,SD设备依然可以进入紧急升级状态,从而通过升级系统等手段恢复SD设备的正常功能。
另一方面,本发明在进行flash写保护操作和flash去保护操作中,先将相应的指令集载入SD设备的内存中保存,在flash和内存之间的串行接口SPI空闲时,一次性写入flash内完成相应的写保护或去保护操作,如此达到纳秒级的指令操作;相比现有技术中对flash的指令是一条条下达的毫秒级操作,效率有极大的提升,并且毫秒级的操作在SD设备掉电情况下,更容易造成flash损害。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而作出的变化,均应属于本发明的保护范围之内。
机译: 用于将T-flash(RTM),S-flash(RTM),mini-SD(RTM)和MMciron(RTM)卡接收到SD卡(RTM)中的适配器,具有模制塑料底座,其插槽扩展了用于将复合零件安装到位底盘
机译: 在基于在线Flash的游戏中将Flash符号用于旅行节点的系统和方法
机译: 使用影子幻影列表防止基于FLASH的缓存设备过度磨损的方法