CN108664409B - 坏块管理方法及系统 - Google Patents
坏块管理方法及系统 Download PDFInfo
- Publication number
- CN108664409B CN108664409B CN201810210319.5A CN201810210319A CN108664409B CN 108664409 B CN108664409 B CN 108664409B CN 201810210319 A CN201810210319 A CN 201810210319A CN 108664409 B CN108664409 B CN 108664409B
- Authority
- CN
- China
- Prior art keywords
- block
- bad
- programming
- page
- bad block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了一种坏块管理方法,包含存储步骤;所述存储步骤包含以下步骤:第一坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程步骤;其中,n号块是指闪存中的第n块;编程步骤:对n号块进行编程;第二坏块判断步骤:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。相应地,本发明还提供了一种坏块管理系统。本发明无需在内存中维护一张坏块表,在关机前写入FPGA,避免了遇上意外断电导致坏块信息丢失的情况。
Description
技术领域
本发明涉及闪存坏块管理,具体地,涉及一种坏块管理方法及系统。
背景技术
专利文献CN102789423B公开了一种四池闪存磨损均衡方法,采用多池存储管理结构,引入磨损率的概念,用于标识某块趋于坏块的程度,能够更客观的反应块的磨损。结合可擦写次数,能够更加有效地反映出块的磨损状况,所据以确定的磨损均衡方法能够更准确的实现与非闪存的磨损均衡。但该专利文献解决的是普通块的磨损,而且实现复杂,需要维护一张坏块表,不适合循环存储的应用。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种坏块管理方法及系统。
根据本发明提供的坏块管理方法,包含存储步骤;所述存储步骤包含以下步骤:
第一坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程步骤;其中,n号块是指闪存中的第n块;
编程步骤:对n号块进行编程;
第二坏块判断步骤:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。
优选地,还包含回放步骤,所述回放步骤包含:
第三坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取步骤;
读取步骤:将n号块数据及校验码读入CPU;
第二换块步骤:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。
优选地,所述编程步骤包含:
步骤S1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;
步骤S2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;
步骤S3:在n号块的一页上编程,若对该页的编程成功,返回执行步骤S1;若页编程失败,执行第二坏块判断步骤。
优选地,存储步骤还包含第一换块步骤:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。
优选地,还包含坏块标记步骤:检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
本发明还提供了一种坏块管理系统,包含存储模块;所述存储模块包含以下模块:
第一坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程模块;其中,n号块是指闪存中的第n块;
编程模块:对n号块进行编程;
第二坏块判断模块:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。
优选地,还包含回放模块,所述回放模块包含:
第三坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取模块;
读取模块:将n号块数据及校验码读入CPU;
第二换块模块:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。
优选地,所述编程模块包含:
模块R1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;
模块R2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;
模块R3:在n号块的一页上编程,若对该页的编程成功,返回执行模块S1;若页编程失败,执行第二坏块判断模块。
优选地,存储模块还包含第一换块模块:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。
优选地,还包含坏块标记模块:检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
与现有技术相比,本发明具有如下的有益效果:
1、本发明逻辑简单,可由FPGA实现;
2、本发明无需在内存中维护一张坏块表,在关机前写入FPGA,避免了遇上意外断电导致坏块信息丢失的情况。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明存储步骤流程图;
图2为本发明读取步骤流程图;
图3为本发明坏块管理系统结构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
对于不保证出厂无坏块的产品,出厂前厂商会在坏块的第一页的或第二页的冗余区的第一字节写入非0xFF的值,本发明提供的坏块管理系统包含坏块标记模块,所述坏块标记模块检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
如图3所示,实施例中,本发明提供的坏块管理系统还包含存储模块与回放模块。所述存储模块包含以下模块:第一坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程模块;其中,n号块是指闪存中的第n块;编程模块:对n号块进行编程;第二坏块判断模块:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。所述编程模块包含:模块R1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;模块R2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;模块R3:在n号块的一页上编程,若对该页的编程成功,返回执行模块S1;若页编程失败,执行第二坏块判断模块。存储模块还包含第一换块模块:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。
所述回放模块包含:第三坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取模块;读取模块:将n号块数据及校验码读入CPU;第二换块模块:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。
所述坏块管理系统可以通过本发明提供的坏块管理方法的步骤流程实现,本领域技术人员可以将所述坏块管理方法理解为所述坏块管理系统的具体实施例。
本发明还提供了一种坏块管理方法,包含存储步骤与回放步骤,如图1所示,所述存储步骤包含以下步骤:第一坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程步骤;其中,n号块是指闪存中的第n块;编程步骤:对n号块进行编程;第二坏块判断步骤:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。所述编程步骤包含:步骤S1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;步骤S2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;步骤S3:在n号块的一页上编程,若对该页的编程成功,返回执行步骤S1;若页编程失败,执行第二坏块判断步骤。编程步骤还包含第一换块步骤:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。如图2所示,所述回放步骤包含:第三坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取步骤;读取步骤:将n号块数据及校验码读入CPU;第二换块步骤:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。本发明提供的坏块管理方法还包含坏块标记步骤:检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种坏块管理方法,其特征在于,包含存储步骤;所述存储步骤包含以下步骤:
第一坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程步骤;其中,n号块是指闪存中的第n块;
编程步骤:对n号块进行编程;
第二坏块判断步骤:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块;
所述坏块管理方法由FPGA实现;
所述坏块管理方法无需在内存中维护一张坏块表,在关机前写入FPGA。
2.根据权利要求1所述的坏块管理方法,其特征在于,还包含回放步骤,所述回放步骤包含:
第三坏块判断步骤:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取步骤;
读取步骤:将n号块数据及校验码读入CPU;
第二换块步骤:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。
3.根据权利要求1所述的坏块管理方法,其特征在于,所述编程步骤包含:
步骤S1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;
步骤S2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;
步骤S3:在n号块的一页上编程,若对该页的编程成功,返回执行步骤S1;若页编程失败,执行第二坏块判断步骤。
4.根据权利要求1所述的坏块管理方法,其特征在于,存储步骤还包含第一换块步骤:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。
5.根据权利要求1所述的坏块管理方法,其特征在于,还包含坏块标记步骤:检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
6.一种坏块管理系统,其特征在于,包含存储模块;所述存储模块包含以下模块:
第一坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,对n号块进行擦除,执行编程模块;其中,n号块是指闪存中的第n块;
编程模块:对n号块进行编程;
第二坏块判断模块:若对n号块的一页编程失败,判断该页是否为最后一页,若是,n号块擦除,RAM读指针回退到n号块开始的位置,对n号块的编程结束;若否,RAM读指针回退到n号块开始的位置,判定n号块为坏块。
7.根据权利要求6所述的坏块管理系统,其特征在于,还包含回放模块,所述回放模块包含:
第三坏块判断模块:读取n号块最后一页冗余区第四字节,若读出0xFF,判定n号块为坏块;若未读出0xFF,执行读取模块;
读取模块:将n号块数据及校验码读入CPU;
第二换块模块:当判定n号块为坏块,或n号块数据及校验码全部读入CPU后,对n+1号块进行回放。
8.根据权利要求6所述的坏块管理系统,其特征在于,所述编程模块包含:
模块R1:将RAM中数据写入闪存主区缓冲区,RAM读指针递增至相应位置;
模块R2:将ECC校验数据0x55标记写入冗余区缓冲区相应位置;
模块R3:在n号块的一页上编程,若对该页的编程成功,返回执行模块S1;若页编程失败,执行第二坏块判断模块。
9.根据权利要求6所述的坏块管理系统,其特征在于,存储模块还包含第一换块模块:当判定n号块为坏块或对n号块的编程结束时,对n+1号块进行存储。
10.根据权利要求6所述的坏块管理系统,其特征在于,还包含坏块标记模块:检查闪存各个块的第一页或第二页的冗余区的第一个字节,若该字节为非0xFF的值,在该字节所在块的最后一页冗余区的第四个字节写入0xaa。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810210319.5A CN108664409B (zh) | 2018-03-14 | 2018-03-14 | 坏块管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810210319.5A CN108664409B (zh) | 2018-03-14 | 2018-03-14 | 坏块管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108664409A CN108664409A (zh) | 2018-10-16 |
CN108664409B true CN108664409B (zh) | 2021-05-11 |
Family
ID=63785192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810210319.5A Active CN108664409B (zh) | 2018-03-14 | 2018-03-14 | 坏块管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664409B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112908390B (zh) * | 2021-02-02 | 2023-07-28 | 深圳市显控科技股份有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN117112290A (zh) * | 2023-10-20 | 2023-11-24 | 广州翼辉信息技术有限公司 | 一种yaffs文件系统掉电乱码保护方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622306A (zh) * | 2012-02-21 | 2012-08-01 | 中颖电子股份有限公司 | 存储装置的坏块管理方法 |
CN105702300A (zh) * | 2016-01-11 | 2016-06-22 | 浙江大学 | 一种基于FPGA的NAND Flash容错系统 |
CN106158047A (zh) * | 2016-07-06 | 2016-11-23 | 深圳佰维存储科技股份有限公司 | 一种nand flash测试方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7373479B2 (en) * | 2004-03-25 | 2008-05-13 | International Business Machines Corporation | Method to allow PCI host bridge (PHB) to handle pre-fetch read transactions on the PCI bus which access system memory through translation control entry (TCE) table |
US7263649B2 (en) * | 2004-08-09 | 2007-08-28 | Phison Electronics Corporation | Converting circuit for preventing wrong error correction codes from occurring due to an error correction rule during data reading operation |
-
2018
- 2018-03-14 CN CN201810210319.5A patent/CN108664409B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622306A (zh) * | 2012-02-21 | 2012-08-01 | 中颖电子股份有限公司 | 存储装置的坏块管理方法 |
CN105702300A (zh) * | 2016-01-11 | 2016-06-22 | 浙江大学 | 一种基于FPGA的NAND Flash容错系统 |
CN106158047A (zh) * | 2016-07-06 | 2016-11-23 | 深圳佰维存储科技股份有限公司 | 一种nand flash测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108664409A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10061512B2 (en) | Data storage device and data writing method thereof | |
US10096357B2 (en) | Data storage device and data writing method thereof | |
US10592410B2 (en) | Backup mechanism of writing sequential data to single-level cell buffer and multi-level cell buffer | |
CN107526540B (zh) | 数据储存装置及其数据维护方法 | |
CN106484316B (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
US11630768B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device | |
EP2003569A2 (en) | Flash memory controller | |
US9058256B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US20190227926A1 (en) | Method for managing flash memory module and associated flash memory controller and electronic device | |
US9177656B2 (en) | Data writing method, memory storage device and memory controlling circuit unit | |
KR20170092536A (ko) | 다수의 순차적 기입 스트림을 관리하는 기술 | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
TWI460586B (zh) | 資料儲存裝置與快閃記憶體操作方法 | |
US20180101303A1 (en) | Data Storage Device and Data Writing Method Thereof | |
US20170285953A1 (en) | Data Storage Device and Data Maintenance Method thereof | |
CN109426451A (zh) | 将数据写入闪存模块的方法及相关闪存控制器与电子装置 | |
CN108664409B (zh) | 坏块管理方法及系统 | |
US20200192810A1 (en) | Data Storage Devices and Data Processing Methods | |
TWI692688B (zh) | 快閃記憶體控制器及相關電子裝置 | |
TW201913380A (zh) | 資料儲存裝置以及其操作方法 | |
CN109426447B (zh) | 用以优化数据储存装置的数据储存方法及其数据储存装置 | |
US20130179627A1 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
CN103514101A (zh) | 存取闪存的方法以及相关的记忆装置 | |
US9443604B2 (en) | Electronic device and data-management method thereof | |
US20190188101A1 (en) | Memory system and method of operating the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |