专利名称:非线性闪存的坏块管理方法及装置的制作方法
技术领域:
本发明涉及存储空间的坏块管理技术,尤其涉及 一 种一 'f线性闪存
(NandFlash)的坏块管理方法及装置。
背景技术:
随着现代信息社会的飞速发展,手机等终端设备逐渐成为人们工作、生活 中必不可少的通信工具。随着终端对信息的存储要求越来越高,非线性闪存 (NandFlash)以大容量、低成本等优势,在终端中的应用越来越广泛,NandFlash 可以存储数据,也可以存储代码。由于NandFlash在出厂时,就会有一定的坏 块存在,这些出厂时就存在的坏块被称之为出厂坏块,而NandFlash在使用的 过程中,也容易产生坏块。 一旦产生坏块,就会对NandFlash的读写等操作造 成影响,因此,对NandFlash的坏块管理就显得非常必要。
现有技术中对NandFlash进行坏块管理,是采用遇到坏块就跳过的方式来 处理的。但是这种管理方法,在用于终端的固件升级过程中,由于无法对产生 的坏块进行正常的数据或代码更新操作,从而也就无法避免坏块的产生对固件 升级所造成的影响,导致终端的固件升级效率较低,甚至容易造成终端的固件 升级失败。
发明内容
有鉴于此,本发明的主要目的在于提供一种非线性闪存的坏块管理方法及 为达到上述目的,本发明的技术方案是这样实现的
本发明提供了一种非线性闪存的坏块管理方法,将非线性闪存的存储空间 划分为数据区和预留区,该方法包括对所述非线性闪存的数据区进行数据擦除或写入搮:作时,获取所产生的坏
块信息;
根据所述坏块信息,在所述非线性闪存的预留区中选取与所述坏块相对应
的可用的替代块;
对所选取的替代块进行所述数据擦除或写入操作。
所述获取数据区中的坏块信息,具体包括在进行所述数据擦除或写入操 作时,如果所述操作至少两次失败,则确定所操作的数据块为坏块。
所述获取数据区中的坏块信息,进一步包括在所述坏块对应的冗余区中 设置坏块标识。
所述在非线性闪存的预留区中选取与坏块相对应的可用的替代块,具体包
括
在所述预留区中选取当前状态为可用的替代块; 将所选取的替代块的物理地址记录在所述坏块对应的冗余区中。 所述对所选取的替代块进行数据擦除或写入操作,进一步包括在所述替
代块对应的冗余区中将所述替代块的当前状态更新为已使用。
所述对所选取的替代块进行数据擦除或写入操作之后,该方法还包括在
对所述坏块进行读取操作时,根据所述坏块对应的冗余区中所记录的物理地址,
从所述物理地址对应的替代块中读取数据。
本发明还提供了一种非线性闪存的坏块管理装置,包括区域划分模块、
坏块信息获取模块、替代块选取模块和替代块操作模块;其中,
所述区域划分模块,用于将非线性闪存的存储空间划分为数据区和预留区; 所述坏块信息获取模块,用于在对非线性闪存的数据区进行数据擦除或写
入操作时,获取所产生的坏块信息;
所述替代块选取^t块,用于根据所述坏块信息,在所述非线性闪存的预留
区中选取与所述坏块相对应的可用的替代块;
所述替代块操作模块,用于对所选取的替代块进行所述数据擦除或写入操
作所述替代块选取模块还包括
替代块选取子才莫块,用于在所述预留区中选^^当前状态为可用的替代块; 物理地址记录子模块,用于将所选取的替代块的物理地址记录在所述坏块 对应的冗余区中。 所述装置还包括
数据读取模块,用于在对所述坏块进行读取操作时,根据所述坏块对应的 冗余区中所记录的物理地址,从所述物理地址对应的替代块中读耳又数据。
本发明所提供的非线性闪存的坏块管理方法及装置,对擦除和写入操作造 成的坏块进行替代,并在坏块对应的冗余区记录替代块的物理地址,由替代块 实现坏块的^^除和写入等操作。本发明中只需建立坏块和替代块的映射关系, 对替代块的查找速度快;本发明的替代操作不会影响其他正常块;且本发明应 用于终端的固件升级中,避免了坏块的产生对固件升级所造成的影响,提高了 固件升级的效率。
图1为本发明一种非线性闪存的坏块管理方法的流程图2为本发明实施例中对NandFlash进行坏块4企测的流程图3为本发明实施例中对NandFlash进刊3察除操:作的流程图4为本发明实施例中对NandFlash进行写操作的流程图5为本发明一种非线性闪存的坏块管理装置的组成结构示意图。
具体实施例方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。 本发明一种NandFlash的坏块管理方法,将NandFlash的存储空间划分为 数据区和预留区,数据区用来存放数据,而预留区用来作为数据区中坏块的替 代区域,代替数据区中的坏块进行数据的存放。如图l所示,该方法主要包括 以下步骤步骤IOI,终端对NandFlash的数据区进行数据擦除或写入操作时,获取所 产生的坏块信息。
终端在对NandFlash的数据区进行数据擦除或写入操作时,对于出厂坏块 是采取直接跳过的方式,不对出厂坏块进行数据的擦除和写入操作。而在终端 对NandFlash的数据区进行数据擦除或写入操作时,容易产生坏块,通常在对 数据区中的某个数据块进行至少两次擦除操作失败时,判定该数据块为坏块; 在对数据区中的某个数据块进行至少两次写入才喿作失败时,判定该数据块为坏 块。发现坏块时,终端在坏块对应的冗余区中设置坏块标识,以标识对应的数 据块为坏块。
步骤102,终端根据所产生的坏块信息,在NandFlash的预留区中选取与坏 块相对应的可用的替代块。
终端发现坏块时,根据步骤101所获取的坏块信息,在NandFlash的预留 区中选取当前状态为可用的替代块,并将所选取的替代块的物理地址记录在坏 块的冗余区中,从而形成了一个坏块与对应替代块的映射关系,此后对该坏块 的数据擦除、写入和读取等操作都可以在坏块对应的替代块中实现。
本领域技术人员应当理解,数据区中块与预留区中的块存储结构相同,所 选用替代块的存储容量不小于其所替代的坏块。
另外,终端在所选取的替代块对应的冗余区中,将替代块的当前状态更新 为已使用,从而在此后进行选取替代块的操作时,不会再选取到这个当前状态 为已使用的替代块。
步骤103,终端对所选取的替代块进行数据擦除或写入操作。
在选取了与数据区中的坏块所对应的替代块后,终端可以对所选的替代块 进行数据的擦除或写入操作。
另外,在对替代块进行数据的擦除或写入操作之后,如果需要对坏块进行 数据读取操作,则终端可以根据坏块对应的冗余区中所记录的物理地址,查找 到与记录的物理地址所对应的替代块,并从对应的替代块中读取所需数据。
本发明中NandFlash的数据区在实际应用中也可以用来存放代码,本发明中将用于存放代码的数据区称为代码区。实际应用中,终端在进行固件升级的 过程中,要求对代码区中所存储的代码进行更新,也就需要对代码区进行块的 擦除或写入操作,操作过程容易产生坏块,而将上述图1所示的坏块管理方法 应用于终端的固件升级过程中时,可以优化终端的固件升级过程,消除坏块对 代码区所造成的影响,提高固件升级的效率。下面对本发明终端固件升级的实 施例中的坏块管理方法进行详细阐述。
终端在固件升级的过程中,首先需要对NandFlash进行校验,确定需要升 级的块,并对需要升级的块进行坏块检测。本发明实施例中对NandFlash进行 坏块检测的流程图,如图2所示,主要包括以下步骤
步骤201,对NandFlash的代码区通过应用软件进行块的比较和校验,确定 需要升级的代码块。
步骤202,对需要升级的代码块进行坏块检测,通过读取代码块所对应冗 余区中的坏块标识,判断需要升级的代码块中是否存在坏块,如果存在,则转 到步骤203;否则,转到步骤204。
步骤203,检测并判断坏块是出厂坏块还是非出厂坏块,具体是根据坏块 所对应冗余区中是否记录有替代块的物理地址来判定坏块是否为出厂坏块的。 如果冗余区中记录有替代块的物理地址,则判定坏块不是出厂坏块;如果冗余 区中没有记录替代块的物理地址,则判定坏块为出厂坏块。
步骤204,将需要升级的代码块是否为坏块、是否为出厂坏块的检测结果 上报给终端。对于出厂坏块,终端在后续的升级过程中采取直接跳过的方式进 行处理;对于正常块,终端在后续的升级过程中直接对代码块进行代码擦除或 写入操作;对于非出厂坏块的坏块,终端在后续的升级过程中对坏块所对应的 替代块进行代码擦除或写入操作。
在终端固件升级过程中,进行NandFlash的擦除或写入操作时容易产生坏 块,因此可以通过上述图1所示的坏块管理方法实现升级过程中的坏块管理。 NandFlash擦除过程中的坏块管理操作,如图3所示,主要包括以下步骤
步骤301,在进行擦除操作时,通常在对某个代码块的擦除操作至少两次失败时,认定该代码块为坏块;并在在坏块对应的冗余区中设置坏块标识,标 志为坏块。
步骤302,在预留区中选取当前状态为可用的替代块。
终端读取预留区中的替代块状态信息,从中选取当前状态为可用的替代块,
并将所选替代块的物理地址记录在坏块对应的冗余区中。 步骤303,对所选替代块进行擦除操作。
步骤304,在所选替代块对应的冗余区中将替代块的当前状态更新为已使用。
NandFlash写入过程中的坏块管理操作,如图4所示,主要包括以下步骤 步骤401,在进行写入操作时,通常在对某个代码块的写入操作至少两次
失败时,认定该代码块为坏块;并在在坏块对应的冗余区中设置坏块标识,标
志为坏块。
步骤402,在预留区中选取当前状态为可用的替代块。 终端读取预留区中的替代块状态信息,从中选取当前状态为可用的替代块, 并将所选替代块的物理地址记录在坏块对应的冗余区中。 步骤403,将更新后的代码写入替代块中。
步骤404,在所选替代块对应的冗余区中将替代块的当前状态更新为已使用。
由于实际应用中,NandFlash不具备片上执行(XIP, Execute In Place )能 力,因此在终端开机或者其他需要执行代码的情况下,需要将NandFlash存放 的代码搬移到RAM上执行。在代码搬移的过程中,对代码块进行坏块检测, 遇到正常块时,直接将代码读取到RAM中;遇到坏块时,根据坏块所对应冗 余区中是否记录有替代块的物理地址,判定坏块是否为出厂坏块,对于出厂坏 块,直接跳过;对于非出厂坏块的坏块,则根据坏块对应冗余区中所记录的物 理地址,查找到与记录的物理地址所对应的替代块,并将替代块中的代码读取 到RAM中。
为实现上述NandFlash的坏块管理方法,本发明还提供了一种NandFlash
9的坏块管理装置,如图5所示,该装置包括区域划分模块IO、坏块信息获取 模块20、替代块选取模块30和替代块操作模块40。其中,用于对NandFlash 的存储空间进行数据区和预留区的划分。坏块信息获取模块20,连接区域划分 模块IO,用于在对NandFlash的数据区进行数据擦除或写入操作时,获取所产 生的坏块信息。替代块选取模块30,连接区域划分模块10和坏块信息获耳^莫 块20,用于根据坏块信息,在NandFlash的预留区中选取与坏块相对应的可用 的替代块。替代块操作模块40,连接区域划分模块10和替代块选取模块30, 用于对所选取的替代块进行数据擦除或写入操作。
其中,替代块选取模块30包括相互连接的替代块选取子模块31和物理 地址记录子模块32。替代块选取子模块31,用于在预留区中选取当前状态为可 用的替代块。物理地址记录子模块32,用于将所选取的替代块的物理地址记录 在坏块对应的冗余区中。
本发明的另一实施例所提供的NandFlash的坏块管理装置,在上述模块的 基础上还包括数据获取模块50,连接替代块选取模块30和替代块操作模块40, 用于在对坏块进行读取操作时,根据替代块选取模块30在坏块对应的冗余区中 所记录的物理地址,从物理地址所对应的替代块中读取替代块操作模块40所写 入的数据。
本领域技术人员应当理解,图5所示坏块管理装置是实现前述坏块管理方 法的虚拟装置,上述各^^莫块的功能可参照图1、图2、图3及图4的相关描述来 理解,各模块可通过相应的软件及电路来实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种非线性闪存的坏块管理方法,其特征在于,将非线性闪存的存储空间划分为数据区和预留区,该方法包括对所述非线性闪存的数据区进行数据擦除或写入操作时,获取所产生的坏块信息;根据所述坏块信息,在所述非线性闪存的预留区中选取与所述坏块相对应的可用的替代块;对所选取的替代块进行所述数据擦除或写入操作。
2、 根据权利要求1所述非线性闪存的坏块管理方法,其特征在于,所述获 取数据区中的坏块信息,具体包括在进行所述数据擦除或写入操作时,如果 所述操作至少两次失败,则确定所操作的数据块为坏块。
3、 根据权利要求1或2所述非线性闪存的坏块管理方法,其特征在于,所 述获耳又数据区中的坏块信息,进一步包括在所述坏块对应的冗余区中设置坏 块标识。
4、 根据权利要求1所述非线性闪存的坏块管理方法,其特征在于,所述在 非线性闪存的预留区中选取与坏块相对应的可用的替代块,具体包括在所述预留区中选取当前状态为可用的替代块; 将所选取的替代块的物理地址记录在所述坏块对应的冗余区中。
5、 根据权利要求1所述非线性闪存的坏块管理方法,其特征在于,所述对 所选取的替代块进行数据擦除或写入操作,进一步包括在所述替代块对应的 冗余区中将所述替代块的当前状态更新为已使用。
6、 根据权利要求1或5所述非线性闪存的坏块管理方法,其特征在于,所 述对所选取的替代块进行数据擦除或写入操作之后,该方法还包括在对所述 坏块进行读取操作时,根据所述坏块对应的冗余区中所记录的物理地址,从所 述物理地址对应的替代块中读:f又数据。
7、 一种非线性闪存的坏块管理装置,其特征在于,包括区域划分模块、坏块信息获取模块、替代块选取模块和替代块操作模块;其中,所述区域划分模块,用于将非线性闪存的存储空间划分为数据区和预留区; 所述坏块信息获取才莫块,用于在对非线性闪存的数据区进行数据擦除或写入操作时,获取所产生的坏块信息;所述替代块选取模块,用于根据所述坏块信息,在所述非线性闪存的预留区中选取与所述坏块相对应的可用的替代块;所述替代块操作模块,用于对所选取的替代块进行所述数据擦除或写入操作。
8、 根据权利要求7所述非线性闪存的坏块管理装置,其特征在于,所述替 代块选取模块还包括替代块选取子模块,用于在所述预留区中选取当前状态为可用的替代块; 物理地址记录子模块,用于将所选取的替代块的物理地址记录在所述坏块 对应的冗余区中。
9、 根据权利要求7或8所述非线性闪存的坏块管理装置,其特征在于,所 述装置还包括数据读取模块,用于在对所述坏块进行读取操作时,根据所述坏块对应的 冗余区中所记录的物理地址,从所述物理地址对应的替代块中读取数据。
全文摘要
本发明公开了一种非线性闪存(NandFlash)的坏块管理方法,将非线性闪存的存储空间划分为数据区和预留区,该方法包括对NandFlash的数据区进行数据擦除或写入操作时,获取所产生的坏块信息;在NandFlash的预留区中选取与坏块相对应的可用的替代块;对所选取的替代块进行数据擦除或写入操作。本发明还公开了一种NandFlash的坏块管理装置,由替代块实现坏块的擦除和写入等操作,只需建立坏块和替代块的映射关系,对替代块的查找速度快;替代操作不会影响其他正常块;且本发明应用于终端的固件升级中,避免了坏块的产生对固件升级所造成的影响,提高了固件升级的效率。
文档编号G06F12/06GK101593157SQ200810111330
公开日2009年12月2日 申请日期2008年5月27日 优先权日2008年5月27日
发明者徐金禄, 段红乐, 王志慧, 谢仁艿 申请人:中兴通讯股份有限公司