用于nor闪存的数据掉电保护方法

文档序号:6771239阅读:277来源:国知局
专利名称:用于nor闪存的数据掉电保护方法
技术领域
本发明涉及一种数据掉电保护方法,尤其涉及一种用于NOR闪存的数据掉电保护方法。
背景技术
闪存芯片是一种常用的在掉电情况下依然能够保存数据的存储芯片,在嵌入式系统中应用得非常广泛。目前的闪存主要分为NOR FLASH和NAND FLASH两种,两者都以块为单位进行擦除,但NOR FLASH能够以字节为单位进行写入,且其内数据可以直接读取。、
闪存在物理介质上一般都是分扇区的,对闪存的写操作都是以扇区为单位,并且需要先擦除整个扇区,然后才能进行写操作,即,假设用户只需要写一个字节,也需要对整个扇区进行先擦后写的操作。对闪存的写操作的步骤一般为首先获得目的地址所在扇区的数据,然后把扇区中目的区域的数据用待写的数据替代,这样就整合了老的数据和待写的数据,最后把整合的数据再写入到闪存。由于闪存的读写数据速度较慢,而且是进行先擦后写的操作,因此如果在写的过程中发生掉电等异常情况,可能破坏了原来的数据,如果信息块较大,跨越了几个物理扇区时,可能部分丢失某个扇区的数据,所以,解决掉电后数据恢复,即数据掉电保护问题是一个关键技术。闪存的擦除寿命有限,所以随着使用次数的增加,会有一些块逐渐变得不稳定或失败。因此,要尽量避免频繁地对同一块进行操作,以免造成闪存的提前损坏,即解决磨损均衡的问题也是一个关键;闪存存储器容量等资源有限,还要求代码能够尽量小一点。现有技术中,主要提供有两种方式实现对闪存存储器的掉电保护读写,一种是对闪存的某一块进行修改时,通常不直接对该块进行操作,而是另外找一块没有使用的空闲块,将数据写入该空闲块中,然后修改相应的地址映射信息记录过程标志,出现掉电时通过记录标志判断是否写完整,如不完整则恢复原有数据。另一种是对闪存的某一块进行修改时,先将修改位置内容写入备份数据区,然后写标志信息,再将数据写入目的地址,写入完成标志,出现掉电情况是通过标志信息来判断是否写完整,如不完整则将备份信息恢复到原位置。现有技术中这两种方式并没有区分闪存类型是NOR FLASH还是NAND FLASH,而且主要是针对NAND FLASH类型设计的。但是这两种闪存类型是有区别的,其区别主要有I、NOR FLASH 的读速度比 NAND FLASH 稍快一些;2、NAND FLASH的写入速度比NOR FLASH快很多;3、NAND FLASH 的 4ms 擦除速度远比 NOR FLASH 的 5s 快;4、NAND FLASH每一页包含数据区和空闲区;5、NOR FLASH可随机存取,支持直接代码执行,NAND FLASH不支持;6、NAND FLASH的可擦写次数是NOR FLASH的十倍;7、NOR FLASH成本高容量小更多用于嵌入式系统可执行程序。由于以上区别,使用第一种方法时NAND FLASH由于有空闲区记录磨损信息和映射信息因而比较实用,而且NOR在直接代码执行时也不能使用映射方式。在第二种方法中对同一位置的标志信息和对同一备份区反复写数据会导致这些区域首先损坏,而且反复擦写标志信息也带来不小开销。因此针对NOR FLASH的掉电保护要尽量多读少写,同时也要尽量的减少同一位置的磨损。

发明内容
本发明的主要目的在于提供一种用于NOR闪存的数据掉电保护方法,以较低的系统开销适当考虑磨损均衡实现掉电保护的功能。本发明提供了一种用于NOR闪存的数据掉电保护方法,包括以下步骤步骤一在NOR闪存的数据存储区第一个扇区单独划出用于存储标志结构数据的 数组,用于存储标志结构数据的数组为标志结构数组,该扇区为标志存储区;该标志结构数据包含存储地址值、长度值、备份标志值、备份地址值和存储标志值;步骤二 在NOR闪存的数据存储区接下来的扇区设立一张映射表,该映射表的每个表项对应一个数据存储区基本擦写单位;步骤三查找映射表,找出备份地址;步骤四将要改写的数据整合写入该备份地址,并改写该标志结构数据的备份地址值、存储地址值、长度值和备份标志值;步骤五将备份数据写入数据存储位置,并改写存储标志值。与现有技术相比,本发明所述的用于NOR闪存的数据掉电保护方法,能够有效保证NOR闪存写操作存在的数据破坏的问题,使得系统在出现掉电等异常情况时仍可恢复数据,并考虑了磨损均衡问题。


图I是本发明所述的用于NOR闪存的数据掉电保护方法的一实施例的流程图;图2是基于本发明的掉电后保护方法流程图。
具体实施例方式本发明提供了一种用于NOR闪存的数据掉电保护方法,包括以下步骤步骤一在NOR闪存的数据存储区第一个扇区单独划出用于存储标志结构数据的数组,该存储标志结构数据的数组为标志结构数组,该扇区为标志存储区;该标志结构数据包含存储地址值、长度值、备份标志值、备份地址值和存储标志值;步骤二 在NOR闪存的数据存储区接下来的一到两个扇区设立一张映射表,该映射表的每个表项对应一个数据存储区基本擦写单位;步骤三查找映射表,找出备份地址;步骤四将要改写的数据整合写入该备份地址,并改写该标志结构的备份地址值、存储地址值、长度值和备份标志值;步骤五将备份数据写入数据存储位置,并改写存储标志值。实施时,在步骤一中,标志结构数据为数组形式,有很多个,可以用一个全局变量计数来寻找当前的标志结构数据,到所有标志结构数据都写完再擦掉标志存储区重新写入,不用每次修改都擦写数据,可以减少开销。实施时,在步骤二中,映射表记录每个数据存储区的基本操作扇区是否空闲,每个扇区有数据写入时做占用标志,数据存储区的起始地址作为基地址,映射表中的每一个或两个字节可以代表基地址开始的一个最小擦写扇区。实施时,在步骤三中,查找映射表时第一次从开始位置查找第一个空闲扇区作为备份地址,该备份地址即为备份数据写入地址,之后可以在当前标志结构数据中找到当前备份数据写入的地址,可以从当前备份数据写入地址向后寻找新的空闲扇区,遇到结尾再继续从头找起,这样可以避免在同一地址反复写备份数据而导致部分扇区磨损严重而导致提前损坏。实施时,在步骤四中,将要改写的数据整合写入该备份地址步骤具体为复制从待写入数据所占第一个扇区的开始地址到待写入数据所占最后一个扇区的结束地址内的数 据,并用待写入的数据替换至目的存储区域,形成整合后的数据即备份数据,将该备份数据写入查找出的该备份地址内。在步骤四中,改写该标志结构的备份地址值、存储地址值、长度值和备份标志值步骤包括将该存储地址值修改为待写入数据所占第一个扇区的开始地址,将该长度值修改为该备份数据的总长度,将该备份标志值设为真,将该备份地址值修改为步骤三中查找到的备份地址。在步骤五中,将备份数据写入数据存储位置时,需先判断备份标志值是否为真,如果为真则将该备份数据写入数据存储位置,该备份数据写入数据存储位置之后,修改当前的标志结构数据,将存储标志值置为真。如图I所示,本发明所述的用于NOR闪存的数据掉电保护方法的一实施例包括以下步骤步骤101,初始化标志结构数组和映射表;标志结构数组初次使用时初始化擦去扇区值备用即可,之后标志结构数组值满则重新擦除;映射表初始时也是擦去扇区值,映射表只初始化一次,之后每次写入存储区数据时判断映射表对应位置的数据是否为真,如果该数据为真则表示已有数据,改写存储区数据即可;若该数据为初始值则在该映射表位置写入真值;步骤102,当进行数据写入时,要先将数据备份,此时要找出合适地址进行备份;当第一次查找时从映射表中首位置查找符合条件的空扇区地址,之后从标志结构数据中取出备份地址,从这个地址之后在映射表中查找空地址用来备份数据;步骤103,复制从待写入数据所占第一个扇区的开始地址到待写入数据所占最后一个扇区的结束地址内的数据,并用待写入的数据替换至目的存储区域,形成整合后的数据即备份数据,将该备份数据写入查找出的该备份地址内;步骤104,修改当前标志结构数据,将该存储地址值修改为待写入数据所占第一个扇区的开始地址,将该长度值修改为该备份数据的总长度,将该备份标志值设为真,将该备份地址值修改为步骤103中查找到的备份地址;步骤105,先判断备份标志值是否为真,如果为真则根据当前标志结构数据中的地址和长度将备份数据写入数据存储位置,并在映射表中将该数据存储位置的占用标志置为真;步骤106,数据写完后修改当前标志结构数据,将存储标志值置为真,修改全局变量,将该全局变量加1,以指示下一标志结构数据。如图2所示,本发明的掉电后保护流程具体包括以下几个步骤步骤201,读取标志结构数组中的第一个标志结构数据;步骤202,判断当前标志结构数据中的备份标志值和存储标志值,如果备份标志值为真,存储标志值也为真,执行步骤203 ;如果备份标志值为真,存储标志值为空,执行步骤204;如果备份标志值为空,存储标志值也为空,说明没有数据写入备份数据地址,所有数据不需恢复,执行结束;步骤203,当前情况表明备份数据已经正确写入目的地址,从标志结构数组中取下 一个标志结构数据,继续执行步骤202 ;步骤204,当前情况表明有数据写入备份地址,但是没有正常写到目的地址,此时从当前标志结构数据中取出备份地址值、存储地址值和长度值,将备份数据写入目的地址,并修改当前标志结构数据中的存储标志值为真,并转至步骤202。以上两个流程步骤中任何时候发生断电时都能保证数据存储区有正确数据或恢复正确数据。使用本发明所述的用于NOR闪存的数据掉电保护方法,在写数据过程中发生掉电时,加电启动后系统从存储标志结构数据的数组中读取并判断备份标志值和存储标志值;当该备份标志值和该存储标志值均为真时则表示数据正常,则判断下一标志结构数据;当备份标志值为真而存储标志值为空时,数据异常,将备份数据复制至数据存储位置,判断下一标志结构数据;若备份标志值和存储标志值都为空时判断结束。以上所述实施例,只是本发明较优选的具体实施方式
的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换,在本发明技术方案的基础上,凡根据本发明原理对个别部分进行的改变和等同变换都应包含在本发明技术方案的保护范围内。
权利要求
1.一种用于NOR闪存的数据掉电保护方法,其特征在于,包括以下步骤 步骤一在NOR闪存的数据存储区第一个扇区单独划出用于存储标志结构数据的数组,该用于存储标志结构数据的数组为标志结构数组,该扇区为标志存储区; 该标志结构数据包含存储地址值、长度值、备份标志值、备份地址值和存储标志值; 步骤二 在NOR闪存的数据存储区接下来的扇区设立一张映射表,该映射表的每个表项对应一个数据存储区基本擦写单位; 步骤三查找映射表,找出备份地址; 步骤四将要改写的数据整合写入该备份地址,并改写该标志结构数据的备份地址值、存储地址值、长度值和备份标志值; 步骤五将备份数据写入数据存储位置,并改写存储标志值。
2.如权利要求I所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤一中,用一个全局变量计数来寻找标志结构数组中的当前的标志结构数据,在所有标志结构数据都写完后再擦掉标志存储区重新写入。
3.如权利要求I或2所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤二中,映射表记录每个数据存储区的基本操作扇区是否空闲,每个扇区有数据写入时做占用标志,数据存储区的起始地址作为基地址,该映射表中的每一个或两个字节代表基地址开始的一个最小擦与扇区。
4.如权利要求3所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤三中,查找映射表时第一次从开始位置查找第一个空闲扇区作为备份地址,之后在当前标志结构数据中找到当前备份数据写入的地址,从当前备份地址向后寻找新的空闲扇区,遇到结尾再继续从头找起。
5.如权利要求4所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤四中,将要改写的数据整合写入该备份地址步骤具体为复制从待写入数据所占第一个扇区的开始地址到待写入数据所占最后一个扇区的结束地址内的数据,并用待写入的数据替换至目的存储区域,形成整合后的数据即备份数据,将该备份数据写入查找出的该备份地址内。
6.如权利要求5所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤四中,改写该标志结构的备份地址值、存储地址值、长度值和备份标志值步骤包括将该存储地址值修改为待写入数据所占第一个扇区的开始地址,将该长度值修改为该备份数据的总长度,将该备份标志值设为真,将该备份地址值修改为步骤三中查找到的备份地址。
7.如权利要求6所述的用于NOR闪存的数据掉电保护方法,其特征在于,在步骤五中,将备份数据写入数据存储位置时,需先判断备份标志值是否为真,如果为真则将该备份数据写入数据存储位置,该备份数据写入数据存储位置之后,修改当前的标志结构数据,将存储标志值置为真。
全文摘要
本发明提供了一种用于NOR闪存的数据掉电保护方法,包括以下步骤步骤一在NOR闪存的数据存储区第一个扇区单独划出用于存储标志结构数据的数组,用于存储标志结构数据的数组为标志结构数组,该扇区为标志存储区;该标志结构数据包含存储地址值、长度值、备份标志值、备份地址值和存储标志值;步骤二在NOR闪存的数据存储区接下来的扇区设立一张映射表,该映射表的每个表项对应一个数据存储区基本擦写单位;步骤三查找映射表,找出备份地址;步骤四将要改写的数据整合写入该备份地址,并改写该标志结构数据的备份地址值、存储地址值、长度值和备份标志值;步骤五将备份数据写入数据存储位置,并改写存储标志值。
文档编号G11C16/06GK102737715SQ20111008318
公开日2012年10月17日 申请日期2011年4月2日 优先权日2011年4月2日
发明者丁瑶, 于志强, 吴渊, 唐凌, 张飚, 王杰斌, 王芳, 舒南飞, 郭宝安, 鲁昱 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1