CN106227680A - 一种数据处理及防掉电数据保护方法 - Google Patents
一种数据处理及防掉电数据保护方法 Download PDFInfo
- Publication number
- CN106227680A CN106227680A CN201610593113.6A CN201610593113A CN106227680A CN 106227680 A CN106227680 A CN 106227680A CN 201610593113 A CN201610593113 A CN 201610593113A CN 106227680 A CN106227680 A CN 106227680A
- Authority
- CN
- China
- Prior art keywords
- data
- district
- segment
- flash
- ram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
Abstract
本发明涉及智能IC(集成电路)卡领域,尤其是一种数据处理及防掉电数据保护方法。本发明针对现有技术存在的问题,提供一种数据处理及防掉电数据保护方法,确保智能IC卡在突然掉电的情况下,通过掉电保护写和掉电恢复过程有序运行,对智能IC卡进行数据更新,实现完整的状态转换,从而实现完整的数据保护写与恢复过程。增强了智能卡对数据保护的能力。保证重要数据不会因为掉电而丢失,并且增强了智能IC卡使用寿命。
Description
技术领域
本发明涉及智能IC( 集成电路) 卡领域,尤其是一种数据处理及防掉电数据保护方法。
背景技术
智能IC 卡又称为IC 卡(Integrated Circuit Card/SMART card)。由于智能IC卡中集成了微处理器、存储单元以及芯片操作系统COS(Chip Operating System),从而构成一个完整的计算机系统。
近年来,智能卡越来越广泛地应用于金融、交通、电子商务、电子政务、通信、医疗保险和社会保险等行业,实现了网络支付、身份验证、保密存储和通信等功能。
智能卡的掉电保护功能是智能卡的一项很重要的性能指标,它代表一个智能卡在突然掉电的情况下对正在进行业务的数据保护能力的强弱。在应用中经常要进行数据的修改,如果在数据修改过程中掉电,例如突然断电或是误插拔了卡片或是意外抖动,那么,假设原有数据已被擦除,而要写入的数据还没有开始写或是未完全写入,这种情况下会造成数据的丢失;如果是重要数据的话会导致智能IC 卡无法完成正常的应用功能,造成废卡。
通常的掉电保护方法包括采用不间断电源(让整个系统在掉电时继续工作),或者采用备份电源(让数据在电源掉电时不丢失),但由于智能卡的特殊性,这些都不大可能在智能卡中实现,而只能利用智能卡自身的资源采用软硬件结合方式来实现掉电保护功能:在进行数据存储时,智能卡内部对原数据、新数据按步骤一边进行备份、一边进行写操作,如果没有掉电发生则正常写入,如果有掉电发生则重新上电后,软件检测掉电备份区中的信息,接着掉电前的步骤将备份区的数据继续写入。
发明内容
本发明所要解决的技术问题是:针对现有技术存在的问题,提供一种数据处理及防掉电数据保护方法,通过掉电保护写(为避免掉电时数据丢失而进行的正常写操作)和掉电恢复(重新上电后,接着掉电前的正常写操作而进行的工作)过程有序运行,确保智能IC卡在突然掉电等情况下,依然能够对智能IC卡进行数据更新,实现完整的状态转换,从而实现完整的数据保护写与恢复过程。增强了智能卡对数据保护的能力。保证重要数据不会因为掉电而丢失,并且增强了智能IC卡使用寿命。同时通过三个FLASH及两个RAM配合完成在完全不掉电情况下数据的更新,其中一次数据更新包含上述两种状态转换,状态转换可能由掉电保护写单独完成,也可能由掉电保护写(完成部分状态转换)和掉电恢复一起完成(剩余部分状态转换),实现完整的状态转换,从而实现完整的数据保护写与恢复过程。
本发明采用的技术方案如下:
一种数据处理方法包括:
步骤1:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,判断是否n段的用户数据段已经写完;如果不是,则继续将剩余用户数据段写入RAM;如果是,则将第一FLASH区数据擦除,将第一RAM区的i个数据除总标志外写入第一FLASH区;i∈(1,n);
步骤2,当第一RAM区的第i段数据除总标志外写入第一FLASH区后;
步骤3:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,通过第一RAM区、第二RAM区进行数据更新,然后将数据存入目的FLASH区;
步骤4:判断是否所有的用户数据段已经写完,如果不是,则令i=i+1,转步骤1;否则, n段的所有数据全部更新完毕,结束写操作;
进一步的,所述步骤1具体包括:
步骤11:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,即将用户数据长度、数据的地址及具体数据对应写入第一RAM区数据段长度、目的地址及数据;RAM数据结构格式依次包括总段数区、n个数据段;其中数据段依次包括长度区、目的地址区以及数据区;n个数据段依次收尾相接;RAM数据结构格式与第一FLASH区的数据结构格式对应相同;
步骤12:计算写入第一RAM区的数据总段数,并将该总段数值n写入第一RAM区的数据头区的总段数区,判断是否n段的用户数据段已经写完,如果不是,则转步骤1,令n=n+1;如果是,则将第一FLASH区数据擦除,将第一RAM区的第i个数据写入第一FLASH区;i∈(1,n)。
进一步的,所述步骤3具体包括:
步骤31:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,用第一RAM区第i段数据的数据更新第二RAM区对应地址的第i个数据;
步骤32:擦除第二FLASH区所有数据,将第二RAM区的所有数据写入第二FLASH区;
步骤33:擦除目的FLASH区150所有数据,将第二RAM区120的所有数据写入目的FLASH区。
进一步的,所述FLASH区130的空间大小计算方法:假定N为数据总段数,字节数Z为空间大小,Ln为第n段数据的长度,则字节数Z=1+1+p*N+L1+…+LN;显然由于每个数据段的附加信息会占用p个字节,则对于给定的空间大小,当只有一个数据段时,能够存储的用户数据最多,p∈(4,7)。
一种防掉电数据保护方法包括:
步骤1:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,判断是否n段的用户数据段已经写完;如果不是,则继续将剩余用户数据段写入RAM;如果是,则将第一FLASH区数据擦除,将第一RAM区的i个数据除总标志外写入第一FLASH区,将第一FLASH区中总标志位设置为0XFF,若此时依然没有掉电,则转步骤2;否则,前面任意时刻掉电,执行步骤5;i∈(1,n);
步骤2,当第一RAM区的第i段数据除总标志外写入第一FLASH区后,将第一FLASH区的总标志区的总标志修改为0xAA,若没有掉电,则转步骤3;否则,转步骤5;
步骤3:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,通过第一RAM区、第二RAM区进行数据更新,然后将数据存入第二FLASH区,再写入目的FLASH区;若写操作过程中没有掉电,转步骤4;否则,转步骤5;
步骤4:判断是否所有的用户数据段已经写完,如果不是,则令i=i+1,转步骤1;否则, n段的所有数据全部更新完毕,第一FLASH区的总标志修改为0x00,结束写操作;
步骤5:在重新上电之前,第一FLASH区、第二FLASH区和目的FLASH区保持掉电时的状态,在重新上电之后,系统运行,开始解析第一FlASH区中总标志位,以及当前段数据中段标志,进行数据恢复。
进一步的,所述步骤1具体包括:
步骤11:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,即将用户数据长度、数据的地址及具体数据对应写入第一RAM区数据段长度、目的地址及数据,若没有掉电,则转步骤12;否则,前面任意时刻掉电,执行步骤5; RAM数据结构格式依次包括总标志区、总段数区、n个数据段;其中数据段依次包括长度区、段标志区、目的地址区以及数据区;n个数据段依次收尾相接;RAM数据结构格式与第一FLASH区的数据结构格式对应相同;
步骤12:计算写入第一RAM区的数据总段数,并将该总段数值n写入第一RAM区的数据头区的总段数区, n个数据段的段标志全部设置为0xFF;判断是否n段的用户数据段已经写完,如果不是,则转步骤1,令n=n+1;如果是,则将第一FLASH区数据擦除,将第一RAM区的第i个数据除总标志外写入第一FLASH区,将第一FLASH区中总标志位设置为0XFF,若系统没有掉电,则转步骤2;否则,前面任意时刻掉电,执行步骤8;i∈(1,n)。
进一步的,所述步骤3具体包括:
步骤31:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,此时第i段用户数据的段标志为0xFF,用第一RAM区第i段数据的数据更新第二RAM区对应地址的第i个数据,若没有掉电,则转步骤31;否则,前面任意时刻掉电,执行步骤5;
步骤32:擦除第二FLASH区所有数据,将第二RAM区的所有数据写入第二FLASH区,将第一FLASH第i段数据的段标志修改为0xFE,若没有掉电,则转步骤33;否则,执行步骤5;
步骤33:擦除目的FLASH区150所有数据,将第二RAM区120的所有数据写入目的FLASH区,将第一FLASH当前数据段的段标志修改为0x00,若没有掉电,则转步骤4;否则,执行步骤5。
进一步的,所述步骤5具体包括:
步骤51:在重新上电之前,第一FLASH区、第二FLASH区和目的FLASH区保持掉电时的状态,在重新上电之后,系统运行,开始读取第一FLASH区数头区及数据段到第一RAM区,解析第一RAM区数头区及数据段中总标志及当前数据段中的段标志,转步骤52:
步骤52:判断第一RAM区里数据头的总标志是否是0xFF或0x00,如果是,则不需要掉电恢复,转步骤59;否则,总标志位只能是0xAA,需要进行掉电恢复操作,转步骤53;
步骤53:依次判断第一RAM区的m个数据段的段标志是否是0xFF,如果某一个段标志不是0xFF,则说明从0xFF到0xFE到0x00操作的某个过程中发生了掉电,转步骤54;否则,则说明从0xFF到0xFE操作的过程中发生了掉电,需要进行掉电恢复操作,转步骤55;m小于等于n;
步骤54:判断第一RAM区的数据段的段标志是否是0xFE,如果第m段标志不是0xFE,则说明该标志为0x00,即在本段数据的操作过程完成后,才发生掉电,本段数据不需要恢复,转步骤58;否则,则说明从0xFE向0x00操作的过程中发生了掉电,需要进行掉电恢复操作,读取第二FLASH区数据到第二RAM区,转步骤56的擦除目的FLASH区步骤 ;
步骤55:根据第一RAM区110段数据的目的地址,从该目的FLASH区读取该块FLASH数据到第二RAM区,用第一RAM区段数据的数据更新第二RAM区120对应地址的数据,擦除第二FLASH区,将第二RAM区的所有数据写入第二FLASH区;将段标志0xFE写入第一FLASH区的数据段的段标志区;步骤56:擦除目的FLASH区;将第二RAM区的所有数据写入目的FLASH区;
步骤57:将段标志0x00写入第一FLASH区的数据段的段标志区,转步骤58;
步骤58:判断是否所有的数据段已经写完,如果不是则转步骤53,操作下一个数据段,直到所有段的数据全部更新完毕;如果已经写完,则转步骤59;
步骤59:将总标志0x00写入第一FLASH区的数据头区的总标志区,本次掉电恢复结束,退出掉电恢复流程。
进一步的,所述FLASH区130的空间大小计算方法:假定N为数据总段数,字节数Z为空间大小,Ln为第n段数据的长度,则字节数Z=1+1+p*N+L1+…+LN;显然由于每个数据段的附加信息会占用p个字节,则对于给定的空间大小,当只有一个数据段时,能够存储的用户数据最多,p∈(4,7)。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
总标志状态转换从初始态0xFF开始、历经中间状态0xAA到结束态0x00停止;段标志状态转换从初始态0xFF开始、历经中间状态0xFE到结束态0x00停止,上述两种状态转换用来确保掉电保护写(指为了避免掉电时数据丢失而进行的正常写操作,不是指掉电时进行的操作,掉电时,系统已不能进行任何工作)和掉电恢复过程(重新上电后,接着掉电前的正常写操作而进行的工作)有序运行,一次数据更新包含上述两种状态转换,状态转换可能由掉电保护写单独完成,也可能由掉电保护写(完成部分状态转换)和掉电恢复一起完成(剩余部分状态转换),实现完整的状态转换,从而实现完整的数据保护写与恢复过程。
本发明巧妙地利用智能IC 卡自身的资源,采用软硬件结合的方式,不但有效地实现了掉电保护功能,保证了数据的有效性,避免由于数据失效导致的智能卡损坏,延长了智能IC 卡的使用寿命,而且由于是将用户的多次数据更新操作在第一RAM区中组织好后一次性写入第一FLASH区(备份区),有效的减少了备份次数和时间,同时FLASH的擦写次数也被有效的减少,进一步延长了智能IC 卡的使用寿命。
有效地增强智能卡的抗干扰能力,同时提高智能卡的使用寿命。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1 是本发明的是系统结构示意图;
图2 是本发明的第一RAM区和第一FLASH区数据结构示意图;
图3 是本发明的第一RAM区和第一FLASH区数据空间使用实例示意图;
图4 是本发明的掉电保护过程中的状态转换示意图;
图5 是本发明的掉电恢复过程中的状态转换示意图;
图6 是本发明的掉电保护过程中的操作示意图;
图7 是本发明的掉电恢复过程中的操作示意图。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明相关说明:
1、对于RAM而言,可以直接修改其中任意字节的数据为任意值,比如修改0x00为0x55,修改0x55为0xFF,修改0xFF为0x00;
对于FLASH而言,只能修改其中的数据1为0,比如修改0xFF为0x05,修改0x05为0x00或者0x01或者0x04,不能直接修改数据0为1,比如修改0x00为0x01,只能进行擦除操作,才能将数据0修改1,而擦除操作不能按字节进行,只能按照块进行擦除,一般擦除块为256字节;
所以,不管是更新其中的一个字节还是更新全部256字节,都必须读出全部256字节到RAM,将对应位置(可以是1个字节,也可以是多个或者是全部256字节)的数据更新为用户要更新的数据,擦除全部256字节的老数据,将新的256字节重新写入;由于掉电时RAM数据会丢失,而掉电可能发生在任意时刻,比如在擦FLASH过程中或者写新数据到FLASH过程中,那么不但来自用户的新数据丢失,连FLASH中的老数据也会丢失,从而对用户系统产生不可预知的影响,甚至导致系统崩溃。
1、本发明系统包括:
1)本发明包括第一RAM区、第二RAM区、第一FLASH区、第二FLASH区和目的FLASH区;各区的作用如下:
来自用户的数据最终是需要更新到目的FLASH区;
第一RAM区、第二RAM区、第一FLASH区、第二FLASH区都是用来存储中间过程数据的缓存区;
第一RAM区:将来自用户的数据按照特定的格式处理并存储,掉电时数据会丢失;
第一FLASH区:直接存储第一RAM区的数据,掉电时数据不会丢失;
第二RAM区:存储目的FLASH区的老数据并用用户数据替换需要更新的老数据,掉电时数据会丢失;
第二FLASH区:直接存储第二RAM区的数据,掉电时数据不会丢失;
目的FLASH区:用户的数据需要更新的区域,掉电时数据不会丢失;
第一RAM区110或者第一FLASH区130的空间大小可以根据实际应用来确定,根据图2的数据结构,可以得到以下计算方法:假定N为数据总段数,Z为空间大小(字节数),Ln为第n段数据的长度,则Z(字节数)=1+1+6*N+L1+…+LN。显然由于每个数据段的附加信息会占用6个字节,则对于给定的空间大小,当只有一个数据段时,能够存储的用户数据最多,如图3的310所示;当每段数据的数据长度为一个字节时,能够存储的数据段数最多,如图3的320所示。举例说明:当数据段为1时,Z=2+6+L1,假如用户需要单次写入的数据最长为L1=200字节,则Z=208,此时数据段最多为208=2+6*N+1*N,即N=29。
第二RAM区120和第二FLASH区140的空间大小可以由第一RAM区110或第一FLASH区130的空间大小来决定,由于第二RAM区120和第二FLASH区140只有数据没有其他任何附加信息,所以需要大于第一RAM区110(或者第一FLASH区130)数据的最大长度,同时由于FLASH是按照块来操作的(比如一个FLASH块为256字节),所以需要对齐块大小,则可以设定第二RAM区和第二FLASH区的大小分别为256字节。
2)包含如下数据结构:数据头区:包括总标志,数据总段数;数据区:以数据段来进行数据存储。每个数据段的结构:包括数据段长度,数据段标志,目的FLASH地址以及具体数据。
3)包含如下两个状态标志:总标志和数据段标志。用来确保智能卡在掉电之后能够知道掉电发生在什么阶段:
11) 总标志位于第一RAM区110和第一FLASH区130的数据头区210,该标志表示掉电保护写过程中,所有数据段的总体进行状态;包括以下三种状态:(1)初始状态:0xFF,(2)中间状态:0xAA,(3)最终状态:0x00;
12) 数据段标志位于第一RAM区110和第一FLASH区130的数据头区210,该标志表示掉电保护写过程中,每段数据段各自的进行状态,包括以下四种状态:(1)初始状态:0xFF,(2)中间状态:0xFE,(3)最终状态:0x00。
4)包含两种状态转换:
11 )总标志状态转换从初始态0xFF开始、历经中间状态0xAA、到结束态0x00停止;
12 )段标志状态转换从初始态0xFF开始、历经中间状态0xFE到结束态0x00停止。
上述两种状态转换用来确保掉电保护写和掉电恢复过程有序运行,一次数据更新包含上述两种状态转换,状态转换可能由掉电保护写单独完成,也可能由掉电保护写(完成部分状态转换)和掉电恢复一起完成(剩余部分状态转换),实现完整的状态转换,从而实现完整的数据保护写与恢复过程。
5)本发明设计思路是:在数据存储过程中,若发生掉电情况,在重新上电后,由于在掉电保护写时掉电的时间不一样,所以掉电时的结束状态不一样,重新上电后,掉电恢复过程中初始状态也不一样,所进行的恢复操作也不一样。发生掉电时,目的FLASH数据的正确性是不能保证的,但是重新上电后,会自动进入掉电恢复过程,掉电恢复过程会根据掉电时的状态标志继续掉电前的操作进行掉电恢复,掉电恢复完成后,数据就是掉电时用户更新的数据,是可靠的。
具体实施例:
本发明方法中掉电保护写具体包括:
步骤1:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,即将用户数据长度、数据的地址及具体数据对应写入第一RAM区数据段长度、目的地址及数据,若此时依然没有掉电,则转步骤2;否则,前面任意时刻掉电,执行步骤8; RAM数据结构格式依次包括总标志区、总段数区、n个数据段;其中数据段依次包括长度区、段标志区、目的地址区以及数据区;n个数据段依次收尾相接;RAM数据结构格式与第一FLASH区的数据结构格式对应相同;
步骤2:计算写入第一RAM区的数据总段数,并将该总段数值n写入第一RAM区的数据头区的总段数区,n个数据段的段标志全部设置为0xFF;判断是否n段的用户数据段已经写完,如果不是,则转步骤1,令n=n+1;如果是,则将第一FLASH区数据擦除,将第一FLASH区中总标志位设置为0xFF,将第一RAM区的第i个数据除总标志外写入第一FLASH区,若没有掉电,则转步骤3;否则,前面任意时刻掉电,执行步骤8;i∈(1,n);
步骤3,当第一RAM区的第i段数据除总标志外写入第一FLASH区后,将第一FLASH区的总标志区的总标志修改为0xAA,若没有掉电,则转步骤4;否则,前面任意时刻掉电,执行步骤8;
步骤4:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,此时第i段用户数据的段标志为0xFF,用第一RAM区第i段数据的数据更新第二RAM区120对应地址的第i个数据,若没有掉电,则转步骤5;否则,前面任意时刻掉电,执行步骤8;
步骤5:擦除第二FLASH区所有数据,将第二RAM区的所有数据写入第二FLASH区,将第一FLASH第i段数据的段标志修改为0xFE,,若没有掉电,则转步骤6;否则,前面任意时刻掉电,执行步骤8;
步骤6:擦除目的FLASH区150所有数据,将第二RAM区120的所有数据写入目的FLASH区,将第一FLASH当前数据段的段标志修改为0x00,若没有掉电,则转步骤7;否则,前面任意时刻掉电,执行步骤8;
步骤7:判断是否所有的用户数据段已经写完,如果不是,则令i=i+1,转步骤4;否则, n段的所有数据全部更新完毕,第一FLASH区的总标志修改为0x00,结束;
步骤8:在重新上电之前,第一FLASH区、第二FLASH区和目的FLASH区保持掉电时的状态,在重新上电之后,系统运行,开始解析第一FlASH区中总标志位,以及当前段数据中段标志,进行数据恢复,具体过程是:
步骤81:读取第一FLASH区数头区及数据段到第一RAM区,解析数头区及数据段中总标志及当前数据段中的段标志,转步骤82:
步骤82:判断第一RAM区里数据头的总标志是否是0xFF,如果是,则说明掉电时还没有进行掉电保护写操作,则不需要掉电恢复,转步骤89;如果不是0xFF,则判断第一FLASH区总标志是否是0x00,如果是,则说明掉电时已经完成掉电保护写操作,则不需要掉电恢复,转步骤89;如果不是0x00,则说明是0xAA,那么用户数据已经存储在第一FLASH区,且在后续操作过程中,发生了掉电导致后续操作未完成,则需要进行掉电恢复操作,转步骤83;
步骤83:依次判断第一RAM区的第m数据段的段标志是否是0xFF,如果某一个段标志不是0xFF,则说明从0xFF到0xFE到0x00操作的某个过程中发生了掉电,转步骤84;否则,则说明从0xFF到0xFE操作的过程中发生了掉电,需要进行掉电恢复操作,转步骤85;m小于等于n;
步骤84:判断第一RAM区的数据段的段标志是否是0xFE,如果第m(说明:和前面的m对应,即一个段一个段地进行处理)段标志不是0xFE,则说明该标志为0x00,即在本段数据的操作过程完成后,才发生掉电,本段数据不需要恢复,转步骤88;否则,则说明从0xFE向0x00操作的过程中发生了掉电,需要进行掉电恢复操作,读取第二FLASH区数据到第二RAM区,转步骤86的擦除目的FLASH区步骤 ;
步骤85:根据第一RAM区110段数据的目的地址,从该目的FLASH区读取该块FLASH数据到第二RAM区,用第一RAM区段数据的数据更新第二RAM区120对应地址的数据,擦除第二FLASH区,将第二RAM区的所有数据写入第二FLASH区;将段标志0xFE写入第一FLASH区的数据段的段标志区;步骤86:擦除目的FLASH区;将第二RAM区的所有数据写入目的FLASH区;
步骤87:将段标志0x00写入第一FLASH区的数据段的段标志区,转步骤88;
步骤88:判断是否所有的数据段已经写完,如果不是则转步骤83,操作下一个数据段,直到所有段的数据全部更新完毕;如果已经写完,则转步骤89;
步骤89:将总标志0x00写入第一FLASH区的数据头区的总标志区,本次掉电恢复结束,退出掉电恢复流程。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
Claims (9)
1.一种数据处理方法,其特征在于包括:
步骤1:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,判断是否n段的用户数据段已经写完;如果不是,则继续将剩余用户数据段写入RAM;如果是,则将第一FLASH区数据擦除,将第一RAM区的i个数据除总标志外写入第一FLASH区;i∈(1,n);
步骤2,当第一RAM区的第i段数据除总标志外写入第一FLASH区后;
步骤3:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,通过第一RAM区、第二RAM区进行数据更新,先写入第二FLASH区,然后将数据存入目的FLASH区;
步骤4:判断是否所有的用户数据段已经写完,如果不是,则令i=i+1,转步骤1;否则, n段的所有数据全部更新完毕,结束写操作。
2.根据权利要求1所述的一种数据处理方法,其特征在于包括:
步骤11:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,即将用户数据长度、数据的地址及具体数据对应写入第一RAM区数据段长度、目的地址及数据;RAM数据结构格式依次包括总段数区、n个数据段;其中数据段依次包括长度区、目的地址区以及数据区;n个数据段依次收尾相接;RAM数据结构格式与第一FLASH区的数据结构格式对应相同;
步骤12:计算写入第一RAM区的数据总段数,并将该总段数值n写入第一RAM区的数据头区的总段数区,;判断是否n段的用户数据段已经写完,如果不是,则转步骤1,令n=n+1;如果是,则将第一FLASH区数据擦除,将第一RAM区的第i个数据写入第一FLASH区;i∈(1,n)。
3.根据权利要求1所述的一种数据处理方法,其特征在于所述步骤3具体包括:
步骤31:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,用第一RAM区第i段数据的数据更新第二RAM区对应地址的第i个数据;
步骤32:擦除第二FLASH区所有数据,将第二RAM区的所有数据写入第二FLASH区;
步骤33:擦除目的FLASH区150所有数据,将第二RAM区120的所有数据写入目的FLASH区。
4.根据权利要求1所述的一种一种数据处理方法,其特征在于FLASH区130的空间大小计算方法:假定N为数据总段数,字节数Z为空间大小,Ln为第n段数据的长度,则字节数Z=1+1+p*N+L1+…+LN;显然由于每个数据段的附加信息会占用p个字节,则对于给定的空间大小,当只有一个数据段时,能够存储的用户数据最多,p∈(4,7)。
5.一种防掉电数据保护方法,其特征在于包括:
步骤1:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,判断是否n段的用户数据段已经写完;如果不是,则继续将剩余用户数据段写入RAM;如果是,则将第一FLASH区数据擦除,将第一RAM区的i个数据除总标志外写入第一FLASH区,将第一FLASH区中总标志位设置为0XFF,若此时依然没有掉电,则转步骤2;否则,前面任意时刻掉电,执行步骤5;i∈(1,n);
步骤2,当第一RAM区的第i段数据除总标志外写入第一FLASH区后,将第一FLASH区的总标志区的总标志修改为0xAA,若没有掉电,则转步骤3;否则,转步骤5;
步骤3:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,通过第一RAM区、第二RAM区进行数据更新,然后将数据存入目的FLASH区,判断写操作过程中是否掉电,若没有掉电,转步骤4;否则,转步骤5;
步骤4:判断是否所有的用户数据段已经写完,如果不是,则令i=i+1,转步骤6;否则, n段的所有数据全部更新完毕,第一FLASH区的总标志修改为0x00,结束写操作;
步骤5:在重新上电之前,第一FLASH区、第二FLASH区和目的FLASH区保持掉电时的状态,在重新上电之后,系统运行,开始解析第一FlASH区中总标志位,以及当前段数据中段标志,进行数据恢复。
6.根据权利要求5所述的一种防掉电数据保护方法,其特征在于所述步骤1具体包括:
步骤11:在进行数据写操作时,先将用户数据按照RAM数据结构格式写入第一RAM区的数据段,即将用户数据长度、数据的地址及具体数据对应写入第一RAM区数据段长度、目的地址及数据,若没有掉电,则转步骤12;否则,前面任意时刻掉电,执行步骤5; RAM数据结构格式依次包括总标志区、总段数区、n个数据段;其中数据段依次包括长度区、段标志区、目的地址区以及数据区;n个数据段依次收尾相接;RAM数据结构格式与第一FLASH区的数据结构格式对应相同;
步骤12:计算写入第一RAM区的数据总段数,并将该总段数值n写入第一RAM区的数据头区的总段数区, n个数据段的段标志全部设置为0xFF;判断是否n段的用户数据段已经写完,如果不是,则转步骤1,令n=n+1;如果是,则将第一FLASH区数据擦除,将第一RAM区的第i个数据除总标志外写入第一FLASH区,将第一FLASH区中总标志位设置为0XFF,判断系统是否是否掉电,若没有掉电,则转步骤2;否则,前面任意时刻掉电,执行步骤8;i∈(1,n)。
7.根据权利要求6所述的一种防掉电数据保护方法,其特征在于所述步骤3具体包括:
步骤31:根据第一RAM区第i段数据的目的地址,从该地址对应的目的FLASH区中读取该块FLASH数据到第二RAM区,此时第i段用户数据的段标志为0xFF,用第一RAM区第i段数据的数据更新第二RAM区对应地址的第i个数据,若没有掉电,则转步骤31;否则,前面任意时刻掉电,执行步骤5;
步骤32:擦除第二FLASH区所有数据,将第二RAM区的所有数据写入第二FLASH区,将第一FLASH第i段数据的段标志修改为0xFE,若没有掉电,则转步骤33;否则,执行步骤5;
步骤33:擦除目的FLASH区150所有数据,将第二RAM区120的所有数据写入目的FLASH区,将第一FLASH当前数据段的段标志修改为0x00,若没有掉电,则转步骤4;否则,执行步骤5。
8.根据权利要求6或7所述的一种防掉电数据保护方法,其特征在于所述步骤5具体包括:
步骤51:在重新上电之前,第一FLASH区、第二FLASH区和目的FLASH区保持掉电时的状态,在重新上电之后,系统运行,开始读取第一FLASH区数头区及数据段到第一RAM区,解析第一RAM区数头区及数据段中总标志及当前数据段中的段标志,转步骤52:
步骤52:判断第一RAM区里数据头的总标志是否是0xFF或0x00,如果是,则不需要掉电恢复,转步骤59、否则,总标志位只能是0xAA,需要进行掉电恢复操作,转步骤53;
步骤53:依次判断第一RAM区的m个数据段的段标志是否是0xFF,如果某一个段标志不是0xFF,则说明从0xFF到0x00操作的某个过程中发生了掉电,转步骤54;否则,则说明从0xFF到0xFE操作的过程中发生了掉电,需要进行掉电恢复操作,转步骤56;m小于等于n;
步骤54:判断第一RAM区的数据段的段标志是否是0xFE,如果第m段标志不是0xFE,则说明该段标志为0x00操作的某个过程中发生了掉电,转步骤55;否则,则说明从0xFE向0x00,即在本段数据的操作过程完成后,才发生掉电,本段数据不需要恢复,转步骤58; 否则,则说明从0xFE向0x00操作的过程中发生了掉电,需要进行掉电恢复操作,读取第二FLASH区数据到第二RAM区,转步骤56的擦除目的FLASH区步骤;
步骤55,根据第一RAM区110段数据的目的地址,从该目的FLASH区读取该块FLASH数据到第二RAM区,用第一RAM区段数据的数据更新第二RAM区120对应地址的数据,擦除第二FLASH区,将第二RAM区的所有数据写入第二FLASH区;将段标志0xFE写入第一FLASH区的数据段的段标志区;步骤56:擦除目的FLASH区;将第二RAM区的所有数据写入目的FLASH区;
步骤57:将段标志0x00写入第一FLASH区的数据段的段标志区,转步骤58;
步骤58,判断是否所有的数据段已经写完,如果不是则转步骤53,操作下一个数据段,直到所有段的数据全部更新完毕;如果已经写完,则转步骤59;
步骤59,将总标志0x00写入第一FLASH区的数据头区的总标志区,本次掉电恢复结束,退出掉电恢复流程。
9.根据权利要求6所述的一种防掉电数据保护方法,其特征在于ASH区130的空间大小计算方法:假定N为数据总段数,字节数Z为空间大小,Ln为第n段数据的长度,则字节数Z=1+1+p*N+L1+…+LN;显然由于每个数据段的附加信息会占用p个字节,则对于给定的空间大小,当只有一个数据段时,能够存储的用户数据最多,p∈(4,7)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610593113.6A CN106227680B (zh) | 2016-07-26 | 2016-07-26 | 一种数据处理及防掉电数据保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610593113.6A CN106227680B (zh) | 2016-07-26 | 2016-07-26 | 一种数据处理及防掉电数据保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227680A true CN106227680A (zh) | 2016-12-14 |
CN106227680B CN106227680B (zh) | 2019-01-04 |
Family
ID=57532923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610593113.6A Active CN106227680B (zh) | 2016-07-26 | 2016-07-26 | 一种数据处理及防掉电数据保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227680B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648982A (zh) * | 2016-12-15 | 2017-05-10 | 宁波迦南智能电气股份有限公司 | 一种电能表掉电保护数据存贮方法 |
CN107729972A (zh) * | 2017-09-01 | 2018-02-23 | 捷德(中国)信息科技有限公司 | 一种智能ic卡的数据保护方法 |
CN108334286A (zh) * | 2018-01-29 | 2018-07-27 | 中国北方车辆研究所 | 一种高可靠性嵌入式软件数据防掉电方法及系统 |
CN108804036A (zh) * | 2018-05-24 | 2018-11-13 | 武汉华工正源光子技术有限公司 | 光模块中的数据处理方法、光模块及数据处理系统 |
CN109164293A (zh) * | 2018-07-10 | 2019-01-08 | 深圳市华宝新能源股份有限公司 | 一种市电掉电检测方法、电子设备、存储介质和储能系统 |
CN109254878A (zh) * | 2018-09-27 | 2019-01-22 | 北京中电华大电子设计有限责任公司 | 一种基于字写的智能卡掉电备份方法和数据结构 |
CN109685190A (zh) * | 2018-12-28 | 2019-04-26 | 江苏恒宝智能系统技术有限公司 | 一种ic卡掉电保护方法及装置 |
CN109947594A (zh) * | 2019-02-27 | 2019-06-28 | 武汉天喻信息产业股份有限公司 | 一种数据备份方法及装置、数据恢复方法及装置 |
CN111105563A (zh) * | 2019-12-17 | 2020-05-05 | 厦门计讯物联科技有限公司 | 防数据丢失的水卡数据写入方法、装置、设备及存储介质 |
CN113538754A (zh) * | 2021-06-08 | 2021-10-22 | 福建新大陆通信科技股份有限公司 | 一种ctid智能门锁授权数据管理方法及系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108491A1 (en) * | 2003-11-17 | 2005-05-19 | Micron Technology, Inc. | Method for testing flash memory power loss recovery |
CN1650271A (zh) * | 2002-04-29 | 2005-08-03 | 汤姆森特许公司 | 在断电状态下保持使能电可擦除可编程只读存储器的系统 |
US20050271369A1 (en) * | 2004-06-02 | 2005-12-08 | Funai Electric Co., Ltd. | DVD player and electronic device |
JP2007004237A (ja) * | 2005-06-21 | 2007-01-11 | Rinnai Corp | データバックアップ装置 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
CN102508723A (zh) * | 2011-09-28 | 2012-06-20 | 山东神思电子技术股份有限公司 | 一种面向ic卡的掉电保护方法 |
CN102609332A (zh) * | 2011-01-19 | 2012-07-25 | 上海华虹集成电路有限责任公司 | 智能ic卡数据防掉电保护方法 |
CN103150125A (zh) * | 2013-02-20 | 2013-06-12 | 郑州信大捷安信息技术股份有限公司 | 提高掉电保护数据缓冲存储器使用寿命的方法及智能卡 |
CN103268294A (zh) * | 2013-04-19 | 2013-08-28 | 深圳创维数字技术股份有限公司 | 一种存取数据的操作方法和数据处理设备 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
CN103914407A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
CN104317671A (zh) * | 2014-10-24 | 2015-01-28 | 杭州帅锐电子科技有限公司 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
US9003144B1 (en) * | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
-
2016
- 2016-07-26 CN CN201610593113.6A patent/CN106227680B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1650271A (zh) * | 2002-04-29 | 2005-08-03 | 汤姆森特许公司 | 在断电状态下保持使能电可擦除可编程只读存储器的系统 |
US20050108491A1 (en) * | 2003-11-17 | 2005-05-19 | Micron Technology, Inc. | Method for testing flash memory power loss recovery |
US20050271369A1 (en) * | 2004-06-02 | 2005-12-08 | Funai Electric Co., Ltd. | DVD player and electronic device |
JP2007004237A (ja) * | 2005-06-21 | 2007-01-11 | Rinnai Corp | データバックアップ装置 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
CN102609332A (zh) * | 2011-01-19 | 2012-07-25 | 上海华虹集成电路有限责任公司 | 智能ic卡数据防掉电保护方法 |
CN102508723A (zh) * | 2011-09-28 | 2012-06-20 | 山东神思电子技术股份有限公司 | 一种面向ic卡的掉电保护方法 |
CN103914407A (zh) * | 2012-12-30 | 2014-07-09 | 航天信息股份有限公司 | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 |
CN103150125A (zh) * | 2013-02-20 | 2013-06-12 | 郑州信大捷安信息技术股份有限公司 | 提高掉电保护数据缓冲存储器使用寿命的方法及智能卡 |
CN103268294A (zh) * | 2013-04-19 | 2013-08-28 | 深圳创维数字技术股份有限公司 | 一种存取数据的操作方法和数据处理设备 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
US9003144B1 (en) * | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
CN104317671A (zh) * | 2014-10-24 | 2015-01-28 | 杭州帅锐电子科技有限公司 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
Non-Patent Citations (2)
Title |
---|
张金霞 等: "基于FLASH的智能卡数据掉电保护机制设计", 《电子技术与软件工程》 * |
魏安全: "单片机系统RAM随机数据存储器数据的掉电保护技术", 《微型机与应用》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648982B (zh) * | 2016-12-15 | 2019-12-20 | 宁波迦南智能电气股份有限公司 | 一种电能表掉电保护数据存贮方法 |
CN106648982A (zh) * | 2016-12-15 | 2017-05-10 | 宁波迦南智能电气股份有限公司 | 一种电能表掉电保护数据存贮方法 |
CN107729972A (zh) * | 2017-09-01 | 2018-02-23 | 捷德(中国)信息科技有限公司 | 一种智能ic卡的数据保护方法 |
CN107729972B (zh) * | 2017-09-01 | 2020-09-08 | 捷德(中国)科技有限公司 | 一种智能ic卡的数据保护方法 |
CN108334286A (zh) * | 2018-01-29 | 2018-07-27 | 中国北方车辆研究所 | 一种高可靠性嵌入式软件数据防掉电方法及系统 |
CN108334286B (zh) * | 2018-01-29 | 2021-03-02 | 中国北方车辆研究所 | 一种高可靠性嵌入式软件数据防掉电方法及系统 |
CN108804036A (zh) * | 2018-05-24 | 2018-11-13 | 武汉华工正源光子技术有限公司 | 光模块中的数据处理方法、光模块及数据处理系统 |
CN109164293A (zh) * | 2018-07-10 | 2019-01-08 | 深圳市华宝新能源股份有限公司 | 一种市电掉电检测方法、电子设备、存储介质和储能系统 |
CN109254878A (zh) * | 2018-09-27 | 2019-01-22 | 北京中电华大电子设计有限责任公司 | 一种基于字写的智能卡掉电备份方法和数据结构 |
CN109254878B (zh) * | 2018-09-27 | 2021-09-17 | 北京中电华大电子设计有限责任公司 | 一种基于字写的智能卡掉电备份方法和数据结构 |
CN109685190A (zh) * | 2018-12-28 | 2019-04-26 | 江苏恒宝智能系统技术有限公司 | 一种ic卡掉电保护方法及装置 |
CN109685190B (zh) * | 2018-12-28 | 2022-04-12 | 江苏恒宝智能系统技术有限公司 | 一种ic卡掉电保护方法及装置 |
CN109947594A (zh) * | 2019-02-27 | 2019-06-28 | 武汉天喻信息产业股份有限公司 | 一种数据备份方法及装置、数据恢复方法及装置 |
CN109947594B (zh) * | 2019-02-27 | 2021-04-09 | 武汉天喻信息产业股份有限公司 | 一种数据备份方法及装置、数据恢复方法及装置 |
CN111105563A (zh) * | 2019-12-17 | 2020-05-05 | 厦门计讯物联科技有限公司 | 防数据丢失的水卡数据写入方法、装置、设备及存储介质 |
CN111105563B (zh) * | 2019-12-17 | 2021-08-24 | 厦门计讯物联科技有限公司 | 防数据丢失的水卡数据写入方法、装置、设备及存储介质 |
CN113538754A (zh) * | 2021-06-08 | 2021-10-22 | 福建新大陆通信科技股份有限公司 | 一种ctid智能门锁授权数据管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106227680B (zh) | 2019-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227680A (zh) | 一种数据处理及防掉电数据保护方法 | |
CN102081577B (zh) | 对Flash存储器的数据存储结构进行数据操作的方法 | |
US7694094B2 (en) | Transaction method for managing the storing of persistent data in a transaction stack | |
CN103914407B (zh) | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 | |
CN100576243C (zh) | 智能卡的数据写入方法 | |
CN103150125B (zh) | 提高掉电保护数据缓冲存储器使用寿命的方法及智能卡 | |
CN101251826B (zh) | 闪速存储器、用于闪速存储器的数据管理方法及设备 | |
US7725646B2 (en) | Method of using a flash memory for a circular buffer | |
CN113785275B (zh) | Flash数据掉电保护方法及设备 | |
CN101650972A (zh) | 智能卡的非易失性存储器数据更新方法 | |
US7017825B2 (en) | IC card and data processing method therefor | |
CN102609332A (zh) | 智能ic卡数据防掉电保护方法 | |
CN105892950A (zh) | 一种磁盘阵列的重建方法及系统 | |
CN102508723A (zh) | 一种面向ic卡的掉电保护方法 | |
CN105468544A (zh) | 实现防掉电文件系统的方法、装置以及防掉电文件系统 | |
CN103135735A (zh) | 一种掉电保护的控制方法及系统 | |
CN102981977A (zh) | 一种可延长flash使用寿命的数据存储方法 | |
CN105426268B (zh) | 一种防止继电保护装置断电时文件系统损坏的方法 | |
CN101526922B (zh) | 一种闪存的数据存取方法及装置 | |
CN100442317C (zh) | 税控收款机 | |
CN103744746A (zh) | 一种基于索引的智能卡记录备份与恢复方法 | |
CN107957921B (zh) | 一种均衡磨损的智能卡掉电数据保护方法 | |
CN107422987B (zh) | 一种在非易失性存储器中存储数据的方法及装置 | |
CN101694636B (zh) | 非易失性数据存储器数据更新备份系统及方法 | |
CN102789426B (zh) | 在非易失性存储器件中存储信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |