一种实现flash芯片数据安全的方法

文档序号:6554839阅读:171来源:国知局
专利名称:一种实现flash芯片数据安全的方法
技术领域
本发明涉及一种实现FLASH芯片数据安全的方法,特别是涉及一种在对物理扇区与逻辑扇区大小不一致的FLASH芯片进行写操作时实现数据安全的方法。
背景技术
FLASH芯片是一种常用的在掉电情况下依然能够保存数据的存储芯片,在嵌入式系统中应用得非常广泛。FLASH在物理介质上一般都是分扇区的,对FLASH的写操作都是以扇区为单位并且需要先擦除整个扇区,然后才能进行写操作,即,假设用户只需要写一个字节,也需要对整个扇区进行先擦后写的操作。对FLASH的写操作的步骤一般为首先获得目的地址所在扇区的数据,然后把扇区中目的区域的数据用待写的数据替代,这样就整合了老的数据和待写的数据,最后把整合后的数据再写入到FLASH。
上层(指应用层)应用对FLASH操作的最小单位称之为逻辑扇区,比如,逻辑扇区定为1K,那么即使你只需要存储一个字节的数据,也需要占用1K的空间。由于FLASH的存储容量一般较小,而物理扇区一般较大,如果逻辑扇区定义为和物理扇区一样大,就将使得FLASH的利用率过低。比如,FLASH的容量为512K,物理扇区为8K,如果逻辑扇区也定义为8K,那么该FLASH最大只能存放512K/8K=64个信息块,即,应用最多能够操作64个信息块,这很显然浪费了许多FLASH的空间,为了解决这个问题,可以将逻辑扇区定义的小一点,比如1K,那么应用就能操作512个信息块了,因此一般在应用中逻辑扇区都定义得比物理扇区小。
由于FLASH的读写数据较慢,而且是进行先擦后写的操作,因此如果在写的过程中发生掉电等异常,可能破坏了原来的数据,如果信息块较大,跨越了几个物理扇区时,可能部分丢失某个扇区的数据。

发明内容
本发明所要解决的技术问题在于提供一种实现FLASH芯片数据安全的方法,用于解决在系统出现掉电等异常情况时无法恢复物理扇区与逻辑扇区大小不一致的FLASH芯片数据的问题。
为了实现上述目的,本发明提供了一种实现FLASH芯片数据安全的方法,其特征在于,包括步骤一,将FLASH芯片划分为用于存放有效标志结构的标志区、备用区和主用区,该有效标志结构包含主用区有效标志字段、主用区地址字段、数据长度字段和备用区有效标志字段;步骤二,将所述主用区当前的数据和待写的数据整合后的数据写入所述备用区,并改写所述有效标志结构的字段设置;及步骤三,将所述备用区当前的数据和待写的数据整合后的数据写入所述主用区,并改写所述有效标志结构的字段设置。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤一中,所述备用区有效标志字段为所述有效标志结构的最后一个字段。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤二中,还包括一备份所述主用区数据所在扇区数据的步骤,具体为备份从所述主用区扇区的开始到所述主用区扇区的结束区域内的数据。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤二中的改写所述有效标志结构的字段设置步骤具体为将所述主用区有效标志字段填无效,所述主用区地址字段填主用区的数据所占的第一个扇区的起始地址,所述数据长度字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,所述备用区有效标志字段填有效。
所述的实现FLASH芯片数据安全的方法,其中,在所述步骤三之前还包括一判断所述主用区有效标志字段是否为无效的步骤。
所述的实现FLASH芯片数据安全的方法,其中,当所述主用区有效标志字段为无效时,还包括一判断所述备用区有效标志字段是否为有效的步骤,若为有效,则继续所述步骤三。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤三中,还包括一对所述主用区进行先擦除后写入的步骤。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤三中的将所述备用区当前的数据和待写的数据整合后的数据写入所述主用区的步骤又包括获取要写入数据至所述主用区的地址所在的扇区的数据;将该主用区的地址区域的数据替代为所述备用区中的数据,生成整合数据;写入所述整合数据至所述主用区。
所述的实现FLASH芯片数据安全的方法,其中,所述步骤三中的改写所述有效标志结构的字段设置步骤具体为将所述主用区有效标志字段填有效,所述主用区地址字段填主用区的数据所占的第一个扇区的起始地址,所述数据长度字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,所述备用区有效标志字段填无效。
所述的实现FLASH芯片数据安全的方法,其中,所述标志区为一个或多个物理扇区。
本发明是一种能够有效保证FLASH芯片数据安全的方法,该方法克服了现有技术对FLASH写操作存在的数据破坏的缺点,使得系统在出现掉电等异常情况时仍可恢复FLASH的数据。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图1为写FLASH芯片前的主用区的数据示意图;图2为写主用区扇区掉电时的主用区的数据示意图;图3为写主用区扇区掉电时的备用区的数据示意图;图4为写主用区扇区掉电恢复后的主用区的数据示意图;图5为本发明操作FLASH芯片前备份主用区所有数据后的备用区的数据示意图;图6为本发明实现FLASH芯片数据安全的方法流程示意图;图7为本发明实现数据安全性算法的流程示意图;
图8为本发明当发生异常时实现数据恢复的流程示意图。
具体实施例方式
请参阅图6所示,为本发明实现FLASH芯片数据安全的方法流程示意图,并结合图1-图5。图1描述了写FLASH芯片前的主用区的数据;图2描述了写主用区扇区掉电时的主用区的数据;图3描述了写主用区扇区掉电时的备用区的数据;图4描述了写主用区扇区掉电恢复后的主用区的数据;图5描述了本发明操作FLASH芯片前备份主用区所有数据后的备用区的数据。本发明的方法流程具体包括如下步骤步骤601,将FLASH划分为标志区、备用区和主用区;具体地,在FLASH中留出一个或多个物理扇区来存放有效标志结构,该物理扇区可称为标志区;留出一个足够大的区域作为备用区;剩下的区域作为主用区。
划出一个或多个扇区来保存有效标志结构的原因在于如果将有效标志和数据放在同一个物理扇区中,当发生掉电等异常时候为刚写完有效标志结构时,将会导致数据不能恢复或恢复错误。因为此时有效标志是正常的,而数据是破坏的,这样在恢复数据时将导致恢复错误的数据。
有效标志结构包含主用区有效标志、主用区地址、数据长度和备用区有效标志等几个字段。
其中“备用区有效标志”字段是有效标志结构的最后一个字段,这样设置避免了当在写备用区的有效标志结构时发生掉电等异常时导致数据恢复的错误。如果“备用区有效标志”字段不是有效标志结构的最后一个字段,假如最后一个字段是“数据长度”字段,那么当掉电发生在刚刚写完“备用区有效标志”字段时,此时“备用区有效标志”字段有效,但“数据长度”字段是非法值,这将导致数据恢复错误。
其中,当主用区的数据出现异常时,此时就需要通过备用区的数据来恢复主用区的数据,通过字段主用区地址可确定主用区的地址;字段数据长度则用于确定主用区需要恢复的数据的长度。
步骤602,将数据写入备用区,即,将主用区当前的数据和待写的数据整合后的数据写入备用区;备用区的数据是主用区数据所在扇区的所有数据,而不仅仅是备份待写入的数据,从而避免掉电时数据不能完全恢复。
备用区的数据为备份主用区数据所在扇区的所有数据。假设主用区扇区的当前的数据如图1所示,若要改写的数据是数据1,如果仅仅是备份了数据1,而数据2没有备份,如果刚好擦除了主用区扇区时就发生了掉电,此时主用区的数据为全无效,主用区的数据如图2所示,但因只备份了数据1,而没有备份数据2,备用区的数据如图3所示,如果需要数据恢复就只能恢复数据1,恢复后的主用区的数据如图4所示,丢失了数据2,而这是不允许的。如果在备用区备份了主用区扇区的所有数据就可以避免上述问题。
备份主用区扇区的所有数据后的备用区如图5所示,如果发生掉电能够恢复所有的数据。备份主用区所在扇区的所有数据的方法是备份从主用区扇区的开始到主用区扇区的结束的区域内的所有数据。
步骤603,改写有效标志结构,将“主用区有效标志”字段填无效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填有效。
在每次对FLASH进行操作或系统复位的时候都要判断该有效标志结构,如果备用区有效,则把备用区的数据恢复到主用区。
a)在系统重启初始化时要检测所有的备用区是否有效,如果有效,就把备用区的数据回写到主用区,同时把备用区置为无效。
b)在每次写FLASH的时候都要检测备用区是否有效,如果有效,就把备用区的数据回写到主用区。
经过上面的操作能够保证每次在对FLASH操作前,FLASH的数据都是有效的。
步骤604,将数据写入主用区,即,将备用区当前的数据和待写的数据整合后的数据写入主用区;该步骤具体为首先获得目的地址所在的扇区的数据,该目的地址为要写入数据的主用区的地址;然后把主用区扇区中待写入的目的地址区域的数据用待写的数据替代,这样就整合了老的数据和待写的数据,生成整合数据,最后把整合数据再写入到FLASH的主用区。
步骤605,改写有效标志结构,将“主用区有效标志”字段填有效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填无效。
如果步骤605成功完成,那么就结束了FLASH芯片的本次写操作。
采用以上步骤,有效保证了FLASH芯片的数据安全性,使得在出现掉电等异常时FLASH的数据仍是有效的或者数据可恢复的;在上述任一步骤发生掉电等异常情况时,数据都是可恢复的。若掉电等异常情况发生在步骤602,那么这时备用区的数据是无效的,有效标志结构的“主用区有效标志”字段仍然是有效,即以主用区的数据为准,主用区的数据是有效的;若掉电等异常情况发生在步骤603,那么这时备用区的数据是有效的,有效标志结构的“主用区有效标志”字段仍然是有效,主用区的数据是有效的;若掉电等异常情况发生在步骤604,那么这时备用区的数据是有效的,有效标志结构的“主用区有效标志”字段为无效,“备用区有效标志”字段置为有效,即以备用区的数据为准,数据恢复后主用区的数据是有效的。
请参阅图7所示,为本发明实现数据安全性算法的流程示意图;结合图6,该算法流程具体包括如下步骤步骤701,开始;步骤702,把数据写入备用区,即,将主用区当前的数据和待写的数据整合后的数据写入备用区;步骤703,改写有效标志结构,“主用区有效标志”字段填无效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填有效;步骤704,把数据写入主用区,即,将备用区当前的数据和待写的数据整合后的数据写入主用区;步骤705,改写有效标志结构,“主用区有效标志”字段填有效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填无效;步骤706,结束。
请参阅图8所示,为本发明当发生异常时实现数据恢复的流程示意图。结合图6,该流程具体包括如下步骤步骤801,开始;步骤802,判断“主用区有效标志”字段是否为无效,若无效,继续步骤803,若有效,转至步骤806;步骤803,判断“备用区有效标志”字段是否为有效,若有效,继续步骤804,若无效,转至步骤806;步骤804,把数据回写到主用区,即,将备用区当前的数据和待写的数据整合后的数据写入主用区;步骤805,修改有效标志结构,“主用区有效标志”字段填有效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填无效;步骤806,结束。
下面以传输设备中系统应用部分对FLASH芯片的写操作来对本发明作进一步的详细说明。
从网管上对传输设备的一些设置参数一般保存在FLASH芯片中,假设保存这些设置参数的FLASH芯片为512K,物理扇区为4K,逻辑扇区为256个字节。在一个物理扇区内存在2种设置参数的信息,分别分布在不同的逻辑扇区内。假设这2个设置参数分别是“设置同步定时源”和“设置外时钟位置”。并假设当前进行的是“设置同步定时源”操作。对FLASH芯片的写操作实现的过程具体如下(1),先将数据写到备用区(即将主用区当前的数据和待写的数据整合后的数据写入备用区),备用区的数据是主用区数据所在扇区的所有数据。
当系统收到网管的“设置同步定时源”命令时,需要把设置的数据保存到FLASH。这时备用区备份了“设置同步定时源”和“设置外时钟位置”两个命令的设置参数,如果这时发生异常,异常恢复后数据以主用区的数据为准,不会发生数据异常。
(2),改写有效标志结构,将“主用区有效标志”字段填无效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填有效。
这时备用区已经成功的备份了主用区的“设置同步定时源”和“设置外时钟位置”两个命令的设置参数,如果这时发生异常,异常恢复后数据以主用区的数据为准,因为还没有对主用区数据进行操作,所以不会发生数据异常。
(3),将数据写入到主用区(即将备用区当前的数据和待写的数据整合后的数据写入主用区)。
这时对主用区进行操作先擦除后写入。如果这时发生异常,主用区的“设置同步定时源”和“设置外时钟位置”两个命令的设置参数可能都是错误的数据,有效标志结构中的“备用区有效标志”字段已经设置为有效,所以异常恢复后数据以备用区的数据为准,并把备用区数据恢复到主用区,因为备用区把主用区的所有数据都进行了备份,所以不会发生数据异常。
(4),改写有效标志结构,将“主用区有效标志”字段填有效,“主用区地址”字段填主用区的数据所占的第一个扇区的起始地址,“数据长度”字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,“备用区有效标志”字段填无效。
如果这时发生异常,主用区的“设置同步定时源”和“设置外时钟位置”两个命令的设置参数已经是正常的数据,不会发生数据异常。
完成上述过程后,在上述任何一步中系统发生异常,数据都是可以恢复的,从而实现了当FLASH的物理扇区和逻辑扇区不一致时也能保证数据是安全的目的。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种实现FLASH芯片数据安全的方法,其特征在于,包括步骤一,将FLASH芯片划分为用于存放有效标志结构的标志区、备用区和主用区,该有效标志结构包含主用区有效标志字段、主用区地址字段、数据长度字段和备用区有效标志字段;步骤二,将所述主用区当前的数据和待写的数据整合后的数据写入所述备用区,并改写所述有效标志结构的字段设置;及步骤三,将所述备用区当前的数据和待写的数据整合后的数据写入所述主用区,并改写所述有效标志结构的字段设置。
2.根据权利要求1所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤一中,所述备用区有效标志字段为所述有效标志结构的最后一个字段。
3.根据权利要求1所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤二中,还包括一备份所述主用区数据所在扇区数据的步骤,具体为备份从所述主用区扇区的开始到所述主用区扇区的结束区域内的数据。
4.根据权利要求1所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤二中的改写所述有效标志结构的字段设置步骤具体为将所述主用区有效标志字段填无效,所述主用区地址字段填主用区的数据所占的第一个扇区的起始地址,所述数据长度字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,所述备用区有效标志字段填有效。
5.根据权利要求1、2、3或4所述的实现FLASH芯片数据安全的方法,其特征在于,在所述步骤三之前还包括一判断所述主用区有效标志字段是否为无效的步骤。
6.根据权利要求5所述的实现FLASH芯片数据安全的方法,其特征在于,当所述主用区有效标志字段为无效时,还包括一判断所述备用区有效标志字段是否为有效的步骤,若为有效,则继续所述步骤三。
7.根据权利要求1、2、3或4所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤三中,还包括一对所述主用区进行先擦除后写入的步骤。
8.根据权利要求1、2、3或4所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤三中的将所述备用区当前的数据和待写的数据整合后的数据写入所述主用区的步骤又包括获取要写入数据至所述主用区的地址所在的扇区的数据;将该主用区的地址区域的数据替代为所述备用区中的数据,生成整合数据;及写入所述整合数据至所述主用区。
9.根据权利要求1、2、3或4所述的实现FLASH芯片数据安全的方法,其特征在于,所述步骤三中的改写所述有效标志结构的字段设置步骤具体为将所述主用区有效标志字段填有效,所述主用区地址字段填主用区的数据所占的第一个扇区的起始地址,所述数据长度字段填主用区的数据所占的最后一个扇区的下一个扇区的起始地址减去主用区的数据所占的第一个扇区的起始地址,所述备用区有效标志字段填无效。
10.根据权利要求1、2、3或4所述的实现FLASH芯片数据安全的方法,其特征在于,所述标志区为一个或多个物理扇区。
全文摘要
本发明公开了一种实现FLASH芯片数据安全的方法,其特征在于,包括步骤一,将FLASH芯片划分为用于存放有效标志结构的标志区、备用区和主用区,该有效标志结构包含主用区有效标志字段、主用区地址字段、数据长度字段和备用区有效标志字段;步骤二,将主用区当前的数据和待写的数据整合后的数据写入备用区,并改写有效标志结构的字段设置;及步骤三,将所述备用区当前的数据和待写的数据整合后的数据写入所述主用区,并改写所述有效标志结构的字段设置。本发明是一种能够有效保证FLASH芯片数据安全的方法,该方法克服了现有技术对FLASH写操作存在的数据破坏的缺点,使得系统在出现掉电等异常情况时仍可恢复FLASH的数据。
文档编号G06F11/14GK101079010SQ200610011998
公开日2007年11月28日 申请日期2006年5月25日 优先权日2006年5月25日
发明者管冬根, 李小伟 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1