一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法技术

技术编号:14159001 阅读:114 留言:0更新日期:2016-12-12 01:46
本发明专利技术公开了一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,包括(S1)在flash内生成bootloader分区;(S2)生成对应的ECC校验值,并把该ECC校验值保存于其后建立的bootloaderECC校验区中;(S3)生成系统内核和根文件系统分区;(S4)生成对应的ECC校验值,并把该ECC校验值保存于其后建立的系统ECC校验区中;(S5)所述SD设备在每次启动过程中,根据flash读出的每256字节数据生成一个新的ECC校验值,将其与该flash的bootloaderECC校验区或系统ECC校验区内对应保存的ECC校验值进行对比,若二者一致,则表明该256字节数据正常,否则根据ECC校验规则对该256字节数据进行修复。本发明专利技术有效地改善了SD设备在使用过程中因停电、flash参数擦写过于频繁等导致少量bit被篡改而无法启动的情况。

【技术实现步骤摘要】

本专利技术涉及智能设备
,具体地讲,是涉及一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法
技术介绍
目前很多公司都纷纷尝试智能设备(SD,Smart Device)领域,SD设备功能越来越多,硬件集成度越来越高。但是因为一些成本控制或者设计方案不那么完善,以及一些难以避免的原因(如突然停电)导致了SD使用过程中flash(闪存)上固件被意外篡改,SD设备无法正常工作。SD在使用过程中,由于硬件设备老化、正常使用突然断电等原因,导致了flash中存放的固件被意外篡改,使SD无法正常使用。图1所示,是常规的flash布局,具体的SD设备制造厂商可能略有不同。第一个分区一定是Bootloader分区,对系统进行引导,同时系统镜像分区也一定会有,实现设备主要的功能。其他区域按照各设备的需求而定。由于某些特殊原因(如突然断电),flash中的镜像文件被篡改,导致SD无法正常启动。遇到这种情况用户只能选择退换货或者自认倒霉。Flash被意外篡改的情况导致退换货在SD设备制造公司非常普遍。如果能够有效减少flash被意外篡改的发生,可以有效的减少公司的损失。从源头上来减少flash被意外篡改,各大flash厂商正在努力的去改正,但是却无法避免。
技术实现思路
针对上述现有技术的不足,本专利技术提供一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,通过ECC校验的方式修正已经发生少量bit位篡改的flash,保证设备的正常使用。为了实现上述目的,本专利技术采用的技术方案如下:一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,包括如下步骤:(S1)按照SD设备需求在flash内生成bootloader分区;(S2)根据生成的bootloader分区生成对应的ECC校验值,并把该ECC校验值保存于所述bootloader分区后生成的bootloaderECC校验区中;(S3)按照SD设备需求生成系统内核和根文件系统分区;(S4)根据所述系统内核和根文件分区生成对应的ECC校验值,并把该ECC校验值保存于所述系统内核和根文件分区后生成的系统ECC校验区中;(S5)所述SD设备在每次启动过程中,根据flash读出的每256字节数据生成一个新的ECC校验值,将其与该flash的bootloaderECC校验区或系统ECC校验区内对应保存的ECC校验值进行对比,若二者一致,则表明该256字节数据正常,否则根据ECC校验规则对该256字节数据进行修复。为了有效区分ECC校验区域,避免启动过程中出现该部分错误,所述bootloader分区和所述bootloaderECC校验区之间通过由一些特殊定义的字符构成的第一分隔区间隔。相应地,所述系统内核和根文件系统分区和所述系统ECC校验区之间通过由一些特殊定义的字符构成的第二分隔区间隔。具体地,所述步骤(S5)中将新的ECC校验值与对应保存的ECC校验值进行对比的具体方法为将二者按位异或。进一步地,所述步骤(S5)中将新的ECC校验值与对应保存的ECC校验值按位异或后,若结果为0,则表示不存在错误,当3个字节异或结果中存在11个bit位为1,则表示存在可纠正的一个bit错误,当3个字节异或结果中只存在1个bit位为1,则表示该对应的ECC校验区出错。更具体地,所述ECC校验规则的生成算法包含每次对256字节数据进行行校验生成和列校验生成,其中,所述256字节数据排列构成256行、8列的矩阵,该矩阵的每个元素表示一个bit位。更进一步地,所述行校验生成的过程如下:(ra)所述矩阵中奇数行生成其对应的校验结果RP0,偶数行生成其对应的校验结果RP1;(rb)由这256个校验结果RP0和RP1顺次相邻地构成128对校验对,并且排列为偶数的检验对内的RP0和RP1异或生成校验结果RP2,排列为奇数的检验对内的RP0和RP1异或生成校验结果RP3;(rc)由这128个校验结果RP2和RP3顺次相邻地构成64对校验对,并且排列为偶数的检验对内的RP2和RP3异或生成校验结果RP4,排列为奇数的检验对内的RP2和RP3异或生成校验结果RP5;(rd)以此方式类推,直至生成由校验结果RP14和校验结果RP15构成的唯一一对校验对。更进一步地,所述列校验生成的过程如下:(ca)所述矩阵中偶数列生成其对应的校验结果CP0,奇数列生成其对应的校验结果CP1;(cb)由这8个校验结果CP0和CP1顺次相邻构成4对校验对,并且排列为奇数的校验对内的CP0和CP1异或生成校验结果CP3,排列为偶数的校验对内的CP0和CP1异或生成校验结果CP2;(cc)由该顺次相邻排列的校验结果CP2和CP3构成2对校验对,依次异或生成校验结果CP5和CP4。更进一步地,所述校验结果RP0~RP15和校验结果CP0~CP5将其校验值保存于对应的ECC校验区中,每256字节数据生成的22bit位ECC校验值存储于3个字节中,该3个字节内的空余2bit位用值1填充。更具体地,所述根据ECC校验规则对该256字节数据进行修复具体为通过生成的新的ECC校验值与保存的ECC校验值的异或对比,定位发生篡改的bit位的行列位置,并将其修复为与已保存的ECC校验值匹配的bit位值。与现有技术相比,本专利技术具有以下有益效果:(1)本专利技术巧妙利用ECC检验原理有效地纠正了由于SD的flash性能不稳定造成的少量bit的篡改问题,有效地改善了SD设备在使用过程中因停电、flash参数擦写过于频繁等导致少量bit被篡改而无法启动的情况,同时对于flash硬件中没有提供OOB(out of band)区的设备可独立地利用flash空间开辟一个用于存放ECC校验值的区域,有效解决了本专利技术实现的硬件更新障碍,并且其同类ECC校验值全部存放于一个校验区内,仅通过依次读flash操作即可获取到全部ECC校验值,相较常规的每次分别读取,大大提高了ECC校验校正的效率,减少了ECC校验占用的时间,降低了flash的使用率,并且本专利技术构思巧妙新颖,易于实现,应用性好,成本低廉,具有广泛的应用前景,适合推广应用。(2)本专利技术利用分隔区在bootloader分区和系统内核和根文件分区之后产生对应的ECC校验区,专门保持相应的ECC校验值,有效地避免了flash中没有预设OOB区而存储ECC校验值产生的系统错误。附图说明图1为现有技术中flash内的分区布局示意图。图2为本专利技术的流程示意图。图3为本专利技术中的flash分区布局示意图。图4为本专利技术中分隔区的布局示意图。图5为本专利技术中ECC行校验生成的示意图。图6为本专利技术中ECC列校验生成的示意图。图7为本专利技术中校验结果保存的示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步说明,本专利技术的实施方式包括但不限于下列实施例。实施例如图2至图7所示,该基于ECC校验的防止SD使用过程中flash被意外篡改的方法,包括如下步骤:(S1)按照SD设备需求在flash内生成bootloader分区;(S2)根据生成的bootloader分区生成对应的ECC校验值,并把该ECC校验值保存于所述bootloader分区后生成的bootloaderECC校验区中;(S3)按照SD设备需求生本文档来自技高网...
一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法

【技术保护点】
一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,包括如下步骤:(S1)按照SD设备需求在flash内生成bootloader分区;(S2)根据生成的bootloader分区生成对应的ECC校验值,并把该ECC校验值保存于所述bootloader分区后生成的bootloaderECC校验区中;(S3)按照SD设备需求生成系统内核和根文件系统分区;(S4)根据所述系统内核和根文件分区生成对应的ECC校验值,并把该ECC校验值保存于所述系统内核和根文件分区后生成的系统ECC校验区中;(S5)所述SD设备在每次启动过程中,根据flash读出的每256字节数据生成一个新的ECC校验值,将其与该flash的bootloaderECC校验区或系统ECC校验区内对应保存的ECC校验值进行对比,若二者一致,则表明该256字节数据正常,否则根据ECC校验规则对该256字节数据进行修复。

【技术特征摘要】
1.一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,包括如下步骤:(S1)按照SD设备需求在flash内生成bootloader分区;(S2)根据生成的bootloader分区生成对应的ECC校验值,并把该ECC校验值保存于所述bootloader分区后生成的bootloaderECC校验区中;(S3)按照SD设备需求生成系统内核和根文件系统分区;(S4)根据所述系统内核和根文件分区生成对应的ECC校验值,并把该ECC校验值保存于所述系统内核和根文件分区后生成的系统ECC校验区中;(S5)所述SD设备在每次启动过程中,根据flash读出的每256字节数据生成一个新的ECC校验值,将其与该flash的bootloaderECC校验区或系统ECC校验区内对应保存的ECC校验值进行对比,若二者一致,则表明该256字节数据正常,否则根据ECC校验规则对该256字节数据进行修复。2.根据权利要求1所述的一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述bootloader分区和所述bootloaderECC校验区之间通过由一些特殊定义的字符构成的第一分隔区间隔。3.根据权利要求1所述的一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述系统内核和根文件系统分区和所述系统ECC校验区之间通过由一些特殊定义的字符构成的第二分隔区间隔。4.根据权利要求1所述的一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述步骤(S5)中将新的ECC校验值与对应保存的ECC校验值进行对比的具体方法为将二者按位异或。5.根据权利要求4所述的一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述步骤(S5)中将新的ECC校验值与对应保存的ECC校验值按位异或后,若结果为0,则表示不存在错误,当3个字节异或结果中存在11个bit位为1,则表示存在可纠正的一个bit错误,当3个字节异或结果中只存在1个bit位为1,则表示该对应的ECC校验区出错。6.根据权利要求1~5任一项所述的一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法,其特征在于,所述ECC校验规则的生成算法包...

【专利技术属性】
技术研发人员:崔营周庆伟
申请(专利权)人:深圳市蜂联科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1