CN101996168A - 格式化闪存的方法和装置 - Google Patents
格式化闪存的方法和装置 Download PDFInfo
- Publication number
- CN101996168A CN101996168A CN2009100087837A CN200910008783A CN101996168A CN 101996168 A CN101996168 A CN 101996168A CN 2009100087837 A CN2009100087837 A CN 2009100087837A CN 200910008783 A CN200910008783 A CN 200910008783A CN 101996168 A CN101996168 A CN 101996168A
- Authority
- CN
- China
- Prior art keywords
- jffs2
- flash memory
- node
- flash
- node head
- 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
Links
Images
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种格式化闪存的方法和装置,属于计算机领域。该方法包括:读取闪存信息,所述闪存信息包括闪存类型和擦除块大小;根据所述闪存信息获取jffs2节点头的相关信息,所述相关信息包括所述jffs2节点头的起始位置和大小;对擦除块进行擦除处理;根据所述闪存类型和所述相关信息,创建与所述擦除处理的擦除块对应的所述jffs2节点头,其中,所述jffs2节点头用于指示所述擦除处理的擦除块符合jffs2文件系统标准。本发明的技术方案可以在加载jffs2文件系统前使闪存的擦除块符合jffs2文件系统的标准,大大减少初次加载jffs2文件系统的时间,保证了系统的稳定性。
Description
技术领域
本发明涉及计算机领域,特别涉及一种格式化闪存(flash)的方法和装置。
背景技术
Jffs2文件系统是Linux系统的一部分,是针对闪存的文件系统。在系统第一次上电或者调用格式化命令对闪存进行格式化时,此时闪存处于初始状态,上面没有任何数据。由于闪存的每个擦除块有擦除次数限制的,超过一定擦除次数的擦除块会损坏,所以,jffs2文件系统必须考虑对每个擦除块擦写的次数要尽可能保持平衡,为此,jffs2文件系统的节点是没有索引功能的。初始状态下的擦除块虽然已经不存在任何数据,但此种擦除块并不符合jffs2文件系统的标准,由此会造成jffs2文件系统装载时间漫长,此外,在上电时间内jffs2文件系统会锁住所有对flash的操作,从而导致系统不能正常启动。
发明内容
本发明要解决的问题是提供了一种格式化闪存的方法和装置,以解决现有技术中jffs2文件系统装载时间漫长和启动异常的问题。
为了解决上述问题,本发明提供了一种格式化闪存的方法和装置,具体的技术方案如下:
一种格式化闪存的方法,包括:
读取闪存信息,所述闪存信息包括闪存类型和擦除块大小;
根据所述闪存信息获取jffs2节点头的相关信息,所述相关信息包括所述jffs2节点头的起始位置和大小;
对擦除块进行擦除处理;
根据所述闪存类型和所述相关信息,创建与所述擦除处理的擦除块对应的所述jffs2节点头,其中,所述jffs2节点头用于指示所述擦除处理的擦除块符合jffs2文件系统标准。
一种格式化闪存的装置,包括:
读取模块,用于读取闪存信息,所述闪存信息包括闪存类型和擦除块大小;
获取模块,用于根据所述闪存信息获取jffs2节点头的相关信息,所述相关信息包括所述jffs2节点头的起始位置和大小;
擦除模块,用于对所述擦除块进行擦除处理;
创建模块,用于根据所述闪存类型和所述相关信息,创建与所述擦除处理的擦除块对应的所述jffs2节点头,其中,所述jffs2节点头用于指示所述擦除处理的擦除块符合jffs2文件系统标准。
在本发明实施例中,通过读取闪存信息,该闪存信息包括闪存类型和擦除块大小;根据该闪存信息获取jffs2节点头的相关信息,该相关信息包括所述jffs2节点头的起始位置和大小;对擦除块进行擦除处理;根据该闪存类型和该相关信息,创建与该擦除处理的擦除块对应的该jffs2节点头,其中,该jffs2节点头用于指示擦除处理的擦除块符合jffs2文件系统标准,可以在加载jffs2文件系统前使闪存的擦除块符合jffs2文件系统的标准,大大减少初次加载jffs2文件系统的时间,保证了系统的稳定性,此外,能够减少对闪存的擦除动作,大大延长了闪存的寿命。
附图说明
图1是本发明实施例提供的一种jffs2节点头的结构示意图;
图2是本发明实施例提供的一种格式化闪存的方法的流程图;
图3是本发明实施例提供的一种格式化闪存的装置的结构图。
具体实施方式
本发明的核心思想是:通过读取闪存信息,该闪存信息包括闪存类型和擦除块大小;根据该闪存信息获取jffs2节点头的相关信息,该相关信息包括所述jffs2节点头的起始位置和大小;对擦除块进行擦除处理;根据该闪存类型和该相关信息,创建与该擦除处理的擦除块对应的该jffs2节点头,其中,该jffs2节点头用于指示擦除处理的擦除块符合jffs2文件系统标准,可以在加载jffs2文件系统前使闪存的擦除块符合jffs2文件系统的标准,大大减少初次加载jffs2文件系统的时间,保证了系统的稳定性,同时,能够减少对闪存的擦除动作,大大延长了闪存的寿命。
以下结合附图,将对本发明的各实例进行较为详细的说明。
为了实现本发明的技术方案,本实施例定义了一种用于指示擦除块符合jffs2文件系统标准的jffs2节点头,该节点头所属的节点为jffs2节点。如图1所示,根据闪存类型的不同,该jffs2节点头的结构也有所不同,例如,当闪存类型为nand flash时,该jffs2节点头包括:幻数屏蔽位(JFFS2_MAGIC_BITMASK),其取值可以是0x1985,该幻数屏蔽位用于标识该节点为jffs2文件系统的节点;节点头的类型,其值为清除标记(cleanmarker);jffs2节点的大小,可以是jffs2节点头的大小和用户数据的大小的和值。当闪存类型为nor flash时,该jffs2节点头除了包括幻数屏蔽位、节点头的类型和jffs2节点的大小外,还包括校验值,用于检验幻数屏蔽位、节点头的类型和jffs2节点的大小是否准确。
在定义jffs2节点头的结构后,本发明的一个实施例利用定义好的jffs2节点头提供了一种格式化闪存的方法,如图2所示,包括:
201,读取闪存信息,该闪存信息包括闪存类型和擦除块大小;
具体地,读取的闪存信息包括:闪存类型(flash_type),闪存大小(flash_size)、删除块大小(erase_size)和flash标志位(flags)等信息。其中,flash类型包括但不限于nand flash、nor flash和data flash。根据擦除块大小和闪存大小,可以得到总的擦除块数目,即用flash大小除以擦除块大小。其中,擦除块数目可以根据实际情况进行调整,例如,在flash标志位是虚拟块不被允许(MTD_NO_VIRTBLOCKS)的情况下,擦除块数目和jffs2节点头的大小的乘积必须小于128K,否则擦除块大小扩大一倍,直至满足要求。如果flash大小不能被擦除块大小整除,则需要调整flash大小,使之能够整除。
202,根据闪存信息获取jffs2节点头的相关信息,该相关信息包括jffs2节点头的起始位置和大小;
jffs2节点头的起始位置和大小需要根据不同的flash类型确定。具体地,当读取的闪存类型为nand闪存,获取nand闪存的备用空间(oob,out ofband)中存储的错误检查和纠正(ECC,Error Checking and Correcting)类型,根据ECC类型和读取的擦除块的大小获取jffs2节点头的起始位置和大小。其中,对于nand闪存而言,擦除块与obb空间是一一对应,obb空间主要存储两种信息:当前obb空间对应的擦除块是否是坏块的信息和ECC类型。oob空间的剩余空间可以由数组oobfree[][]表示,数组oobfree[0][0]表示剩余空间的起始位置,数组oobfree[0][1]表示剩余空间的大小。当ECC类型为nand闪存默认自动排布(nand ECC_Autoplace)时,jffs2节点头的起始位置为擦除块大小和剩余空间的起始位置的和值,即为擦除块大小和数组oobfree[0][0]的和值,jffs2节点头的大小为剩余空间的大小,即节点头的大小为数组oobfree[0][1]的值;当ECC类型为基于单芯片闪存的自动排布(Automatic ECC on DiskOnChip)时,数组oobfree[0][0]的值固定为6字节,数组oobfree[0][1]的值固定为8字节,此时,jffs2节点头的起始位置为擦除块大小和备用空间中剩余空间的起始位置6字节的和值,该jffs2节点头的大小为备用空间中剩余空间的大小8字节。
203,对擦除块进行擦除处理;
进一步地,可以在对擦除块进行擦除处理前,判断预擦除的擦除块是否符合jffs2文件系统,如果符合,则可以不进行擦除处理;如果不符合,则需要进行擦除处理。
204,根据该闪存类型和所述相关信息,创建与该擦除处理的擦除块对应的jffs2节点头,其中,该jffs2节点头用于指示该擦除处理的擦除块符合jffs2文件系统标准。
具体地,如图1所示,根据闪存类型的不同,该jffs2节点头的结构也有所不同,例如,当闪存类型为nand flash时,该jffs2节点头包括:幻数屏蔽位(JFFS2_MAGIC_BITMASK),其取值为0x1985,该幻数屏蔽位用于标识该节点为jffs2文件系统的节点;节点头的类型,其值为清除标记;jffs2节点的大小,其为jffs2节点头的大小和用户数据的大小的和值,即为擦除块大小和数组oobfree[0][0]的和值,jffs2节点头的大小为数组oobfree[0][1]的值。当闪存类型为nor flash时,该jffs2节点头除了包括幻数屏蔽位,其取值为0x1985;节点头的类型,其值为清除标记;jffs2节点的大小,其值为12字节;以及还包括校验值,用于检验幻数屏蔽位、节点头的类型和jffs2节点的大小是否准确。创建jffs2节点头在于表示对应的擦除块符合该jffs2文件系统的标准,该擦除块是可用的擦除块,jffs2文件系统可以直接使用,此时,如果加载jffs2文件系统,无需对擦除块再做其他处理,从而确保jffs2系统快速和正确启动。
基于与方法相同的发明构思,本发明的一个实施例提供了一种格式化闪存的装置,如图3所示,包括:
读取模块,用于读取闪存信息,该闪存信息包括闪存类型和擦除块大小;
获取模块,用于根据该闪存信息获取jffs2节点头的相关信息,该相关信息包括所述jffs2节点头的起始位置和大小;
擦除模块,用于对擦除块进行擦除处理;
创建模块,用于根据该闪存类型和该相关信息,创建与擦除处理的擦除块对应的jffs2节点头,其中,该jffs2节点头用于指示该擦除处理的擦除块符合jffs2文件系统标准。
进一步地,该获取模块具体用于当该闪存类型为nand闪存时,获取该nand闪存的备用空间中存储的错误检查和纠正ECC类型,根据该ECC类型和该擦除块的大小获取该jffs2节点头的相关信息。
进一步地,该获取模块用于当该ECC类型为nand ECC_Autoplace时,该jffs2节点头的起始位置为擦除块大小和备用空间中剩余空间的起始位置的和值,该jffs2节点头的大小为备用空间中剩余空间的大小;
进一步地,该获取模块用于,当该ECC类型为Automatic ECC onDiskOnChip时,该jffs2节点头的起始位置为擦除块大小和备用空间中剩余空间的起始位置6字节的和值,该jffs2节点头的大小为该备用空间中剩余空间的大小8字节。
进一步地,该获取模块具体用于当该闪存类型为nor闪存时,获取jffs2节点头的起始位置为擦除块大小的开始位置,该jffs2节点头的大小为12字节。
进一步地,当该闪存类型为nand闪存时,该jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、该jffs2节点头所属的jffs2节点的长度;
当该闪存类型为nor闪存时,该jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、该jffs2节点头所属的jffs2节点的长度和校验值。
进一步地,该装置还包括:
判断模块,用于判断该擦除块是否符合jffs2文件系统标准,如果不符合,则通知该擦除模块。
在本发明实施例中,通过读取闪存信息,该闪存信息包括闪存类型和擦除块大小;根据该闪存信息获取jffs2节点头的相关信息,该相关信息包括所述jffs2节点头的起始位置和大小;对擦除块进行擦除处理;根据该闪存类型和该相关信息,创建与该擦除处理的擦除块对应的该jffs2节点头,其中,该jffs2节点头用于指示擦除处理的擦除块符合jffs2文件系统标准,可以在加载jffs2文件系统前使闪存的擦除块符合jffs2文件系统的标准,大大减少初次加载jffs2文件系统的时间,保证了系统的稳定性,此外,能够减少对闪存的擦除动作,大大延长了闪存的寿命。
Claims (12)
1.一种格式化闪存的方法,其特征在于,包括:
读取闪存信息,所述闪存信息包括闪存类型和擦除块大小;
根据所述闪存信息获取jffs2节点头的相关信息,所述相关信息包括所述jffs2节点头的起始位置和大小;
对擦除块进行擦除处理;
根据所述闪存类型和所述相关信息,创建与所述擦除处理的擦除块对应的所述jffs2节点头,其中,所述jffs2节点头用于指示所述擦除处理的擦除块符合jffs2文件系统标准。
2.如权利要求1所述的格式化闪存的方法,其特征在于,当所述闪存类型为nand闪存时,根据所述闪存信息获取所述jffs2节点头的相关信息包括:
获取所述nand闪存的备用空间中存储的错误检查和纠正ECC类型,根据所述ECC类型和所述擦除块的大小获取所述jffs2节点头的相关信息。
3.如权利要求2所述的格式化闪存的方法,其特征在于,当所述ECC类型为nand闪存默认自动排布时,所述jffs2节点头的起始位置为所述擦除块大小和所述备用空间中剩余空间的起始位置的和值,所述jffs2节点头的大小为所述备用空间中剩余空间的大小。
4.如权利要求2所述的格式化闪存的方法,其特征在于,当所述ECC类型为基于单芯片闪存的自动排布时,所述jffs2节点头的起始位置为所述擦除块大小和备用空间中剩余空间的起始位置6字节的和值,所述jffs2节点头的大小为所述备用空间中剩余空间的大小8字节。
5.如权利要求1所述的格式化闪存的方法,其特征在于,当所述闪存类型为nor闪存时,所述jffs2节点头的起始位置为所述擦除处理的擦除块大小的开始位置,所述jffs2节点头的大小为12字节。
6.如权利要求1-5任意一项所述的格式化闪存的方法,其特征在于,
当所述闪存类型为nand闪存时,所述jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、所述jffs2节点头所属的jffs2节点的长度;
当所述闪存类型为nor闪存时,所述jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、所述jffs2节点头所属的jffs2节点的长度和校验值。
7.如权利要求1-5任意一项所述的格式化闪存的方法,其特征在于,在所述对擦除块进行擦除处理之前,还包括:
判断所述擦除块不符合所述jffs2文件系统标准的步骤。
8.一种格式化闪存的装置,其特征在于,包括:
读取模块,用于读取闪存信息,所述闪存信息包括闪存类型和擦除块大小;
获取模块,用于根据所述闪存信息获取jffs2节点头的相关信息,所述相关信息包括所述jffs2节点头的起始位置和大小;
擦除模块,用于对所述擦除块进行擦除处理;
创建模块,用于根据所述闪存类型和所述相关信息,创建与所述擦除处理的擦除块对应的所述jffs2节点头,其中,所述jffs2节点头用于指示所述擦除处理的擦除块符合jffs2文件系统标准。
9.如权利要求8所述的格式化闪存的装置,其特征在于,所述获取模块具体用于当所述闪存类型为nand闪存时,获取所述nand闪存的备用空间中存储的错误检查和纠正ECC类型,根据所述ECC类型和所述擦除块的大小获取所述jffs2节点头的相关信息。
10.如权利要求8所述的格式化闪存的装置,其特征在于,所述获取模块具体用于当所述闪存类型为nor闪存时,获取所述jffs2节点头的起始位置为所述擦除块大小的开始位置,所述jffs2节点头的大小为12字节。
11.如权利要求8-10任意一项所述的格式化闪存的装置,其特征在于,
当所述闪存类型为nand闪存时,所述创建模块创建的所述jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、所述jffs2节点头所属的jffs2节点的长度;
当所述闪存类型为nor闪存时,所述创建模块创建的所述jffs2节点头包括:幻数屏蔽位、jffs2节点的类型为清除标记、所述jffs2节点头所属的jffs2节点的长度和校验值。
12.如权利要求8-10任意一项所述的格式化闪存的装置,其特征在于,还包括:
判断模块,用于判断所述擦除块是否符合所述jffs2文件系统标准,如果不符合,则通知所述擦除模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910008783 CN101996168B (zh) | 2009-08-25 | 2009-08-25 | 格式化闪存的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910008783 CN101996168B (zh) | 2009-08-25 | 2009-08-25 | 格式化闪存的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101996168A true CN101996168A (zh) | 2011-03-30 |
CN101996168B CN101996168B (zh) | 2013-08-07 |
Family
ID=43786335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910008783 Active CN101996168B (zh) | 2009-08-25 | 2009-08-25 | 格式化闪存的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101996168B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412822A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 操作非易失性内存和数据操作的方法和相关装置 |
CN109683803A (zh) * | 2017-10-19 | 2019-04-26 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770123A (zh) * | 2004-11-05 | 2006-05-10 | 义隆电子股份有限公司 | 闪存的格式化方法 |
US20070088940A1 (en) * | 2005-10-13 | 2007-04-19 | Sandisk Corporation | Initialization of flash storage via an embedded controller |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件系统实现方法 |
CN101477482A (zh) * | 2008-10-14 | 2009-07-08 | 深圳市共进电子有限公司 | 一种嵌入式Linux系统中的断电时恢复闪存数据的方法 |
-
2009
- 2009-08-25 CN CN 200910008783 patent/CN101996168B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770123A (zh) * | 2004-11-05 | 2006-05-10 | 义隆电子股份有限公司 | 闪存的格式化方法 |
US20070088940A1 (en) * | 2005-10-13 | 2007-04-19 | Sandisk Corporation | Initialization of flash storage via an embedded controller |
CN101013397A (zh) * | 2007-02-08 | 2007-08-08 | 深圳万利达电子工业有限公司 | 一种nandflash文件系统实现方法 |
CN101477482A (zh) * | 2008-10-14 | 2009-07-08 | 深圳市共进电子有限公司 | 一种嵌入式Linux系统中的断电时恢复闪存数据的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412822A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 操作非易失性内存和数据操作的方法和相关装置 |
CN109683803A (zh) * | 2017-10-19 | 2019-04-26 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101996168B (zh) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8949690B2 (en) | Memory controller | |
US8074148B2 (en) | Memory management method and controller for non-volatile memory storage device | |
US8392797B2 (en) | Error correcting controller, flash memory chip system, and error correcting method thereof | |
CN102081577A (zh) | Flash存储器的数据存储结构及其数据操作方式 | |
CN106910528B (zh) | 一种固态硬盘数据巡检的优化方法及装置 | |
CN102567146B (zh) | 一种实现日志备份的方法及其装置、智能卡 | |
TWI486957B (zh) | Nand快閃記憶體燒錄資料的處理、使用方法及裝置、運行系統 | |
TWI489466B (zh) | 記憶體抹除方法、記憶體控制器與記憶體儲存裝置 | |
US20140019670A1 (en) | Data writing method, memory controller, and memory storage device | |
US20150149702A1 (en) | Method for data management and memory storage device and memory control circuit unit | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN102200937A (zh) | 一种与非闪存中数据读取的方法、装置及电视机系统 | |
TW201421477A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
US20120166706A1 (en) | Data management method, memory controller and embedded memory storage apparatus using the same | |
US8296506B2 (en) | Method for managing a non-violate memory and computer readable medium thereof | |
CN102890645A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN114089915B (zh) | 基于flash存储器的文件追加写操作方法及装置 | |
WO2023098269A1 (zh) | 一种固态硬盘处理方法、系统、设备及非易失性可读存储介质 | |
CN101996168B (zh) | 格式化闪存的方法和装置 | |
CN102915209A (zh) | 一种存储控制芯片、存储设备及其系统数据写入方法 | |
US10007449B2 (en) | Memory management method, memory control circuit unit, and memory storage apparatus | |
US20100153622A1 (en) | Data Access Controller and Data Accessing Method | |
CN105404475A (zh) | MCU片内小容量flash的存储管理系统及方法 | |
CN111124752A (zh) | 一种存储设备的备电保护的方法及装置 | |
CN113835944B (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 |