一种NandFlash页的检测方法和装置的制作方法

文档序号:6359167阅读:178来源:国知局
专利名称:一种Nand Flash页的检测方法和装置的制作方法
技术领域
本发明涉及数据存储技术,尤其涉及一种Nand Flash页的检测方法和装置。
背景技术
随着信息技术和半导体技术的发展,电信设备对数据存储的容量、性能要求越来越高。Nand Flash因其具有容量大、擦写速度快、体积小、成本低等特点,逐渐被广泛应用于电信设备的数据存储。根据Nand Flash器件的特点,编程过程中,数据从页(Page)的数据(Data)区的前端开始顺序写入,直到页的备用(Spare)区的末端。如果在编程过程中发生异常中止,如掉电、复位等,则当前页的数据可能无法写完或者当前比特的状态无法保证,极有可能对当前编程数据造成破坏。若当前编程数据为文件系统的关键数据,如FAT (File Allocation Table,文件分配表)、重要目录等,则会对文件系统造成非常严重的影响。现有技术中,若编程过程中发生异常中止,系统重新上电后,在应用层采用 ECC (Error Correction Code,纠错码)对Nand Flash页进行校验,检测出受影响的页,以便对受影响的页所在的文件或者目录采取适当的恢复措施,降低对文件系统的影响。但如果Nand Flash页的错误比特数超过ECC检错能力,应用层无法检测出受影响的页以及数据损坏的文件或者目录。因此,受检错能力的限制,应用层的校验不能准确地检测出受异常中止影响的Nand Flash页,无法有效地消除异常中止对文件系统造成的影响。

发明内容
本发明的实施例提供了一种Nand Flash页的检测方法和装置,解决现有技术不能准确地检测出受异常中止影响的Nand Flash页的问题。本发明的实施例采用如下技术方案本发明一方面提供了一种Nand Flash页的检测方法,包括对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;判断所述第一编程状态标志是否指示编程开始状态如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。本发明另一方面提供了一种Nand Flash页的检测方法,包括对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;读取所述第三编程状态标志,确定所述第三编程状态标志指示非空闲状态;判断所述第三编程状态标志是否指示编程完成状态如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。本发明一方面提供了一种Nand Flash页的检测装置,包括
5
写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取模块,用于读取所述第一编程状态标志;确定模块,用于确定所述第一编程状态标志指示非空闲状态;判断模块,用于判断所述第一编程状态标志是否指示编程开始状态如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。本发明另一方面提供了一种Nand Flash页的检测装置,包括写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;读取模块,用于读取所述第三编程状态标志;确定模块,用于确定所述第三编程状态标志指示非空闲状态;判断模块,用于判断所述第三编程状态标志是否指示编程完成状态如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。本发明实施例提供的一种Nand Flash页的检测方法和装置,能够准确地检测出受异常中止影响的页,以有效地消除异常中止对文件系统造成的影响。


为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。图1为本发明的实施例提供的Nand Flash页的结构示意图;图2为本发明的实施例提供的Nand Flash页的编程状态示意图;图3为本发明的一实施例提供的一种Nand Flash页的检测方法的流程图;图4为本发明的另一实施例提供的一种Nand Flash页的检测方法的流程图;图fe为本发明的一实施例提供的编程状态标志的位置示意图;图恥为本发明的一实施例提供的空闲状态页的编程示意图;图6a为本发明的另一实施例提供的编程状态标志的位置示意图;图6b为本发明的另一实施例提供的空闲状态页的编程示意图;图7为本发明的再一实施例提供的一种Nand Flash页的检测方法的流程图;图为本发明的再一实施例提供的编程状态标志的位置示意图;图8b为本发明的再一实施例提供的空闲状态页的编程示意图;图9a为本发明的一实施例提供的一种Nand Flash页的检测装置的结构框图;图9b为本发明的一实施例提供的另一种Nand Flash页的检测装置的结构框图;图IOa为本发明的另一实施例提供的一种Nand Flash页的检测装置的结构框图;图IOb为本发明的另一实施例提供的另一种Nand Flash页的检测装置的结构框图;图Ila为本发明的再一实施例提供的一种Nand Flash页的检测装置的结构框图;图lib为本发明的再一实施例提供的另一种Nand Flash页的检测装置的结构框图。
具体实施例方式本发明实施例提供了一种Nand Flash页的检测方法和装置。为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。Nand Flash由多个块(Block)组成,一个块由多个页(Page)组成。Nand Flash 最小擦除单位是块,最小编程单位是页,写一个文件(包括新写入或者更新)对应一个或者多个页的编程操作。如图1所示,Nand Flash的每个页内包含一个数据区(DataArea)和一个扩展的备用区(SpareArea)。下述实施例中,将一个页的编程状态划分为空闲、编程开始和编程完成三种状态, 如图2所示。对于一个已擦除的块(Block),该块的所有页的编程状态为空闲,每个页的所有比特值均为1 ;编程过程中,即数据开始写入至数据完成写入之前,页的编程状态为编程开始;编程结束,即数据写入完成之后,页的编程状态为编程完成。实施例一,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图3所示,该方法具体包括如下步骤步骤S101,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页。对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值 (包括每个页的第一编程状态标志的所有比特值)均为1。本实施例中,第一编程状态标志可以位于页的数据区的前端。对擦除后编程状态为空闲的页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据。可以将第一编程状态标志随数据一起,填充到页缓存(Page Buffer)中,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据顺序写入该 Nand Flash 页中。本实施例中,第一编程状态标志也可以位于页的备用区的前端。对擦除后编程状态为空闲的页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据。可以先将第一编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据顺序写入该Nand Flash页中;再将第一编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据顺序写入该NandFlash页中。步骤S102,读取第一编程状态标志,确定第一编程状态标志指示非空闲状态。本实施例中,如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志。本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。读取页的第一编程状态标志,第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。步骤S103,判断第一编程状态标志是否指示编程开始状态如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响。Nand Flash页编程过程中,如果在写入第一编程状态标志时发生异常中止,可以通过实施例一提供的方法检测出受异常中止影响的Nand Flash页。实施例二,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图4所示,该方法具体包括如下步骤本实施例中,通过第一编程状态标志和第二编程状态标志,共同标识页的空闲、编程开始和编程完成三种状态。步骤S201,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页,在写入该页的数据区数据和备用区数据之后将第二编程状态标志写入该页。对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值 (包括每个页的第一编程状态标志的所有比特值)均为1。本实施例中,第一编程状态标志的位置和第二编程状态标志的位置,可以是第一编程状态标志位于数据区的前端,第二编程状态标志位于备用区的末端,如图如所示。对擦除后编程状态为空闲的页进行编程,如图恥所示,将第一编程状态标志设置为指示编程开始状态,将第二编程状态标志设置为指示编程完成状态。从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的第二编程状态标志。可以将第一编程状态标志和第二编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中指示编程开始状态的第一编程状态标志、正常数据区数据、正常备用区数据、指示编程完成状态的第二编程状态标志顺序写入该Nand Flash页中。本实施例中,第一编程状态标志的位置和第二编程状态标志的位置,也可以是第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端,如图 6a所不。
8
对擦除后编程状态为空闲的页进行编程,如图6b所示,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志;将第二编程状态标志设置为指示编程完成状态, 再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志。可以将第一编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志顺序写人该Nand Flash页中;再将第一编程状态标志和第二编程状态标志随数据一起,填充到页缓存中,组成待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志顺序写人该Nand Flash页中。步骤S202,读取第一编程状态标志,确定第一编程状态标志指示非空闲状态。本实施例中步骤S202与实施例一中步骤S102的实施方法相类似,此处不再赘述。步骤S203,判断所述第一编程状态标志是否指示编程开始状态如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响;如果第一编程状态标志指示编程开始状态,则读取该页的第二编程状态标志,判断第二编程状态标志是否指示编程完成状态如果第二编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;如果第二编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。本实施例中,第二编程状态指示的取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第二编程状态标志指示空闲状态。第二编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第二编程状态标志。Nand Flash页编程过程中,在写入页的内容(包括写入数据区数据、写入备用区数据、写入第一编程状态标志、或者写入第二编程状态标志)时发生异常中止,实施例二提供的方法均可以检测出受异常中止影响的Nand Flash页。实施例三,本发明实施例提供了一种Nand Flash页的检测方法,其流程如图7所示,该方法具体包括如下步骤本实施例中,通过第三编程状态标志,标识页的空闲、编程开始和编程完成三种状态。步骤S301,对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前和之后将第三编程状态标志写入该页。对于擦除后的块,该块包含的所有页的编程状态为空闲,每个页的所有比特值 (包括每个页的第一编程状态标志的所有比特值)均为1。本实施例中,第三编程状态标志可以位于页的备用区的末端,如图8a所示。对擦除后编程状态为空闲的页进行编程,如图8b所示,将第三编程状态标志设置
9为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志;将第三编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志。可以将第三编程状态标志填充到页缓存中,页缓存的其它部分比特值置1,组成待写入该页的内容,再从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志顺序写人该Nand Flash页中;再将第三编程状态标志随数据一起,填充到页缓存中, 组成完整的待写入该页的内容,从该页的数据区的前端开始直到该页的备用区的末端,将页缓存中正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志顺序写人该Nand Flash页中。步骤S302,读取第三编程状态标志,确定第三编程状态标志指示非空闲状态。本实施例中,第三编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第三编程状态标志。本实施例中,第三编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页的第三编程状态标志指示空闲状态。读取页的第三编程状态标志,第三编程状态标志的取值非所有比特值均为1,则确定第三编程状态标志指示非空闲状态;第三编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。步骤S303,判断第三编程状态标志是否指示编程完成状态如果第三编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;如果第三编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。Nand Flash页编程过程中,在写入页的内容(包括写入数据、写入第一编程状态标志、或者写入第二编程状态标志)时发生异常中止,实施例三提供的方法均可以检测出受异常中止影响的Nand Flash页。上述实施例一、二、三中,进一步地,可以从Nand Flash的第一个块的第一个页开始,遍历Nand Flash的所有块的所有页,检测出受异常中止影响的NandFlash页。继而可以查找到这些页所在的文件或者目录,记录这些数据损坏的文件或者目录的信息,并且隔离这些文件或者目录,对数据损坏的文件或者目录采取适当的恢复措施,以有效地消除异常中止对文件系统造成的影响。上述实施例一、二、三提供的方法中,第一编程状态标志、第二编程状态标志、第三编程状态标志可以指示空闲状态、编程开始状态、编程完成状态。其中,编程状态标志指示空闲状态时,取值为所有比特值均为1。编程状态标志指示编程开始状态、编程完成状态时,不同情况下可选取的值有所不同实施例一中,第一编程状态标志位于页的数据区的前端,第一编程状态标志可以取除所有比特值均为1以外的任意两个数值或者两个区段数值,指示编程开始状态和编程完成状态。实施例二中,第一编程状态标志位于数据区的前端,第二编程状态标志位于备用区的末端,第一编程状态标志和第二编程状态标志均可以取除所有比特值均为1以外的任意两个数值或者两个区段数值,指示编程开始状态和编程完成状态。下述三种情况下实施例提供的方法对页进行了两次重复编程,编程状态标志指示编程开始状态和编程完成状态时的取值有一定限制实施例一中,第一编程状态标志位于页的备用区的前端;实施例二中,第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端;实施例三中,第三编程状态标志位于页的备用区的末端。利用Flash的编程和擦除操作具有的特点,即擦除的过程实质上是将所有存储单元的值变为“ 1 ”,而编程是将某些存储单元的值由“ 1”变为“ 0 ”。将原编程状态标志的取值中某些比特值由“1”变为“0”,作为编程时刷新的编程状态标志的取值。由此实现在不擦除页所在的块的情况下,再次对该页进行编程。例如实施例一中,第一编程状态标志位于页的备用区的前端。第一编程状态标志编程前设置为指示空闲状态,取值为所有比特值均为1 ;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。例如实施例二中,第一编程状态标志位于页的备用区的前端,第二编程状态标志位于页的备用区的末端。第一编程状态标志编程前设置为指示空闲状态,取值为所有比特值均为1 ;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。第二编程状态标志编程前设置为指示空闲状态,取值为所有比特值均为1 ;第二次编程时刷新为指示编程完成状态,则指示编程完成状态时所取的值为指示空闲状态时所取的值中某些比特由“1”变为“0”。例如实施例三,第三编程状态标志位于页的备用区的末端。第三编程状态标志编程前设置为指示空闲状态,取值为所有比特值均为1 ;第一次编程时刷新为指示编程开始状态,则指示编程开始状态时所取的值为指示空闲状态时所取的值中某些比特由“ 1,,变为“0” ;第二次编程时刷新为指示编程完成状态,则指示编程完成状态时所取的值为指示编程开始状态时所取的值中某些比特由“1”变为“0”。则第三编程状态标志指示空闲状态、编程开始状态和编程完成状态时的取值可以如下表所示
编程状态指示十六进制值二进制值
空闲Oxffff11111111 11111111 ~
编程开始Oxafaf10101111 10101111 ~
编程完成0xa5a510100101 10100101~Nand Flash页编程过程中如果发生异常中止,Nand Flash页受异常中止的影响至少包括下述的一种情况导致Nand Flash页的数据无法写完、比特状态无法保证。本发明
11实施例提供的一种Nand Flash页的检测方法,编程状态的写入严格设计在数据写入之前和数据写入完成之后,能够准确地检测出受到上述异常中止影响的Nand Flash页,查找到这些页所在的文件或者目录,记录数据损坏的文件或者目录信息,并且隔离这些文件或者目录,以便系统和上层应用进行故障定位和故障恢复,消除异常中止对文件系统造成的影响。实施例四,本发明实施例提供了一种Nand Flash页的检测装置,如图9a所示,包括写入模块910、读取模块920、确定模块930和判断模块940 写入模块910,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页。读取模块920,用于读取第一编程状态标志。如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志。确定模块930,用于确定第一编程状态标志指示非空闲状态。本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。判断模块940,用于判断第一编程状态标志是否指示编程开始状态如果第一编程状态标志指示非编程开始状态,确认该页受异常中止的影响。可选地,第一编程状态标志位于该页的数据区的前端,如图9b所示,写入模块910 可以包括第一写入子模块911,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据。可选地,第一编程状态标志位于该页的备用区的前端,如图9b所示,写入模块910 可以包括第二写入子模块912,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据。实施例五,本发明实施例提供了一种Nand Flash页的检测装置,如图IOa所示,包括写入模块1010、读取模块1020、确定模块1030和判断模块1040 写入模块1010,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前将第一编程状态标志写入该页,在写入该页的数据区数据和备用区数据之后将第二编程状态标志写入该页。
读取模块1020,用于读取第一编程状态标志;还用于读取第二编程状态标志。如果第一编程状态标志位于页的数据区的前端,第一编程状态标志可以直接从页的内容中读取;如果第一编程状态标志位于页的备用区的前端,第一编程状态标志可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第一编程状态标志ο第二编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第二编程状态标志。确定模块1030,用于确定第一编程状态标志指示非空闲状态。本实施例中,第一编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第一编程状态标志指示空闲状态。第一编程状态标志的取值非所有比特值均为1,则确定第一编程状态标志指示非空闲状态;第一编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。判断模块1040,用于判断所述第一编程状态标志是否指示编程开始状态如果第一编程状态标志指示非编程开始状态,则确认该页受异常中止的影响;如果第一编程状态标志指示编程开始状态,则判断第二编程状态标志是否指示编程完成状态如果第二编程状态标志指示非编程完成状态,则确认该页受异常中止的影响;如果第二编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。本实施例中,第二编程状态指示的取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页中的第二编程状态标志指示空闲状态。可选地,第一编程状态标志位于该页的数据区的前端,第二编程状态标志位于该页的备用区的末端,如图IOb所示,写入模块1010可以包括第三写入子模块1011,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,第二编程状态标志设置为指示编程完成状态。从该页的数据区的前端开始直到该页的备用区的末端,顺序写入指示编程开始状态的第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的第二编程状态标
ο可选地,第一编程状态标志位于该页的备用区的前端,第二编程状态标志位于该页的备用区的末端,如图IOb所示,写入模块1010可以包括第四写入子模块1012,用于对擦除后编程状态为空闲的该页进行编程,将第一编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的第一编程状态标志、比特值均为1的备用区数据、比特值均为1的第二编程状态标志;将第二编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、指示编程开始状态的第一编程状态标志、正常的备用区数据、指示编程完成状态的第二编程状态标志。实施例六,本发明实施例提供了一种Nand Flash页的检测装置,如图Ila所示,包括写入模块1110、读取模块1120、确定模块1130和判断模块1140 写入模块1110,用于对擦除后编程状态为空闲的页编程,在写入该页的数据区数据和备用区数据之前和之后将第三编程状态标志写入该页。
13
读取模块1120,用于读取第三编程状态标志。第三编程状态标志位于页的备用区的末端,可以直接从页的内容中读取,也可以读取备份区的内容,继而从备份区的内容中提取第三编程状态标志。确定模块1130,用于确定第三编程状态标志指示非空闲状态。本实施例中,第三编程状态标志取值为所有比特值均为1时,指示空闲状态。即擦除后编程状态为空闲的页的第三编程状态标志指示空闲状态。第三编程状态标志的取值非所有比特值均为1,则确定第三编程状态标志指示非空闲状态;第三编程状态标志取值为所有比特值均为1,则确定第一编程状态标志指示空闲状态,结束对该页的检测。判断模块1140,用于判断第三编程状态标志是否指示编程完成状态如果第三编程状态标志指示非编程完成状态,确认该页受异常中止的影响;如果所述第三编程状态标志指示编程完成状态,则确认该页未受异常中止的影响。可选地,第三编程状态标志位于页的备用区的末端,如图lib所示,写入模块1110 可以包括第五写入子模块1111,用于对擦除后编程状态为空闲的该页进行编程,将第三编程状态标志设置为指示编程开始状态,从该页的数据区的前端开始直到该页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的第三编程状态标志;将第三编程状态标志设置为指示编程完成状态,再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的第三编程状态标志。上述实施例四至六装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。采用本发明实施例提供的技术方案,能够准确地检测出受异常中止影响的Nand Flash页,以有效地消除异常中止对文件系统造成的影响。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
权利要求
1.一种Nand Flash页的检测方法,其特征在于,包括对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;判断所述第一编程状态标志是否指示编程开始状态如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页;如果所述第一编程状态标志指示编程开始状态,读取所述第二编程状态标志,判断所述第二编程状态标志是否指示编程完成状态如果所述第二编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
3.根据权利要求1所述的方法,其特征在于,所述第一编程状态标志位于所述页的数据区的前端;所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页, 具体包括从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据。
4.根据权利要求1所述的方法,其特征在于,所述第一编程状态标志位于所述页的备用区的前端;所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页, 具体包括从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据。
5.根据权利要求2所述的方法,其特征在于,所述第一编程状态标志位于所述页的数据区的前端,所述第二编程状态标志位于所述页的备用区的末端;所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页, 所述在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页,具体包括从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
6.根据权利要求2所述的方法,其特征在于,所述第一编程状态标志位于所述页的备用区的前端,所述第二编程状态标志位于所述页的备用区的末端;所述在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页, 所述在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页,具体包括从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据、比特值均为1的所述第二编程状态标志;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据、指示编程完成状态的所述第二编程状态标O
7.一种Nand Flash页的检测方法,其特征在于,包括对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;读取所述第三编程状态标志,确定所述第三编程状态标志指示非空闲状态;判断所述第三编程状态标志是否指示编程完成状态如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
8.根据权利要求7所述的方法,其特征在于,所述第三编程状态标志位于所述页的备用区的末端;所述在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页,具体包括从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1的备用区数据、指示编程开始状态的所述第三编程状态标志;再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第三编程状态标志ο
9.一种Nand Flash页的检测装置,其特征在于,包括写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取模块,用于读取所述第一编程状态标志;确定模块,用于确定所述第一编程状态标志指示非空闲状态;判断模块,用于判断所述第一编程状态标志是否指示编程开始状态如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括所述写入模块还用于在写入所述页的数据区数据和备用区数据之后将第二编程状态标志写入所述页;所述读取模块还用于读取所述第二编程状态标志;所述判断模块还用于如果所述第一编程状态标志指示编程开始状态,判断所述第二编程状态标志是否指示编程完成状态如果所述第二编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
11.根据权利要求9所述的装置,其特征在于,所述第一编程状态标志位于所述页的数据区的前端;所述写入模块包括第一写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据。
12.根据权利要求9所述的装置,其特征在于,所述第一编程状态标志位于所述页的备用区的前端;所述写入模块包括第二写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、正常的备用区数据。
13.根据权利要求10所述的装置,其特征在于,所述第一编程状态标志位于所述页的数据区的前端,所述第二编程状态标志位于所述页的备用区的末端;所述写入模块包括第三写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入指示编程开始状态的所述第一编程状态标志、正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
14.根据权利要求10所述的装置,其特征在于,所述第一编程状态标志位于所述页的备用区的前端,所述第二编程状态标志位于所述页的备用区的末端;所述写入模块包括第四写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、指示编程开始状态的所述第一编程状态标志、比特值均为1的备用区数据、比特值均为1的所述第二编程状态标志;再顺序写入正常的数据区数据、指示编程开始状态的所述第一编程状态标志、 正常的备用区数据、指示编程完成状态的所述第二编程状态标志。
15.一种Nand Flash页的检测装置,其特征在于,包括写入模块,用于对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前和之后将第三编程状态标志写入所述页;读取模块,用于读取所述第三编程状态标志;确定模块,用于确定所述第三编程状态标志指示非空闲状态;判断模块,用于判断所述第三编程状态标志是否指示编程完成状态如果所述第三编程状态标志指示非编程完成状态,确认所述页受异常中止的影响。
16.根据权利要求15所述的装置,其特征在于,所述第三编程状态标志位于所述页的备用区的末端;所述写入模块包括第五写入子模块,用于对擦除后编程状态为空闲的所述页编程,从所述页的数据区的前端开始直到所述页的备用区的末端,顺序写入比特值均为1的数据区数据、比特值均为1 的备用区数据、指示编程开始状态的所述第三编程状态标志;再顺序写入正常的数据区数据、正常的备用区数据、指示编程完成状态的所述第三编程状态标志。
全文摘要
本发明涉及数据存储技术,具体公开了一种Nand Flash页的检测方法,包括对擦除后编程状态为空闲的页编程,在写入所述页的数据区数据和备用区数据之前将第一编程状态标志写入所述页;读取所述第一编程状态标志,确定所述第一编程状态标志指示非空闲状态;判断所述第一编程状态标志是否指示编程开始状态如果所述第一编程状态标志指示非编程开始状态,确认所述页受异常中止的影响。本发明实施例还公开了一种Nand Flash页的检测装置。
文档编号G06F13/20GK102511040SQ201180003231
公开日2012年6月20日 申请日期2011年12月2日 优先权日2011年12月2日
发明者何建成, 周杰, 罗逸夫, 郑南成 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1