非易失闪存擦除异常存储块修复方法和装置的制作方法

文档序号:6362726阅读:243来源:国知局
专利名称:非易失闪存擦除异常存储块修复方法和装置的制作方法
技术领域
本发明涉及计算机领域,特别是涉及一种非易失闪存擦除异常存储块修复方法和装置。
背景技术
非易失闪存(NAND Flash)以其容量大、访问速度快以及单位容量的成本低廉等特点,在嵌入式领域越来越广泛的被用作存放数据的载体。虽然NAND Flash有上述优势,但是也有它固有的缺陷,比如可靠性相对较差就是 NAND Flash最突出的固有缺陷。要确保用户数据的完整性,对于NAND Flash硬件上的不足,只能通过软件来弥补。对于NAND Flash可靠性相对较差的问题,一般来说,坏块是最突出的,也是最受重视的。其实,NAND Flash的擦除、写和读同样不可靠,也有出错的可能,但是由于擦、写和读出错的概率较小,往往会被忽略。其中,读和写如果出错,由于一般有纠错码(ECC,Error Correcting Code)的保护,数据的完整性并不会被破坏。一个NAND Flash通常可以划分为一个一个的存储块(block),每个块可以进一步划分为若干个页面(page),读和写的操作单位就是page ;每个page又可以分为主(main)区域和备用(spare)区域,main区域较大, 用于存放用户数据,spare区域较小,一般用来存放ECC校验码,而通常只有在main区域中保存有用户数据的page,才会计算ECC校验码并保存在spare区域。写操作的实质是将待写块中为I的比特置为0,而擦除操作则相反,是将待擦除块中为0的比特置为1,对于擦除后的空白page,是不会计算ECC校验码的,spare区域保持所有比特为I的状态。所以,擦除操作由于没有ECC校验码的保护措施,如果操作出错,或者再擦除的过程中碰到断电的情况,那么在系统重新开机后如果读到上次擦除出错的相关数据,往往会出现一些莫名其妙的情况,从而导致用户体验度降低,并且,如果出现一些严重的后果,比如死机、系统瘫痪等,这将会是灾难性的。所以,对于NAND Flash的擦除操作的可靠性的探索是非常有必要的。

发明内容
本发明主要解决的技术问题是提供一种非易失闪存擦除异常块修复方法以及相应的装置,能够对擦除异常块进行扫描和修复,以防止在擦除存储块的过程中突然出现断电的情况导致的存储数据错误。一种非易失闪存擦除异常存储块修复方法,包括读取NAND Flash中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;判断该页面是否为擦除异常页面;如果该页面为擦除异常页面,则将该页面的比特数据中不为I的比特置I ;以及
擦除待读取的存储块。一种非易失闪存擦除异常存储块修复装置,包括扫描模块,用于在读取非易失闪存中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;第一判断模块,耦接于所述扫描模块,用于判断该页面是否为擦除异常页面;比特设置模块,耦接于所述第一判断模块,用于当第一判断模块判断出该页面为擦除异常页面时,则将该页面的比特数据中不为I的比特置I ;以及擦除模块,耦接于比特设置模块,用于擦除该待读取的存储块。本发明的有益效果是区别于现有技术的情况,本发明在读取NAND Flash中的数据时,依次对存储块中需要读取的数据所在的页面的比特数据进行扫描,然后判断该页面是否为擦除异常页面,如果为擦除异常页面,则将该页面中比特数据中不为I的比特置1, 然后对该存储块进行重新擦除操作;本实施例对NAND Flash擦除失败这种虽然概率小,但是后果严重的异常进行完全的修复,确保在NAND Flash擦除失败时,甚至在遇到突然断电的情况下,也不会有异常数据出现,系统依然能够正常工作,从而提升了系统的可靠性。


图I是本发明非易失闪存擦除异常块修复方法的第一实施例的数据流程图;图2是本发明非易失闪存擦除异常块修复方法的第二实施例的数据流程图;图3是本发明非易失闪存擦除异常块修复方法中擦除存储块流程的数据流程图;图4是本发明非易失闪存擦除异常块修复装置的逻辑结构示意图。
具体实施例方式请参阅图1,本发明非易失闪存擦除异常块修复方法的第一实施例包括101、读取NAND Flash中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;如果一次不成功的擦除之后,我们还来不及做任何处理就碰上了系统断电,那么再次开机时,首先要做的就是扫描出之前擦除出错的数据在NAND Flash中的具体位置;那么,在每次开机时,需要对NAND Flash中的数据进行扫描,查找擦除不成功的存储块,然后进行修复;读取NAND Flash中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;102、判断页面是否为擦除异常页面;擦除异常页面,也就是擦除不完全的页面,没有把页面中的比特0都置为比特1, spare区域是存放ECC校验码的,如果spare区域的ECC校验码没有被擦除,而main区域的数据出错的话,对于这种擦除异常的页面,spare区域的ECC校验码会报错;而对于另外一种擦除出错但是不容易被发现的页面,即spare区域的ECC校验码已经被擦除,而main区域的数据没有擦除完全,这种情况不容易被发现;所以,要判断页面是否为擦除异常页面,主要是针对后一种不容易被发现的情况, 即如果发现spare区域的ECC校验码已经被擦除,而main区域的数据没有擦除完全时,判断出该页面为擦除异常页面;103、如果在步骤102中判断出页面为擦除异常页面,则将该页面中比特数据中不为I的比特置I,然后执行步骤104 ;104、重新擦除该待读取的存储块;在重新擦除该待读取的存储块后,再读取NAND Flash的状态信息,如果从读取的 NAND Flash状态信息中发现本次擦除还是没有成功,则通过再次擦除进行修复,直到擦除成功;在本实施例中,在读取NAND Flash中的数据时,依次对存储块中需要读取的数据所在的页面的比特数据进行扫描,然后判断该页面是否为擦除异常页面,如果为擦除异常页面,则将该页面中比特数据中不为I的比特置1,然后对该存储块进行重新擦除操作;本实施例对NAND Flash擦除失败这种虽然概率小,但是后果严重的异常进行完全的修复,确保在NAND Flash擦除失败时,甚至在遇到突然断电的情况下,也不会有异常数据出现,系统依然能够正常工作,从而提升了系统的可靠性。NAND Flash的容量通常都比较大,如果每次系统开机时都要检查一遍NAND Flash 上的所有数据,查找出错的数据,这样做的效率较低的,从而会影响开机的速度,那么,如何很好的利用擦除异常的规律,对开机时的扫描过程进行优化是以下第二实施例中解决的问题。请参阅图2,本发明非易失闪存擦除异常块修复方法的第二实施例包括201、读取NAND Flash中的数据时,从待读取的存储块中需要读取的数据所在页面的开始扫描页面spare区域的比特数据;如果一次不成功的擦除之后,我们还来不及做任何处理就碰上了系统断电,那么再次开机时,首先要做的就是扫描出之前擦除出错的数据在NAND Flash中的具体位置;那么,在每次开机时,需要对NAND Flash中的数据进行扫描,查找擦除不成功的存储块,然后进行修复;读取NAND Flash中的数据时,从待读取的存储块中需要读取的数据所在页面的开始扫描该页面spare区域的比特数据;每个页面分main区域和spare区域,main区域较大,用于存放用户数据,spare区域较小,一般为16或者64个字节,一般用于存放ECC校验码;通常只有在main区域写入用户数据的页面,才会计算ECC校验码,并将ECC校验码保存到spare区域;而对于擦除后的空白页面,是不会计算ECC校验码的,spare区域保持所有比特为I的状态;进一步的,对于存有数据的页面,spare区域的最后几个字节是不为十六进制的 OxFF的,所以在扫描spare区域时,从后向前扫描,这样对于多数存有数据的页面,实际只判断了最后一个字节不为OxFF,就不会再检查页面中的其他数据了,极大地加快了扫描的速度;202、判断页面的spare区域中的比特数据是否全为I ;在判断页面的spare区域中的比特数据是否全为I的步骤中,如果判断出页面的 spare区域中的比特数据不全为1,则可以认为spare区域是有ECC校验码的,如果spare 区域存在错误数据,那么ECC校验本身就会报错;所以,如果判断出页面的spare区域中的比特数据不全为1,则可以认为该页面不是擦除后的状态,这种页面不需要做进一步的检查,因此也就不需要再花大量时间扫描较大的main区域了 ;则执行步骤205 ;如果判断出页面的spare区域中的比特数据全为1,则可以认为该页面是擦除后的状态,这种页面需要做进一步的检查,执行步骤203 ;203、扫描页面的main区域的比特数据;当判断出页面的spare区域中的比特数据全为I后,再扫描该页面的main区域;204、判断页面的main区域中的比特数据是否全为I ;在扫描main区域时,逐个字节检查,判断main区域中的比特数据是否全为I ;如果全为1,则可以认为该页面擦除成功,没有出现错误的比特数据,继续执行步骤205 ;如果不全为1,则可以认为该页面擦除失败,执行步骤207 ;205、判断是否扫描完待读取的存储块中需要读取的数据所在的所有页面;步骤202中判断出页面的spare区域中的比特数据不全为I时,或者步骤204中判断出页面的main区域中的比特数据全为I时,再判断是否扫描完待读取的存储块中需要读取的数据所在的所有页面;如果没有扫描完待读取的存储块中需要读取的数据所在的所有页面,执行步骤206继续扫描下一个页面;否则结束流程;206、扫描下一个页面的spare区域的比特数据;如果步骤205中判断出没有扫描完待读取的存储块中需要读取的数据所在的所有页面,则扫描下一个页面的spare区域的比特数据,然后返回执行步骤202 ;207、将不为I的比特置I ;当步骤204中判断出页面的main区域中的比特数据不全为1,即有0存在时,可以认为该页面擦除失败,需要对该页面进行修复,即将不为I的比特置I ;208、擦除待读取的存储块;步骤207中将不为I的比特置I后,再对本页面所在存储块进行重新擦除的操作;在重新擦除该待读取的存储块后,再读取NAND Flash的状态信息,如果从读取的 NAND Flash状态信息中发现本次擦除还是没有成功,则通过再次擦除进行修复,直到擦除成功;下面结合图3进行具体说明301、存储块擦除;302、读取擦除状态;擦除存储块后,读取擦除状态,然后执行步骤303 ;303、判断是否擦除成功;根据步骤302读取的擦除状态判断是否擦除成功,如果擦除成功,则执行步骤 304 ;如果擦除不成功,执行步骤305 ;304、如果擦除成功,则流程结束;305、如果擦除不成功,再判断擦除次数是否超过预设的值;如果步骤303中根据读取的擦除状态判断出擦除不成功,则再判断擦除次数是否超过预设的值,如果擦除次数超过预设的值,则执行步骤306 ;如果擦除次数没有超过预设的值,则继续对存储块进行擦除操作,直至擦除成功或者擦除次数超过预设的值;306、如果擦除次数超过预设的值,则将本存储块标记为坏块;如果擦除次数超过预设的值,可以认为该存储块已经损坏,则将本存储块标记为坏块;在本实施例中,在读取NAND Flash中的数据时,依次对存储块中需要读取的数据所在的页面的比特数据进行扫描,先对页面的spare区域进行扫描判断,如果扫描到有页面的spare区域全为I,再扫描和判断main区域的比特数据,如果判断出main区域中的比特数据不全为1,则对该页面和该页面所在的存储块进行修复;本实施例对NAND Flash擦除失败这种虽然概率小,但是后果严重的异常进行完全的修复,确保在NAND Flash擦除失败时,甚至在遇到突然断电的情况下,也不会有异常数据出现,系统依然能够正常工作,从而提升了系统的可靠性;并且通过对扫描流程的优化,大大提升了扫描速度,提高了扫描效率。请参阅图4,本发明非易失闪存擦除异常存储块修复装置的实施例包括扫描模块401,用于在读取NAND Flash中的数据时,从待读取的存储块中需要读取的数据所在页面开始扫描该页面的比特数据;第一判断模块402,耦接于扫描模块401,用于判断该页面是否为擦除异常页面;比特设置模块403,耦接于第一判断模块402,用于当第一判断模块402判断出该页面为擦除异常页面时,将该页面中比特数据中不为I的比特置I ;以及擦除模块404,耦接于比特设置模块403,用于擦除该待读取的存储块;进一步的,本实施例中的装置还包括第二判断模块405,耦接于扫描模块401,用于判断spare区域中的比特数据是否全为I ;进一步的,扫描模块401包括第一扫描单元4011,用于扫描页面的spare区域的比特数据;第二扫描单元4012,用于当第二判断模块405判断出spare区域中的比特数据全为I时,扫描该页面的main区域的比特数据;进一步的,第一扫描单元4011在扫描时,从spare区域的末尾开始往前扫描;进一步的,擦除模块404包括擦除单元4041,用于擦除待读取的存储块;第一判断单元4042,耦接于擦除单元4041,用于判断擦除是否成功;第二判断单元4043,耦接于第一判断单元4042,用于当第一判断单元4042判断出擦除不成功时,再判断擦除次数是否超过预设的值;标记单元4044,耦接于第二判断单元4043,用于当第二判断单元4043判断出擦除次数超过预设的值时,将该存储块标记为坏块;在本实施例中,在读取NAND Flash中的数据时,依次对存储块中需要读取的数据所在的页面的比特数据进行扫描,先对页面的spare区域进行扫描判断,如果扫描到有页面的spare区域全为I,再扫描和判断main区域的比特数据,如果判断出main区域中的比特数据不全为1,则对该页面和该页面所在的存储块进行修复;本实施例对NAND Flash擦除失败这种虽然概率小,但是后果严重的异常进行完全的修复,确保在NAND Flash擦除失败时,甚至在遇到突然断电的情况下,也不会有异常数据出现,系统依然能够正常工作,从而提升了系统的可靠性;并且通过对扫描流程的优化,大大提升了扫描速度,提高了扫描效率。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种非易失闪存擦除异常存储块修复方法,其特征在于,包括在读取非易失闪存中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;判断所述页面是否为擦除异常页面;如果所述页面为擦除异常页面,则将所述页面中不为I的比特置I ;以及擦除所述待读取的存储块。
2.根据权利要求I所述的方法,其特征在于,所述扫描待读取的存储块中需要读取的数据所在的页面的比特数据的步骤中,从待读取的存储块中需要读取的数据所在的页面开始扫描所述页面的备用(spare)区域的比特数据。
3.根据权利要求2所述的方法,其特征在于,所述从待读取的存储块中需要读取的数据所在的页面开始扫描所述页面的备用区域的比特数据的步骤中,从所述备用区域的末尾开始往前扫描。
4.根据权利要求3所述的方法,其特征在于,所述从待读取的存储块中需要读取的数据所在的页面开始扫描所述页面的备用区域的比特数据的步骤之后还包括判断所述备用区域中的比特数据是否全为I ;以及如果所述备用区域中的比特数据全为1,则扫描所述页面的主(main)区域的比特数据,并执行所述判断所述页面是否为擦除异常页面的步骤。
5.根据权利要求4所述的方法,其特征在于,所述判断备用区域中的比特数据是否全为I的步骤之后还包括如果所述备用区域中的比特数据不全为1,则继续扫描下一个页面的备用区域的比特数据,直至扫描完所述待读取的存储块中需要读取的数据所在的所有页面。
6.根据权利要求5所述的方法,其特征在于,所述判断所述页面是否为擦除异常页面的步骤包括判断所述页面的主区域中的比特数据是否全为I ;如果所述页面的主区域中的比特数据不全为1,则判断出所述页面为擦除异常页面;以及如果所述页面的主区域中的比特数据全为1,则判断出所述页面不为擦除异常页面。
7.根据权利要求6所述的方法,其特征在于,所述判断所述页面是否为擦除异常页面的步骤之后还包括如果所述页面不为擦除异常页面,则继续扫描下一个页面的备用区域的比特数据,直至扫描完所述待读取的存储块中需要读取的数据所在的所有页面。
8.根据权利要求7所述的方法,其特征在于,所述擦除待读取的存储块的步骤包括擦除所述待读取的存储块;判断擦除是否成功;如果不成功,则再判断擦除次数是否超过预设的值;以及如果擦除次数超过预设的值,则将所述存储块标记为坏块。
9.根据权利要求8所述的方法,其特征在于,所述判断擦除次数是否超过预设的值的步骤之后还包括如果擦除次数没有超过预设的值,则继续执行擦除所述待读取的存储块的步骤,直至擦除成功或者擦除次数超过预设的值。
10.一种非易失闪存擦除异常存储块修复装置,其特征在于,包括扫描模块,用于在读取非易失闪存中的数据时,扫描待读取的存储块中需要读取的数据所在页面的比特数据;第一判断模块,耦接于所述扫描模块,用于判断所述页面是否为擦除异常页面;比特设置模块,耦接于所述第一判断模块,用于当第一判断模块判断出所述页面为擦除异常页面时,则将所述页面的比特数据中不为I的比特置I ;以及擦除模块,耦接于所述比特设置模块,用于擦除所述待读取的存储块。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括第二判断模块,耦接于所述扫描模块,用于判断所述备用区域中的比特数据是否全为I。
12.根据权利要求11所述的装置,其特征在于,所述扫描模块包括第一扫描单元,用于扫描所述页面的备用区域的比特数据;以及第二扫描单元,耦接于所述第一扫描单元,用于当第二判断模块判断出所述备用区域中的比特数据全为I时,扫描所述页面的主区域的比特数据。
13.根据权利要求12所述的装置,其特征在于,所述第一扫描单元在扫描时,从所述备用区域的末尾开始往前扫描。
14.根据权利要求13所述的装置,其特征在于,所述擦除模块包括擦除单元,用于擦除所述待读取的存储块;第一判断单元,耦接于所述擦除单元,用于判断擦除是否成功;第二判断单元,耦接于所述第一判断单元,用于当第一判断单元判断出擦除不成功时, 再判断擦除次数是否超过预设的值;标记单元,耦接于所述第二判断单元,用于当第二判断单元判断出擦除次数超过预设的值时,将所述存储块标记为坏块。
全文摘要
本发明实施例公开了一种非易失闪存擦除异常存储块修复方法,还提供了相应的装置。本发明通过在读取NAND Flash中的数据时,依次对存储块中需要读取的数据所在的页面的比特数据进行扫描,然后判断该页面是否为擦除异常页面,如果为擦除异常页面,则将该页面中比特数据中不为1的比特置1,然后对该存储块进行重新擦除操作;确保在NAND Flash擦除失败时,甚至在遇到突然断电的情况下,也不会有异常数据出现,系统依然能够正常工作,从而提升了系统的可靠性。
文档编号G06F11/14GK102609334SQ20121000463
公开日2012年7月25日 申请日期2012年1月9日 优先权日2012年1月9日
发明者周涛 申请人:晨星半导体股份有限公司, 晨星软件研发(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1