一种高可靠性断电保护方法
【专利摘要】本发明公开了一种高可靠性断电保护方法,其引入断电保护内存缓冲区,将存放于非易失性存储介质中的断电恢复信息依次一次性读入断电保护内存缓冲区,通过断电保护内存缓冲区做断电数据的恢复。本发明通过断电保护内存缓冲区做数据恢复,杜绝断电后非易失性存储介质中的数据不稳定性对系统的不可控影响。
【专利说明】一种高可靠性断电保护方法
【技术领域】
[0001]本发明涉及数据安全技术,具体涉及智能卡的断电保护技术。
【背景技术】
[0002]断电保护属于智能卡行业的核心技术一智能卡断电后的安全性和稳定性,如果得不到安全可靠的保证,往往会出现各种理论无法预知的产品事故。轻者数据的一致性无法保证,严重的话将会导致系统崩溃,产品报废,其重要性不言而喻。断电保护机制若无法保证,产品就绝对得不到认可,更不能得以发行。
[0003]芯片技术发展日新月异,且芯片制造工艺各不相同,芯片性能也良莠不齐。中国国产芯片迅速崛起成为智能卡芯片市场的重要组成部分。目前,各种类型的芯片充斥市场。中国国产芯片往往因为起步晚,发展快,芯片性能稳定性往往无法保证。由此在实际开发中,断电保护总会遇到各种各样的问题。很有可能在某些芯片上非常稳定的断电保护安全机制,移植到其它芯片上往往会因为芯片本身的不稳定性而产生各种各样的问题。
[0004]由此可见,提高智能卡芯片断电保护机制的兼容性、容错性以及可靠性是本领域亟需解决的问题。
【发明内容】
[0005]针对上述现有智能卡芯片断电保护机制在兼容性和可靠性方面所存在的问题,本发明的目的在于提供一种高可靠性断电保护机制,最大限度的提高程序的壮健性,芯片的兼容性,保证断电保护的高可靠性,有效帮助开发人员避免芯片缺陷导致的不稳定性干扰,缩短开发周期。
[0006]为了达到上述目的,本发明采用如下的技术方案:
[0007]一种高可靠性断电保护方法,所述保护方法将存放于非易失性存储介质中的断电恢复信息依次一次性读入断电保护内存缓冲区,通过断电保护内存缓冲区做断电数据的恢复。
[0008]在该保护方法的优选方案中,进一步的,所述方法在RAM内存区指定一页大小的区间作为断电保护内存缓冲区。
[0009]再进一步的,所述方法中从非易失性存储介质中的断电保护区首地址依次读取一整页的数据存入断电保护内存缓冲区。
[0010]进一步的,所述方法在断电保护内存缓冲区中采用ALVC格式的断电数据恢复项,其中A为断电数据恢复项中待恢复数据的首地址;L为断电数据恢复项中待恢复数据V的长度为断电数据恢复项中待恢复数据;C为断电数据恢复项中待恢复数据的CRC校验值。
[0011]再进一步的,所述方法进行断电保护的过程如下:
[0012](I)读取非易失性存储介质中的断电保护区,把非易失性存储介质中的断电保护区的内容依次一次性读入到断电保护内存缓冲区,在断电保护内存缓冲区建立相应的ALVC格式的断电数据恢复项;
[0013](2)当发生断电后,首先判断非易失性存储介质中的断电保护区是否有恢复数据,若有则转入步骤(3)进行数据恢复;若没有,则不进行数据恢复;
[0014](3)根据断电保护内存缓冲区中的ALVC格式的断电数据恢复项进行CRC校验,若一致,则恢复相关数据;若不一致,不进行恢复。
[0015]再进一步的,恢复数据时,根据断电保护内存缓冲区建立的ALVC格式的断电数据恢复项,将非易失性存储介质中断电保护区中从ALVC格式的断电数据恢复项中A项指定的地址开始,L项指定长度的数据,替换成V项提供的新数据。
[0016]本发明通过断电保护内存缓冲区做数据恢复,杜绝断电后非易失性存储介质中的数据不稳定性对系统的不可控影响。
[0017]同时,每一个断电数据恢复项都有自身的校验,保证断电数据恢复项有效性。
[0018]本方案在具体应用时,能够最大限度的提高程序的壮健性,芯片的兼容性,保证断电保护的高可靠性,有效帮助开发人员避免芯片缺陷导致的不稳定性干扰,缩短开发周期。
【专利附图】
【附图说明】
[0019]以下结合附图和【具体实施方式】来进一步说明本发明。
[0020]图1为ALVC格式的断电数据恢复项的结构示意图;
[0021]图2为添加首个断电数据恢复项示意图;
[0022]图3为添加第2个断电数据恢复项示意图;
[0023]图4为断电保护内存缓冲区中的断电数据恢复项示意图;
[0024]图5为本发明对比实例I中没有断电保护内存缓冲区的芯片进行断电数据恢复的示意图;
[0025]图6为本发明对比实例2中需要处理的数据项示意图;
[0026]图7为本发明对比实例2中在断电保护内存缓冲区建立ALVC格式的断电数据恢复项示意图。
【具体实施方式】
[0027]为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
[0028]CPU卡性能的主要因素是对非易失性存储介质的擦写操作。在擦写的过程中,时刻有断电的可能性。由于芯片的性能不同,擦写过程中断电后的非易失性存储介质性能表现也各不相同,存在数据不稳定的芯片,造成每次读取的数据不同。
[0029]据此,本方案针对各种CPU卡,提供一种高兼容性、高可靠性断电保护方案。该方案通过引入断电保护内存缓冲区,把存放于非易失性存储介质中的断电恢复信息依次一次性读入断电保护内存缓冲区,通过断电保护内存缓冲区做断电数据的恢复。
[0030]为此,本方案指定一页大小的内存(RAM区)专用区间作为断电保护内存缓冲区,专门用于掉电保护。该断电保护内存缓冲区的空间大小与非易失性存储介质中的断电保护区的空间大小一致,且作用相同。
[0031]在进行读入数据时从非易失性存储介质中的断电保护区首地址依次读取一整页的数据存入断电保护内存缓冲区。
[0032]在此基础上,本方案还引入ALVC格式的断电数据恢复项,保证每一个断电数据恢复项的正确性。
[0033]参见图1,其所示为本方案中引入的ALVC格式的断电数据恢复项的结构。
[0034]其中,A为断电数据恢复项中待恢复数据的首地址;
[0035]L为断电数据恢复项中待恢复数据V的长度;
[0036]V为断电数据恢复项中待恢复数据;
[0037]C为断电数据恢复项中待恢复数据的CRC校验值;
[0038]A、L、V、C后括号内数字表示占用字节数。
[0039]基于上述的ALVC格式的断电数据恢复项,本方案进行断电恢复信息读入和断电数据恢复的过程如下:
[0040]首先,根据依次一次性读入的存放于非易失性存储介质中的断电恢复信息,在断电保护内存缓冲区建立相应的ALVC格式的断电数据恢复项。
[0041]参见图2,其所示为断电保护内存缓冲区添加首个断电数据恢复项L1V1A1C1。
[0042]参见图3,其所示为在首个断电数据恢复项L1V1A1C1后继续添加第2个断电数据恢复项L2V2A2C2
[0043]参见图4,其所示为断电保护内存缓冲区中最终形成的ALVC格式的断电数据恢复项。
[0044]在断电数据恢复时,首先判断非易失性存储介质中的断电保护区是否有恢复数据,若有,把非易失性存储介质中断电保护区的数据读取到断电保护内存缓冲区,进行CRC校验,若一致,则恢复相关数据。
[0045]以图4所示的断电数据恢复项为例,说明一下断电数据恢复的过程:
[0046]若读到断电保护内存缓冲区的数据如图4所示,首先,系统发现断电保护内存缓冲区中有非O数据,依据ALVC的格式定位找到最后一个C,此处为C2,通过CRC计算Al LIVl C1,A2 L2 V2的值是否等于C2。如相等,恢复相关数据;如不相等,则不需要断电恢复。
[0047]如果断电保护内存缓冲区只有一组ALVC格式的断电数据恢复项,S卩如果不存在A2 L2 V2C2,则 CRC 计算 Al LI Vl 得 Cl。
[0048]最后进行恢复数据时,只要把A指定地址开始,L指定长度的数据,替换成V提供的新数据即可。具体如下:
[0049]根据断电保护内存缓冲区建立的ALVC格式的断电数据恢复项,将非易失性存储介质中断电保护区中从ALVC格式的断电数据恢复项中A项指定的地址开始,L项指定长度的数据,替换成V项提供的新数据。
[0050]以下通过一对比应用实例,来进一步说明本方案:
[0051]对比实例1,基于现有技术,没有断电保护内存缓冲区机制:
[0052]若芯片的擦写过程中断电后的非易失性存储介质性能不稳定(即:图2中标示的数据L2V2A2C2每次读取的数据可能不同)。在数据恢复时,首次读出来的L2V2A2C2数据是正确的,通过C2的鉴定为有效的断电数据恢复项;但是当第二次再来读取L2V2A2C2数据时由于不稳定A2变为其他数据,由于此时已经骗过了 C2的有效性检查,将导致系统把数据V2恢复到A2地址指定的错误位置,导致断电保护功能失败甚至系统崩溃。
[0053]参见图5,若芯片没有设定断电保护内存缓冲区机制,其在将数据03 56 78 9099 00 C2写入非易失性存储介质中的断电保护区时断电,此时由于芯片不稳定,99可能变成11。
[0054]如果首次计算时,非易失性存储介质中的断电保护区读出的数据为99,那么C2通过校验,开始恢复;但是恢复时再次读非易失性存储介质中的断电保护区,发现99变成11,这样造成将数据56 78 90写到地址0x1100,造成无法预计的影响。
[0055]对比实例2,基本方案在芯片中设置相应的断电保护内存缓冲区机制:
[0056]参见图6,需要把非易失性介质地址0x8800的前两个字节1234修改为00,00 ;非易失性介质地址0x9900的前3个字节567890修改为AA,AA。
[0057]修改之前,先根据非易失性介质地址0x8800和0x9900需要修改的数据依次一次性读入断电保护内存缓冲区,并在断电保护内存缓冲区建立相应的ALVC格式的断电数据恢复项,如图7所示(具体如上,此处不赘述)。
[0058]如果要进行数据的修改,需要先把断电保护内存缓冲区中的数据写入非易失性存储介质中的断电保护区,之后再修改地址0x8800,0x9900地址的数据。
[0059]如果修改过程发生断电,0x8800、0x9900处的数据可能发生混乱,此时可以通过把非易失性存储介质中的断电保护区的数据读取到断电保护内存缓冲区,进行进行CRC校验,判断C值是否和CRC计算结果一致进行恢复。
[0060]该过程中,通过断电保护内存缓冲区保证非易失性存储介质中的断电保护区的内容只读I次,之后用于断电恢复。
[0061]通过对比可知:
[0062]没有C(CRC)校验的断电保护方案,很难保证每一个断电数据恢复项的有效性。
[0063]旧的方案没有断电保护内存缓冲区的机制,数据恢复时反复读取非易失性存储介质中的断电数据恢复项。如果遇到断电后的非易失性存储介质性能不稳定的芯片,保护机制将会失效。
[0064]而本方案一次性把断电保护数据从非易失性存储介质中的断电数据恢复区读到断电保护内存缓冲区,从断电保护内存缓冲区做断电恢复,杜绝了非易失性存储介质性能不稳定对于断电保护方案的影响。
[0065]以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
【权利要求】
1.一种高可靠性断电保护方法,其特征在于,所述保护方法将存放于非易失性存储介质中的断电恢复信息依次一次性读入断电保护内存缓冲区,通过断电保护内存缓冲区做断电数据的恢复。
2.根据权利要求1所述的一种高可靠性断电保护方法,其特征在于,所述方法在RAM内存区指定一页大小的区间作为断电保护内存缓冲区。
3.根据权利要求2所述的一种高可靠性断电保护方法,其特征在于,所述方法中从非易失性存储介质中的断电保护区首地址依次读取一整页的数据存入断电保护内存缓冲区。
4.根据权利要求1至3中任一项所述的一种高可靠性断电保护方法,其特征在于,所述方法在断电保护内存缓冲区中采用ALVC格式的断电数据恢复项,其中A为断电数据恢复项中待恢复数据的首地址山为断电数据恢复项中待恢复数据V的长度;V为断电数据恢复项中待恢复数据;C为断电数据恢复项中待恢复数据的CRC校验值。
5.根据权利要求4所述的一种高可靠性断电保护方法,其特征在于,所述方法进行断电保护的过程如下: (1)读取非易失性存储介质中的断电保护区,把非易失性存储介质中的断电保护区的内容依次一次性读入到断电保护内存缓冲区,在断电保护内存缓冲区建立相应的ALVC格式的断电数据恢复项; (2)当发生断电后,首先判断非易失性存储介质中的断电保护区是否有恢复数据,若有则转入步骤(3)进行数据恢复;若没有,则不进行数据恢复; (3)根据断电保护内存缓冲区中的ALVC格式的断电数据恢复项进行CRC校验,若一致,则恢复相关数据;若不一致,不进行恢复。
6.根据权利要求5所述的一种高可靠性断电保护方法,其特征在于,恢复数据时,根据断电保护内存缓冲区建立的ALVC格式的断电数据恢复项,将非易失性存储介质中断电保护区中从ALVC格式的断电数据恢复项中A项指定的地址开始,L项指定长度的数据,替换成V项提供的新数据。
【文档编号】G06F12/16GK104199786SQ201410425708
【公开日】2014年12月10日 申请日期:2014年8月26日 优先权日:2014年8月26日
【发明者】王翔平, 沈勇坚, 胡永刚 申请人:上海动联信息技术股份有限公司