CN102331911A - 用于文件系统向Nand Flash写数据的驱动装置及方法 - Google Patents

用于文件系统向Nand Flash写数据的驱动装置及方法 Download PDF

Info

Publication number
CN102331911A
CN102331911A CN201110164953A CN201110164953A CN102331911A CN 102331911 A CN102331911 A CN 102331911A CN 201110164953 A CN201110164953 A CN 201110164953A CN 201110164953 A CN201110164953 A CN 201110164953A CN 102331911 A CN102331911 A CN 102331911A
Authority
CN
China
Prior art keywords
writing
write
data
file system
bad
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.)
Granted
Application number
CN201110164953A
Other languages
English (en)
Other versions
CN102331911B (zh
Inventor
赵志宇
钱嘉林
李星爽
段琳
张颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201110164953.8A priority Critical patent/CN102331911B/zh
Publication of CN102331911A publication Critical patent/CN102331911A/zh
Application granted granted Critical
Publication of CN102331911B publication Critical patent/CN102331911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种用于文件系统向Nand Flash写数据的驱动装置及方法。本发明在每一次写过程中均由驱动层结合硬件层来替代文件系统针对写过程中发现的坏块执行坏块管理,因而使得文件系统在每一次写过程中的驱动操作完成后即可开始下一次写过程的软件处理,从而能够减少文件系统在每次写过程中的等待时间,相应地,也就提高了文件系统的写效率。

Description

用于文件系统向Nand Flash写数据的驱动装置及方法
技术领域
本发明涉及对Nand Flash(与非闪存)的访问技术,特别涉及一种用于文件系统(本文全文所述的“文件系统”即是指“Nand Flash文件系统”)向Nand Flash写数据的驱动装置、以及一种用于文件系统向Nand Flash写数据的驱动方法。 
背景技术
Nand Flash由多个Block(块)组成,每个Block又由多个Page(页)组成。其中,Block是对Nand Flash擦除的基本操作单位,Page是对Nand Flash读或写时的基本操作单位。 
实际应用中,文件系统对Nand Flash的以Page为基本操作的读和写、以及以Block为基本操作单位的擦除,均需要通过驱动Nand Flash硬件控制器(本文后续将“Nand Flash硬件控制器”简称为“硬件控制器”)来执行。 
如图1所示,在用于文件系统访问Nand Flash的系统架构中,驱动层介于文件系统所在的软件层以及硬件控制器所在的硬件层之间。驱动层中提供了可被软件层的文件系统调用的初始化模块、读模块、写模块、以及擦除模块,这些模块可通过驱动层提供的软件接口(图1中未示出)与硬件层的硬件控制器交互。从而,初始化模块可启动硬件控制器对Nand Flash的初始化、并向文件系统上报Nand Flash的信息(例如可供文件系统使用的访问空间等),读模块则可以驱动硬件控制器执行读操作,写模块则可以驱动硬件控制器执行写操作,擦除模块则可以驱动硬件控制器执行擦除操作。实际应用中,驱动层中还设置有Buffer(缓冲区),用于在读模块驱动硬件控制器执行读操作的过程中暂存读数据、在写模块驱动硬件控制器执行写操作的过程 中暂存写数据。 
在如图1所示的架构中,每一次执行读、写、擦除的过程都是由文件系统的软件处理、驱动层中相应模块的驱动操作、以及硬件层的硬件操作以串行方式交替组成。 
其中,对于写过程来说,上述的串行方式会大大降低文件系统的写效率。具体参见图2,文件系统对Nand Flash的一次写操作过程包括: 
S201,文件系统准备要写入Nand Flash的数据; 
S202,文件系统对准备好的数据进行均衡算法处理; 
S203,文件系统对准备好的数据进行ECC(Error Correcting Code,错误纠正码)计算; 
S204,文件系统调用驱动层的写模块。 
S205,写模块在被文件系统调用后向硬件控制器发送写命令和写地址; 
S206,写模块将来自文件系统的写数据存入至Buffer; 
S207,写模块启动硬件控制器开始执行写操作。 
S208,硬件控制器向Nand Flash发送写命令和写地址; 
S209,硬件控制器将Buffer中的写数据向Nand Flash写入。 
S210,硬件控制器在写数据写入完成之后检测Nand Flash是否由Busy(忙)状态变为Ready(准备)状态。 
S211,硬件控制器在检测出Nand Flash由Busy变为Ready状态后从Nand Flash获取写状态。 
S212,写模块接收硬件控制器上报的写状态、并块判断写状态是否为成功,如果是,则跳转至S213,否则跳转至S214; 
S213,写模块向文件系统返回OK、表示文件系统可继续对下一次写进行处理,然后跳转至S215; 
S214,写模块向文件系统返回ERR(错误),然后跳转至S215。 
S215,文件系统依据写模块返回的OK或ERR判断是否写成功,如果是则结束本次写过程、并可继续对下一次写进行处理,否则跳转至S216; 
S216,文件系统进行坏块管理,然后结束本次写过程、并可继续对下一次写进行处理。
从上述过程可以看出,文件系统在每次写过程中只需要在S201~S204执行软件处理、以及S215~S216执行坏块管理,并在驱动层的驱动操作和硬件控制器的硬件操作阶段均处于等待状态。 
在文件系统处于等待状态的驱动操作和硬件操作阶段中,大部分耗时都集中在硬件操作阶段;而在硬件操作阶段中,检测Nand Flash是否由Busy状态变为Ready状态的耗时会占到硬件操作总耗时的73%~83%,因此,检测Nand Flash是否由Busy状态变为Ready状态就极大地增加了文件系统在写过程中的等待时间,进而导致文件系统的写效率不高。 
发明内容
有鉴于此,本发明提供了一种用于文件系统向Nand Flash写数据的驱动装置、以及一种用于文件系统向Nand Flash写数据的驱动方法,能够提高文件系统对Nand Flash的写效率。 
本发明提供的一种用于文件系统向Nand Flash写数据的驱动装置,该驱动装置位于文件系统与硬件控制器之间的驱动层,该驱动装置包括: 
初始化模块,在初始化时将Nand Flash划分为保留空间和供文件系统使用的访问空间; 
索引存储模块,其中存放有坏块索引表,所述坏块索引表中记录了访问空间中的坏块在保留空间中的对应块; 
写模块,在被文件系统调用、并且确认能够开始新一次的写后,依据所述坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块,以及,备份当前写的写数据,并在启动硬件控制器以坏块过滤后的写地址将当前写的写数据向Nand Flash写入后通知文件系统开始对下一次写进行软件处理; 
坏块管理模块,依据硬件控制器上报的Nand Flash的写状态判断当前写 成功或失败,如果当前写成功则通知写模块能够开始新一次的写,否则调用读模块和写模块; 
读模块,在被坏块管理模块调用后,启动硬件控制器以指向当前写失败的块的读地址从Nand Flash中读取数据; 
写模块还在被坏块管理模块调用后,启动硬件控制器以指向保留空间中任一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入; 
坏块管理模块还在读取的数据及所述备份的写数据写完成后,将当前写失败的块作为坏块、读取的数据及所述备份的写数据所写入的块作为对应块在所述坏块索引表中增加记录,并通知写模块能够开始新一次的写。 
访问空间中的总块数为Nand Flash的最小合法块数量减1。 
保留空间中包含有Nand Flash的首块,保留空间中的所述首块用于备份所述坏块索引表、其余块用作访问空间中的坏块在保留空间中的对应块。 
所述坏块索引表中包含有每一所述其余块对应的表项,每一表项中包含有表示对应的所述其余块是否被使用的标记位、以及映射在对应的所述其余块的坏块标识。 
坏块管理模块如果在读取的数据及所述备份的写数据的写入过程中,接收到硬件控制器上报的表示写失败的写状态,则进一步重新调用写模块、使写模块重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入。 
进一步包括第一Buffer和第二Buffer以及第三Buffer,其中: 
写模块将当前写的写数据存放至第一Buffer、并在第二Buffer中备份; 
读模块在被坏块管理模块调用后所读取的数据存放至第三Buffer; 
坏块管理模块进一步在当前写失败时,将第二Buffer中备份的当前写的写数据转移至第三Buffer与读取的数据合并。 
读模块进一步在被文件系统调用后,依据所述坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块; 
以及,该驱动装置进一步包括擦除模块,在被文件系统调用后,依据所述坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指向坏块时能够被映射至保留空间中的对应块。 
本发明提供的一种用于文件系统向Nand Flash写数据的驱动方法,该驱动方法应用于文件系统与硬件控制器之间的驱动层,其特征在于,该驱动方法包括: 
a0、在初始化时将Nand Flash划分为保留空间和供文件系统使用的访问空间,以及,在驱动层设置坏块索引表,所述坏块索引表中记录了访问空间中的坏块在保留空间中的对应块; 
a1、在被文件系统调用驱动写操作、并且确认能够开始新一次的写后,依据所述坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块,以及,备份当前写的写数据,并在启动硬件控制器以坏块过滤后的写地址将当前写的写数据向Nand Flash写入后通知文件系统开始对下一次写进行软件处理; 
a4、依据硬件控制器上报的Nand Flash的写状态判断当前写成功或失败,如果当前写成功则确认能够开始新一次的写,否则执行步骤a5; 
a5、启动硬件控制器以指向当前写失败的块的读地址从Nand Flash中读取数据; 
a6、启动硬件控制器以指向保留空间中任一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入; 
a7、在读取的数据及所述备份的写数据写完成后,将当前写失败的块作为坏块、读取的数据及所述备份的写数据所写入的块作为对应块在所述坏块索引表中增加记录,并确认能够开始新一次的写。 
访问空间中的总块数为Nand Flash的最小合法块数量减1。 
保留空间中包含有Nand Flash的首块,保留空间中的所述首块用于备份所述坏块索引表、其余块用作访问空间中的坏块在保留空间中的对应块。 
所述坏块索引表中包含有每一所述其余块对应的表项,每一表项中包含 有表示对应的所述其余块是否被使用的标记位、以及映射在对应的所述其余块的坏块标识。 
所述步骤a6中,如果在读取的数据及所述备份的写数据的写入过程中,接收到硬件控制器上报的表示写失败的写状态,则进一步重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入。 
该方法进一步在驱动层设置第一Buffer和第二Buffr以及第三Buffer,其中: 
所述步骤a1中将当前写的写数据存放至第一Buffer、并在第二Buffer中备份; 
所述步骤a5中将读取的数据存放至第三Buffer; 
所述步骤a5之后、步骤a6之前进一步将第二Buffer中备份的当前写的写数据转移至第三Buffer与读取的数据合并。 
在步骤a7之后,该方法进一步包括: 
在被文件系统调用驱动读操作后,依据所述坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块; 
以及,在被文件系统调用驱动擦除操作后,依据所述坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指向坏块时能够被映射至保留空间中的对应块。 
由上述技术方案可见,本发明在每一次写过程中均由驱动层结合硬件层来替代文件系统针对写过程中发现的坏块执行坏块管理,因而使得文件系统在每一次写过程中的驱动操作完成后即可开始下一次写过程的软件处理,从而能够减少文件系统在每次写过程中的等待时间,相应地,也就提高了文件系统的写效率。 
附图说明
图1为现有技术中用于文件系统访问Nand Flash的系统架构示意图; 
图2为现有技术中基于如图1所示架构实现文件系统向Nand Flash写数据过程的示意图; 
图3为本发明实施例中实现文件系统向Nand Flash写数据的流水线方式示意图; 
图4为本发明实施例中用于文件系统访问Nand Flash的系统架构示意图; 
图5为本发明实施例中对Nand Flash进行初始化时划分空间的一实例示意图; 
图6a至图6c为本发明实施例中如图4所示架构实现文件系统向Nand Flash写数据的过程示意图; 
图7为本发明实施例中用于文件系统向Nand Flash写数据的驱动方法的流程示意图。 
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。 
本实施例为了解决文件系统的写效率低的问题,将写过程由串行方式改为串并结合的流水线方式。 
具体参见图3,每一次(即第i次,i为大于等于1且小于n的正整数)的写过程中,依次由文件系统执行当前次(第i次)写过程的软件操作、驱动层执行当前次写过程的驱动操作、硬件层执行当前次写过程的硬件操作、以及由驱动层结合硬件层来替代文件系统针对写过程中发现的坏块执行坏块管理(由于并不是每次写过程均会发生坏块管理、因而在图3中以虚线表示)。 
如图3可见,由于文件系统不需要再等待硬件操作之后来执行坏块管 理,因而驱动层可以在当前次写过程的驱动操作完成后即通知文件系统写成功,从而使文件系统在驱动层执行完当前次写过程的驱动操作后即可开始下一次(第i+1次)写过程的软件处理。 
这样,就使得文件系统针对下一次写的软件处理与硬件控制器针对当前次写的硬件操作全部或部分地同步进行,从而使得二者同步进行的全部或部分耗时被抵消。从而,就减少了文件系统在每次写过程中的等待时间,相应地,也就提高了文件系统的写效率。虽然驱动层结合硬件层执行坏块管理会造成下一次写的延误,但毕竟在实际应用中出现坏块的概率并不高(即,实际应用中不会出现图3中所示出的每次写均需要坏块管理的情况),因此,相比于串行方式的每次写都需要等待大量时间的情况,多次写中偶尔出现一次或几次的坏块管理所造成的延误可以忽略不计。 
下面,结合具体实施例,对如何实现驱动层执行坏块管理、以及如何通过驱动层执行坏块管理来实现流水线方式予以详细说明。 
图4为本发明实施例中用于文件系统访问Nand Flash的系统架构示意图。如图4所示,在本实施例中用于文件系统访问Nand Flash的系统架构中,驱动层介于文件系统所在的软件层以及硬件控制器所在的硬件层之间。驱动层中包括有:可被软件层的文件系统调用的加速初始化模块、读模块、加速写模块、擦除模块、以及索引存储模块和坏块管理模块,这些模块可通过驱动层提供的软件接口(图4中未示出)与硬件层的硬件控制器交互。 
其中,读模块和擦除模块所能够驱动的读和擦除过程仍采用串行方式;而加速初始化模块、加速写模块、以及索引存储模块和坏块管理模块则主要用于实现流水线方式的写过程,从而实现相比于串行方式写过程的加速效果,加速初始化模块和加速写模块中的“加速”也正是为了体现这样的加速效果、并容易区分与现有技术中如图1所示的常规的初始化模块和写模块的不同之处。 
具体说: 
加速初始化模块,其在初始化时将Nand Flash划分为用于驱动层实现坏 块管理的保留空间、以及向文件系统上报并供文件系统使用的访问空间。 
索引存储模块,其中存放有坏块索引表,坏块索引表中记录了访问空间中的坏块在保留空间中的对应块。 
其中,坏块索引表是在驱动层执行的坏块管理过程中维护的,只要发现访问空间中的坏块,坏块中的数据即可在坏块管理过程中被转移至保留空间中的对应块,相应地,坏块索引表中就会增添相应的记录(对于数据的转移和坏块索引表的维护将在下文中予以详细说明)。 
这样,文件系统对访问空间中的坏块的读、写、以及擦除,均可通过坏块索引表被映射在保留空间中的对应块。相应地,也就需要读模块、加速写模块、以及擦除模块具有依据坏块索引表进行地址重映射的功能。 
此外,由于坏块的映射是由驱动层来完成,因而坏块索引表中记录的坏块对于文件系统并不可见,从而也就不需要文件系统再关注坏块的存在、更不需要文件系统对写过程中发现的坏块进行坏块管理。 
读模块在被文件系统调用后,需要依据坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块,读模块在读过程中需要执行的其他驱动操作均按照现有方式来实现; 
同样地,擦除模块在被文件系统调用后,也需要依据坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指向坏块时能够被映射至保留空间中的对应块,擦除模块在擦除过程中需要执行的其他驱动操作也均按照现有方式来实现。 
加速写模块,其在被文件系统调用后,需要等待上一次写的硬件操作已完成、或可能出现的坏块管理操作已完成后才能够进行当前写的驱动操作,这是因为对于每次的写过程,文件系统的软件处理与硬件控制器的硬件操作为非串行过程,导致文件系统的软件处理有可能在硬件控制器的硬件操结束之前完成。那么,加速写模块在被文件系统调用时,如果上一次写的硬件操作尚未完成、或可能出现的坏块管理操作未完成,则加速写模块需要通知文 件系统将当前写的任务暂时挂起,直至上一次写的硬件操作完成为止。 
也就是说: 
加速写模块在被文件系统调用、并且确认能够开始新一次的写(即确认上一次写的硬件操作已完成或可能出现的坏块管理操作已完成)后,才能够进行当前写的驱动操作。 
在被文件系统调用后针对当前写的驱动操作包括:依据坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块;在图4中示出的Buffer2内备份当前写的写数据、以便于在当前写失败后进行坏块管理时使用;然后,按照现有方式向硬件控制器发送写命令、以及经过坏块过滤的当前写的写地址,并将当前写的写数据放入至Buffer1,再启动硬件控制器以坏块过滤后的写地址将Buffer1中的当前写的写数据向Nand Flash写入;以及,在启动硬件控制器以坏块过滤后的写地址将当前写的写数据向Nand Flash写入之后,通知文件系统开始对下一次写进行软件处理。 
坏块管理模块,其依据硬件控制器上报的Nand Flash的写状态判断当前写成功或失败; 
如果当前写成功则通知加速写模块能够开始新一次的写;可选地,加速写模块可以进一步为每一次写维护一个用于表示写是否完成的标记,坏块管理模块进一步通过将该标记设置为写完成状态来通知加速写模块能够开始新一次的写;另外,如果文件系统此时已针对下一次写调用了加速写模块、并由于当前写未完成而将下一次写的任务挂起,则加速写模块可以在获知当前写已完成后通知文件系统解除挂起; 
否则,表示当前写失败,则调用读模块和加速写模块、并将Buffer2中备份的当前写的写数据转移至Buffer3中。 
读模块在被坏块管理模块调用后,启动硬件控制器以指向当前写失败的块(即坏块)的读地址从Nand Flash中读取数据、并存入至Buffer3中。 
其中,所读取的数据是,在当前写失败的块内的除了当前写的一页写数 据之外的其他所有页,因此,读模块被坏块管理模块的调用是以页为单位的多次调用。进而,由于Buffer2中备份的当前写的一页写数据也会被转移至Buffer3中,因而就相当于在Buffer3中将属于同一坏块的所有页的数据合并。也就是说,Buffer1和Buffer2可以是只足够存放一页数据的页Buffer,而Buffer3则是需要足够存放一块数据的块Buffer。 
实际应用中,Buffer1、Buffer2、Buffer3都可以是随时申请的内存空间,而并不一定是一直存在于驱动层中的存储结构。例如,Buffer1和Buffer2可以由读模块和加速写模块随时申请,Buffer3则是由坏块管理模块在判断出当前写失败之后、调用读模块之前申请。 
加速写模块在被坏块管理模块调用后,启动硬件控制器以指向保留空间中任一可用块的写地址,将Buffer3中存放的数据(即包含读取的数据、以及从Buffer2中转移而来的当前写的写数据)向Nand Flash写入。其中,由于当前写失败的块内的所有页数据均要以页为单位写入至保留空间中的可用块,加速写模块被坏块管理模块的调用也是以页为单位的多次调用。 
上述读模块和加速写模块被坏块管理模块调用后所驱动的读、写操作即是前文所述的将坏块中的数据转移至保留空间中的对应块。 
实际应用中,指向当前写失败的块的读地址、以及指向保留空间中任一可用块的写地址都是由坏块管理模块提供的,坏块管理模块向读模块提供的指向当前写失败的块的读地址、以及向加速写模块提供的指向保留空间中任一可用块的写地址,能够保证坏块中的各页在对应块中保持相同的位置,因而不会导致数据转移后的混乱。 
而且,由于在被坏块管理模块调用后的读、写地址都是指向保留空间的,因而,此时的读模块和加速写模块无需再利用坏块索引表进行坏块过滤。 
可选地,以上所述的读模块和加速写模块被坏块管理模块调用后所驱动的读、写操作,也可以不是先读、以及合并,然后再写,而是可以按照各页的顺序,每从坏块读一页至Buffer1就将Buffer1的一页向对应的可用块写入的交替执行的操作、并在此期间的适当时机内将Buffer2中备份的一页数 据向对应的可用块写入,这种情况下可以不需要Buffer3、以节省内存空间。 
此外,坏块管理模块向加速写模块提供的写地址所指向的可用块,是坏块管理模块在保留空间中任意所选择的,其中的“可用”是指该块尚未被其他坏块转移而来的数据所占用。但即便是保留空间中的“可用”的块,也有可能是坏块。 
这种情况下,仍需要坏块管理模块判断向该可用块写入每一页后的写状态是否为写成功,块管理模块如果在读取的数据及所述备份的写数据的写入过程中,接收到硬件控制器上报的表示写失败的写状态,则需要重新选择保留空间中的另一可用块,并进一步重新调用加速写模块,使加速写模块重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据、及备份的当前写的写数据向Nand Flash写入。 
如此反复,直至读取的数据、及备份的当前写的写数据全部被成功写入至保留空间中的某一可用块为止。 
此后,坏块管理模块在Buffer3中存放的所读取的数据、及备份的当前写的写数据写完成后,将当前写失败的块作为坏块、将读取的数据及备份的当前写的写数据最终成功写入的保留空间中的块作为对应块,在坏块索引表中增加相应的记录、然后通知加速写模块能够开始新一次的写,此时,如果文件系统已针对下一次写调用了加速写模块、并由于当前写未完成而将下一次写的任务挂起,则加速写模块可以在获知当前写已完成后通知文件系统解除挂起。 
如上可见,只要硬件处理器被启动开始执行当前写的硬件操作,文件系统即可开始下一次写的软件处理,从而使得当前写的硬件操作与下一次写的软件处理的同步部分的耗时能够相互抵消。 
进而,文件系统在每次写过程中通常需要的等待时间,能够由“软件操作耗时+驱动操作耗时+硬件操作耗时”减少为“软件处理耗时与硬件操作耗时这二者中的最大值+驱动操作耗时”,这样,也能够提高文件系统的写效率。 
即便偶尔出现坏块而导致等待时间为“软件处理耗时与硬件操作耗时这二者中的最大值+驱动操作耗时+坏块管理耗时”,但由于此类情况出现的概率很低,因而相对于多次写过程的等待时间总和,偶尔出现的此类情况的等待时间不会明显影响到写效率。 
而且,如上述可知,软件处理耗时与硬件操作耗时的长短越接近、即软件处理耗时与硬件操作耗时之差的绝对值越小,文件系统的等待时间中的无效部分就越少,相应地,写加速的效果就越好;反之,写加速的效果就不明显。 
因此,较佳地,在如图4所示的架构中,仍可以设置现有技术中如图1所示的常规写模块,该常规写模块仍按照现有的串行方式执行驱动操作、但需要具有依据坏块索引表进行地址重映射的功能。 
这样,优选地: 
对于上述绝对值较大的情况(例如,在批量连续写时,文件系统集中对分次写的各页集中处理,从而导致每次以页为单位的写过程所需的软件处理时间都很短),文件系统可以调用常规写模块、并可以由文件系统负责此时的坏块管理,以避免为了不明显的加速效果而增加驱动层的负担; 
而对于上述绝对值较小的情况(例如,在无法被文件系统集中处理的离散写时,每次写过程所需的软件处理时间都比较长、并与硬件操作耗时相近),文件系统可以调用加速写模块,并由驱动层负责坏块管理,以此产生明显的加速效果。 
另需要说明的是,每个Nand Flash都有其生产厂商承诺的NVB(number of valid BLOCKs,最小合法块数目),在Nand Flash的使用寿命周期内,如果可使用的总块数不低于NVB则能够确保较高的可靠性。 
因此,加速初始化模块在划分时,可以使保留空间中可用于转移数据的块数满足Nand Flash的总块数减去NVB的差,这样,允许的坏块总数就不会导致Nand Flash的可用块数低于NVB,如此就能够利用生产厂商所承诺的NVB来确保更高的可靠性。 
需要说明的是,NVB仅仅是一种为了达到较高可靠性的参考值,但决不是可使用的总块数低于NVB就会导致Nand Flash不可被访问,因此,加速初始化模块也并不是必须依照NVB来划分。 
此外,Nand Flash的首块(Block0)通常都能够被确保是好块、保证可以连续擦写1000次。因此,还可以利用首块来备份索引存储模块中的坏块索引表、以确保坏块索引表不会丢失。 
但由于坏块索引表中的坏块对文件系统不可见(如前文所述),因此,首块也应划归在保留空间中。 
其中,首块中的坏块索引表可以由加速初始化模块建立,并由坏块管理模块调用加速写模块(如果同时存在常规写模块也可调用常规写模块),并启动硬件控制器以指向首块的写地址来更新首块中的坏块索引表。 
这样一来,访问空间中的总块数就为Nand Flash的NVB-1。 
图5中以256M字节的Nand Flash为例,其总块数为2048、NVB为2008,也就是说最多可以有40个坏块。 
在划分时: 
首块Block0、以及Block1~Block40共41个块被划分在保留空间,其中,首块Block0用于存放坏块索引表、Block1~Block40作为访问空间中的坏块的对应块; 
Block41~Block2047共2007(即NVB-1)个块被划分在访问空间、并上报给文件系统。 
这样,当访问空间中最多出现了40个坏后,可以由保留空间中Block1~Block40这40个对应块顶替,再加上能够确保是好块的首块Block0,通常(备用的Block1~Block40由于不常被使用,因而出现坏块的概率不高)就能够确保Nand Flash中的好块不会低于2008。 
仍参见图5,首块Block0的坏块索引表(与索引存储模块存放的坏块索引表相同)中,包含有保留空间中除首块之外的其余每一块Block1~Block40对应的表项。每一表项中包括: 
表示该表项在Block1~Block40中对应块是否被使用的标记(Flag)位; 
以及,映射于该表项在Block1~Block40中对应块的坏块(访问空间中的Block41~Block2047)的标识,以表示该表项在Block1~Block40中对应块备份有访问空间中Block41~Block2047的哪一个坏块的数据,该标识在图5中由块号表示。 
可选地,每一表项中还可以包括表示该表项在Block1~Block40中对应块是否为坏块的标记,以供在数据转移过程中发现保留空间中的坏块后可予以标识。 
在上述架构中,如果只需要实现提高写效率的加速写过程,则无需包含擦除模块,即,加速初始化模块、读模块、加速写模块、以及索引存储模块和坏块管理模即可作为一驱动装置。 
图6a至图6c为本发明实施例中如图4所示架构实现文件系统向Nand Flash写数据的过程示意图。在按照前文所述方式对Nand Flash进行初始化、并将Nand Flash划分为保留空间和供文件系统使用的访问空间之后,如图6a至图6c所示,该过程包括: 
S601,文件系统准备要写入Nand Flash的数据; 
S602,文件系统对准备好的数据进行均衡算法处理; 
S603,文件系统对准备好的数据进行ECC计算。 
S604,文件系统调用加速写模块。 
S605,加速写模块在被文件系统调用之后,判断是否能够开始新一次的写,如果是,则直接跳转至S606,否则等待上一次写的硬件操作完成后在跳转至S606、并通知文件系统在此等待过程中将当前写的任务挂起。 
S606,加速写模块在被文件系统调用、并且确认上一次写的硬件操作已完成后,依据坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块。 
S607,加速写模块在Buffer2中备份当前写的写数据。 
S608,加速写模块向硬件控制器发送写命令、经坏块过滤后的写地址。 
S609,加速写模块将当前写的写数据存入至Buffer1中。 
S610,加速写模块启动硬件控制器开始以坏块过滤后的写地址将当前写的写数据向Nand Flash写入。 
S611,加速写模块向文件系统返回OK,通知文件系统可以开始对下一次写进行软件处理。 
S612,硬件控制器向Nand Flash发送写命令和坏块过滤后的写地址。 
S613,硬件控制器将Buffer1中的当前的写数据向Nand Flash写入。 
S614,硬件控制器在写数据写入完成之后检测Nand Flash是否由Busy状态变为Ready状态。 
S615,硬件控制器在检测出Nand Flash由Busy变为Ready状态后从Nand Flash获取写状态。 
S616,坏块管理模块接收硬件控制器上报的写状态、并判断写状态是否为成功,如果是,则跳转至S633,否则跳转至S617。 
S617,坏块管理模块调用读模块,由读模块向硬件控制器发送读命令、以及指向当前写失败的块的读地址。 
S618,读模块启动硬件控制器以指向当前写失败的块的读地址从Nand Flash中读取数据。 
S619,硬件控制器向Nand Flash发送读命令、以及指向当前写失败的块的写地址。 
S620,硬件控制器接收Nand Flash输出的一页读数据、并上传至Buffer3。 
S621,坏块管理模块判断当前写失败的块中应读取的数据是否读完,如果是则跳转至S622,否则返回S617继续读取。 
S622,坏块管理模块将Buffer2中备份的当前写的写数据转移至Buffer3,以将当前写失败的块的数据合并。 
S623,坏块管理模块选择一个保留空间中的可用块。 
S624,坏块管理模块调用加速写模块,由加速写模块向硬件控制器发送 写命令、以及指向选择的可用块的写地址。 
S625,加速写模块启动硬件控制器以指向选择的可用块的写地址将Buffer1中属于当前写失败的块的数据(即读取的数据及备份的当前的写数据)向Nand Flash写入。 
S626,硬件控制器向Nand Flash发送写命令和指向选择的可用块的写地址。 
S627,硬件控制器将Buffer3中合并数据中的一页数据向Nand Flash写入。 
S628,硬件控制器在写数据写入完成之后检测Nand Flash是否由Busy状态变为Ready状态。 
S629,硬件控制器在检测出Nand Flash由Busy变为Ready状态后从Nand Flash获取写状态。 
S630,坏块管理模块接收硬件控制器上报的写状态、并判断写状态是否为成功,如果是,则跳转至S631,否则返回至S623重新选择、并记录之前选择的块为坏块。 
S631,坏块管理模块判断Buffer3中合并的数据是否写完,如果是则跳转至S632,否则返回S624继续写入。 
S632,坏块管理模块将当前写失败的块作为坏块、读取的数据及备份的写数据成功写入的可用块作为对应块,在坏块索引表中增加记录。
S633,坏块管理模块通知加速写模块能够开始新一次的写,并返回至S605。 
至此,上述过程结束。 
以上,是对本实施例中用于文件系统访问Nand Flash的系统架构、以及该架构中的驱动装置的详细说明。 
下面,再对本实施例中用于文件系统向Nand Flash写数据的驱动方法进行说明。 
图7为本发明实施例中用于文件系统向Nand Flash写数据的驱动方法的 流程示意图。如图7所示,本实施例中用于文件系统向Nand Flash写数据的驱动方法包括: 
S700,驱动层驱动硬件控制器对Nand Flash进行初始化,将Nand Flash划分为保留空间和供文件系统使用的访问空间,以及,在驱动层设置如前文所述的坏块索引表。 
优选地,划分的访问空间中的总块数满足Nand Flash的NVB,保留空间中包含有Nand Flash的首块,并将保留空间中的首块用于备份如前文所述的坏块索引表、其余块作为访问空间中的坏块的对应块。 
在S700之后,文件系统即开始进行写的软件处理,具体包括:准备要写入Nand Flash的数据、对准备好的数据进行均衡算法处理、对准备好的数据进行ECC计算等。 
S701,驱动层在被文件系统调用驱动写操作、并且确认能够开始新一次的写后,依据坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块。 
S702,驱动层备份当前写的写数据,并在启动硬件控制器开始以坏块过滤后的写地址将当前写的写数据向Nand Flash写入之后,通知文件系统可以开始对下一次写进行软件处理。 
在S702之后,硬件控制器即开始执行当前写的硬件操作,具体包括:向Nand Flash发送写命令和坏块过滤后的写地址、将当前的写数据向Nand Flash写入、在写数据写入完成之后检测Nand Flash是否由Busy状态变为Ready状态、以及在检测出Nand Flash由Busy变为Ready状态后从Nand Flash获取写状态。 
在硬件控制器开始执行当前写的硬件操作的同时,文件系统即可针对下一次写开始进行软件处理。 
S703,驱动层接收硬件控制器上报的写状态、并判断写状态是否为成功,如果是,则确认能够开始新一次的写并返回S701,否则跳转至S704。 
S704,驱动层启动硬件控制器以指向当前写失败的块的读地址从Nand  Flash中读取数据。 
S705,驱动层启动硬件控制器以指向保留空间中任一可用块的写地址将读取的数据及备份的当前的写数据向Nand Flash写入。 
实际应用中,S704可以是以页为单位的连续多次读、直至当前写失败的块中的数据被全部读出,并且在S704之后,驱动层可以将读取的数据与之前备份的当前写的写数据在同一内存空间中合并,然后在S705再以页为单位的连续多次写、直至合并的数据全部被写完。 
当然,也可以不是先读、以及合并,然后再写,而是可以按照各页的顺序,交替地通过S704和S705每读一页即写一页,并在次过程中将备份的写数据在合适的时机写入,这样,可以节省合并数据所需的空间。 
此外,在向保留空间的可用块写入数据的过程中,驱动层也需要判断向该可用块写入每一页后的写状态是否为写成功,如果出现写失败的写状态,则需要重新选择保留空间中的另一可用块,并重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据、及备份的当前写的写数据向Nand Flash写入。如此反复,直至读取的数据、及备份的当前写的写数据全部被成功写入至保留空间中的某一可用块为止。 
S706,驱动层在读取的数据及所述备份的写数据写完成后,将当前写失败的块作为坏块、读取的数据及备份的写数据最终成功写入的块作为对应块在坏块索引表中增加记录,并确认能够开始新一次的写、返回S701。 
至此,驱动方法的上述流程结束。 
经过上述流程之后: 
如果驱动层被文件系统调用驱动读操作,并依据坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块,则能够从保留空间中的对应块读取到访问空间中的坏块内的数据; 
如果驱动层被文件系统调用驱动擦除操作,并依据所述坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指 向坏块时能够被映射至保留空间中的对应块,则能够将有访问空间中的坏块映射在保留空间中的对应块内的数据擦除。 
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。 

Claims (14)

1.一种用于文件系统向Nand Flash写数据的驱动装置,该驱动装置位于文件系统与硬件控制器之间的驱动层,其特征在于,该驱动装置包括:
初始化模块,在初始化时将Nand Flash划分为保留空间和供文件系统使用的访问空间;
索引存储模块,其中存放有坏块索引表,所述坏块索引表中记录了访问空间中的坏块在保留空间中的对应块;
写模块,在被文件系统调用、并且确认能够开始新一次的写后,依据所述坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块,以及,备份当前写的写数据,并在启动硬件控制器以坏块过滤后的写地址将当前写的写数据向Nand Flash写入后通知文件系统开始对下一次写进行软件处理;
坏块管理模块,依据硬件控制器上报的Nand Flash的写状态判断当前写成功或失败,如果当前写成功则通知写模块能够开始新一次的写,否则调用读模块和写模块;
读模块,在被坏块管理模块调用后,启动硬件控制器以指向当前写失败的块的读地址从Nand Flash中读取数据;
写模块还在被坏块管理模块调用后,启动硬件控制器以指向保留空间中任一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入;
坏块管理模块还在读取的数据及所述备份的写数据写完成后,将当前写失败的块作为坏块、读取的数据及所述备份的写数据所写入的块作为对应块在所述坏块索引表中增加记录,并通知写模块能够开始新一次的写。
2.如权利要求1所述的驱动装置,其特征在于,访问空间中的总块数为Nand Flash的最小合法块数量减1。
3.如权利要求2所述的驱动装置,其特征在于,保留空间中包含有NandFlash的首块,保留空间中的所述首块用于备份所述坏块索引表、其余块用作访问空间中的坏块在保留空间中的对应块。
4.如权利要求3所述的驱动装置,其特征在于,所述坏块索引表中包含有每一所述其余块对应的表项,每一表项中包含有表示对应的所述其余块是否被使用的标记位、以及映射在对应的所述其余块的坏块标识。
5.如权利要求1至4中任一项所述的驱动装置,其特征在于,坏块管理模块如果在读取的数据及所述备份的写数据的写入过程中,接收到硬件控制器上报的表示写失败的写状态,则进一步重新调用写模块、使写模块重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入。
6.如权利要求1至4中任一项所述的驱动装置,其特征在于,进一步包括第一Buffer和第二Buffer以及第三Buffer,其中:
写模块将当前写的写数据存放至第一Buffer、并在第二Buffer中备份;
读模块在被坏块管理模块调用后所读取的数据存放至第三Buffer;
坏块管理模块进一步在当前写失败时,将第二Buffer中备份的当前写的写数据转移至第三Buffer与读取的数据合并。
7.如权利要求1至4中任一项所述的驱动装置,其特征在于,
读模块进一步在被文件系统调用后,依据所述坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块;
以及,该驱动装置进一步包括擦除模块,在被文件系统调用后,依据所述坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指向坏块时能够被映射至保留空间中的对应块。
8.一种用于文件系统向Nand Flash写数据的驱动方法,该驱动方法应用于文件系统与硬件控制器之间的驱动层,其特征在于,该驱动方法包括:
a0、在初始化时将Nand Flash划分为保留空间和供文件系统使用的访问空间,以及,在驱动层设置坏块索引表,所述坏块索引表中记录了访问空间中的坏块在保留空间中的对应块;
a1、在被文件系统调用驱动写操作、并且确认能够开始新一次的写后,依据所述坏块索引表对文件系统的当前写的写地址进行坏块过滤、以使当前写的写地址在指向坏块时能够被映射至保留空间中的对应块,以及,备份当前写的写数据,并在启动硬件控制器以坏块过滤后的写地址将当前写的写数据向Nand Flash写入后通知文件系统开始对下一次写进行软件处理;
a4、依据硬件控制器上报的Nand Flash的写状态判断当前写成功或失败,如果当前写成功则确认能够开始新一次的写,否则执行步骤a5;
a5、启动硬件控制器以指向当前写失败的块的读地址从Nand Flash中读取数据;
a6、启动硬件控制器以指向保留空间中任一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入;
a7、在读取的数据及所述备份的写数据写完成后,将当前写失败的块作为坏块、读取的数据及所述备份的写数据所写入的块作为对应块在所述坏块索引表中增加记录,并确认能够开始新一次的写。
9.如权利要求8所述的驱动方法,其特征在于,访问空间中的总块数为Nand Flash的最小合法块数量减1。
10.如权利要求9所述的驱动方法,其特征在于,保留空间中包含有Nand Flash的首块,保留空间中的所述首块用于备份所述坏块索引表、其余块用作访问空间中的坏块在保留空间中的对应块。
11.如权利要求10所述的驱动方法,其特征在于,所述坏块索引表中包含有每一所述其余块对应的表项,每一表项中包含有表示对应的所述其余块是否被使用的标记位、以及映射在对应的所述其余块的坏块标识。
12.如权利要求8至11中任一项所述的驱动方法,其特征在于,所述步骤a6中,如果在读取的数据及所述备份的写数据的写入过程中,接收到硬件控制器上报的表示写失败的写状态,则进一步重新启动硬件控制器以指向保留空间中另一可用块的写地址将读取的数据及所述备份的写数据向Nand Flash写入。
13.如权利要求8至11中任一项所述的驱动方法,其特征在于,该方法进一步在驱动层设置第一Buffer和第二Buffer以及第三Buffer,其中:
所述步骤a1中将当前写的写数据存放至第一Buffer、并在第二Buffer中备份;
所述步骤a5中将读取的数据存放至第三Buffer;
所述步骤a5之后、步骤a6之前进一步将第二Buffer中备份的当前写的写数据转移至第三Buffer与读取的数据合并。
14.如权利要求8至11中任一项所述的驱动方法,其特征在于,在步骤a7之后,该方法进一步包括:
在被文件系统调用驱动读操作后,依据所述坏块索引表对文件系统的当前读的读地址进行坏块过滤、以使当前读的读地址在指向坏块时能够被映射至保留空间中的对应块;
以及,在被文件系统调用驱动擦除操作后,依据所述坏块索引表对文件系统的当前擦除的擦除地址进行坏块过滤、以使当前擦除的擦除地址在指向坏块时能够被映射至保留空间中的对应块。
CN201110164953.8A 2011-06-17 2011-06-17 用于文件系统向Nand Flash写数据的驱动装置及方法 Active CN102331911B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110164953.8A CN102331911B (zh) 2011-06-17 2011-06-17 用于文件系统向Nand Flash写数据的驱动装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110164953.8A CN102331911B (zh) 2011-06-17 2011-06-17 用于文件系统向Nand Flash写数据的驱动装置及方法

Publications (2)

Publication Number Publication Date
CN102331911A true CN102331911A (zh) 2012-01-25
CN102331911B CN102331911B (zh) 2014-07-16

Family

ID=45483704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110164953.8A Active CN102331911B (zh) 2011-06-17 2011-06-17 用于文件系统向Nand Flash写数据的驱动装置及方法

Country Status (1)

Country Link
CN (1) CN102331911B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106125A (zh) * 2013-01-04 2013-05-15 苏州懿源宏达知识产权代理有限公司 基于存储块修复的闪存存储方法
CN104750426A (zh) * 2013-12-30 2015-07-01 杭州华为数字技术有限公司 向存储介质写数据的方法和装置
CN106776106A (zh) * 2016-11-11 2017-05-31 南京南瑞集团公司 一种基于NandFlash的数据存储方法
CN107066394A (zh) * 2017-03-31 2017-08-18 深圳市金印达科技有限公司 一种成像设备的数据读写方法和系统
CN107102821A (zh) * 2017-04-21 2017-08-29 济南浪潮高新科技投资发展有限公司 一种nand flash阵列写失败的处理方法
CN108829347A (zh) * 2018-05-29 2018-11-16 深圳市华星光电技术有限公司 一种Nand设备的硬件控制器、控制方法及液晶显示器
US10748462B2 (en) 2018-05-29 2020-08-18 Shenzhen China Star Optoelectronics Technology Co., Ltd. Hardware controller of NAND device, control method and liquid crystal display
CN112764669A (zh) * 2019-11-01 2021-05-07 北京忆芯科技有限公司 用于存储控制器的加速器
CN113742283A (zh) * 2021-07-20 2021-12-03 电信科学技术第五研究所有限公司 一种基于linux操作系统的nandflash无文件系统的坏块管理方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281493A (zh) * 2008-05-26 2008-10-08 中兴通讯股份有限公司 与非闪存器及其管理方法
CN101425041A (zh) * 2007-10-30 2009-05-06 安凯(广州)软件技术有限公司 在nand flash存储器上建立fat文件系统的优化方法
CN101593157A (zh) * 2008-05-27 2009-12-02 中兴通讯股份有限公司 非线性闪存的坏块管理方法及装置
CN101908023A (zh) * 2010-08-06 2010-12-08 四川长虹电器股份有限公司 NandFlash存储器中数据存储方法
CN102096639A (zh) * 2009-12-15 2011-06-15 英特尔公司 用于修剪在非易失性闪速介质上的数据的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425041A (zh) * 2007-10-30 2009-05-06 安凯(广州)软件技术有限公司 在nand flash存储器上建立fat文件系统的优化方法
CN101281493A (zh) * 2008-05-26 2008-10-08 中兴通讯股份有限公司 与非闪存器及其管理方法
CN101593157A (zh) * 2008-05-27 2009-12-02 中兴通讯股份有限公司 非线性闪存的坏块管理方法及装置
CN102096639A (zh) * 2009-12-15 2011-06-15 英特尔公司 用于修剪在非易失性闪速介质上的数据的方法
CN101908023A (zh) * 2010-08-06 2010-12-08 四川长虹电器股份有限公司 NandFlash存储器中数据存储方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
侯超 等: "基于NAND Flash的转译层的设计", 《微型机与应用》, vol. 29, no. 24, 31 December 2010 (2010-12-31), pages 73 - 76 *
张超 等: "WinCE系统上大容量NAND Flash驱动设计与优化", 《电子器件》, vol. 30, no. 2, 30 April 2007 (2007-04-30), pages 638 - 642 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103106125B (zh) * 2013-01-04 2016-09-28 国网山东省电力公司胶州市供电公司 基于存储块修复的闪存存储方法
CN103106125A (zh) * 2013-01-04 2013-05-15 苏州懿源宏达知识产权代理有限公司 基于存储块修复的闪存存储方法
CN104750426B (zh) * 2013-12-30 2018-08-14 杭州华为数字技术有限公司 向存储介质写数据的方法和装置
CN104750426A (zh) * 2013-12-30 2015-07-01 杭州华为数字技术有限公司 向存储介质写数据的方法和装置
WO2015101188A1 (zh) * 2013-12-30 2015-07-09 华为技术有限公司 向存储介质写数据的方法和装置
KR101747123B1 (ko) 2013-12-30 2017-06-15 후아웨이 테크놀러지 컴퍼니 리미티드 데이터를 저장 매체에 기입하는 방법 및 장치
CN106776106A (zh) * 2016-11-11 2017-05-31 南京南瑞集团公司 一种基于NandFlash的数据存储方法
CN107066394A (zh) * 2017-03-31 2017-08-18 深圳市金印达科技有限公司 一种成像设备的数据读写方法和系统
CN107102821A (zh) * 2017-04-21 2017-08-29 济南浪潮高新科技投资发展有限公司 一种nand flash阵列写失败的处理方法
CN108829347A (zh) * 2018-05-29 2018-11-16 深圳市华星光电技术有限公司 一种Nand设备的硬件控制器、控制方法及液晶显示器
US10748462B2 (en) 2018-05-29 2020-08-18 Shenzhen China Star Optoelectronics Technology Co., Ltd. Hardware controller of NAND device, control method and liquid crystal display
CN112764669A (zh) * 2019-11-01 2021-05-07 北京忆芯科技有限公司 用于存储控制器的加速器
CN112764669B (zh) * 2019-11-01 2021-12-21 北京忆芯科技有限公司 一种硬件加速器
CN113742283A (zh) * 2021-07-20 2021-12-03 电信科学技术第五研究所有限公司 一种基于linux操作系统的nandflash无文件系统的坏块管理方法
CN113742283B (zh) * 2021-07-20 2023-11-24 电信科学技术第五研究所有限公司 一种基于linux操作系统的nandflash无文件系统的坏块管理方法

Also Published As

Publication number Publication date
CN102331911B (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
CN102331911A (zh) 用于文件系统向Nand Flash写数据的驱动装置及方法
KR100975825B1 (ko) 기억장치, 기억 시스템 및 기억 방법
CN101923448B (zh) 一种nand闪存的转换层读写方法
CN101625897B (zh) 用于快闪存储器的数据写入方法、储存系统与控制器
US9396107B2 (en) Memory system having memory controller with cache memory and NVRAM and method of operating same
CN101937319B (zh) 存储器系统及其映射方法
CN103164342B (zh) 数据可用性的挂载时协调
CN101556555B (zh) 用于闪存的区块管理方法、其控制器与储存系统
CN102779095A (zh) 闪存装置、存储器控制装置、存储器控制方法及存储系统
CN101656104B (zh) 快闪存储器储存系统及其数据写入方法
CN101788955B (zh) 闪存数据的存取方法及其储存系统与控制器系统
CN101571832B (zh) 数据写入方法及使用该方法的快闪存储系统与其控制器
EP2704015A1 (en) Non-volatile semiconductor storage system
CN101369252A (zh) 基于nand闪存文件系统中静态数据损耗均衡的方法
CN109522154B (zh) 数据恢复方法及相关设备与系统
CN103294604A (zh) 闪存器件和使用闪存器件的电子设备
CN101499315B (zh) 快闪存储器平均磨损方法及其控制器
CN109976673B (zh) 一种数据写入方法和装置
CN112771492A (zh) 支持非确定性命令的存储器子系统
CN115421651A (zh) 固态硬盘的数据处理方法、固态硬盘、电子设备及介质
CN104102459A (zh) 一种闪存设备的数据处理方法及闪存设备
JP2009205689A (ja) フラッシュディスク装置
CN102135943A (zh) 闪存数据的存储、访问方法及装置
JP4561246B2 (ja) メモリ装置
CN101901227A (zh) 一种智能存储扩展设备及其访问控制系统、方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.