一种nandflash文件系统实现方法

文档序号:6573631阅读:336来源:国知局
专利名称:一种nandflash文件系统实现方法
技术领域
本发明涉及计算,尤其涉及一种nandflash文件系统实现方法。
背景技术
nandflash是一种低廉高效的存储器件,其内部结构如图1所示,nandflash存储器分成若干块,每块分成若干页,每页的大小固定为一个固定数值。在控制信号的配合下,它的数据口通过分时复用方式实现命令,地址,数据的传输,这样它的封装脚大大减小,价格低。在现有的应用中,针对nandflash的文件系统有很多,但是它们都是通用文件系统,属于操作系统的一个功能,nandflash的应用则对系统的要求很高,系统开销很大,无法应用于普通的CPU,这就对nandflash的应用产生了限制。

发明内容
本发明的目的在于提供一种应用性能强的nandflash文件系统实现方法,以克服现有技术中对系统的要求高,开销大,无法应用于普通CPU的不足。
本发明所采用的nandflash文件系统实现方法为在nandflash存储器中寻找至少两个有效块,分别作为系统块和物理文件块,所述的系统块反映nandflash的所有块信息,所述的物理文件块保存该nandflash所有物理文件信息。
本发明采用如下步骤A、对nandflash存储器进行格式化操作,以寻找到的第1个好块作为系统块,所述的系统块中包括设定的文件系统标识字符串和nandflash各个块的好坏、使用情况、作用信息;在nandflash里寻找第2个好块作为物理文件块,所述的物理文件体现为nandflash驱动函数,每个驱动函数产生符合nandflash操作的控制时序,每个物理文件占用设定长度的字节,其数据结构包括文件名、文件扩展名、文件大小和文件数据所要分配的nandflash物理块信息;B、根据所述的系统块和物理文件块中的信息,完成逻辑文件的操作。
所述的步骤A中,所述的系统块第0页第0个字节开始,前面的字节保存设定的nandflash文件系统标识字符串,后续的字节保存每个块的信息。
所述的步骤A中,所述的物理文件块中,从第0页到最后一页,以FileNode数据为一个单位,依次保存FileNode数据;读取其中的物理信息时,从该物理文件块第0页到最后一页,按256字节为一个单位依次读取所有信息。
所述的步骤B中,所述的逻辑文件体现为高级函数,高级函数通过调用驱动函数实现对nandflash物理存储单元数据访问,所述的系统块根据nandflash每物理块的作用和使用信息分配物理块保存逻辑文件数据。
所述的步骤B中,所述的逻辑文件所包含的基本信息包括逻辑文件操作缓冲区,逻辑文件大小,文件操作逻辑位置,逻辑文件操作结果标识,逻辑文件对应的物理文件。
所述的步骤A包括如下步骤A1、对整个nandflash删除,根据nandflash控制时序要求,从第一块到最后一块依次发送删除命令删除;A2、分配等于nandflash总块数字节的内存空间,每个字节标识每nandflash物理快的好、坏,使用情况、作用信息;A3、设置文件系统标识字符串;A4、进一步判断整个nandflash存储器好、坏块,并且在分配的内存空间中设置或刷新相应标志;A5、在nandflash里寻找第1个好块作为系统块,设置块信息的结构;A6、在nandflash里寻找第2个好块作为物理文件块;A7、在系统块中保存所设置的文件系统标识符和内存空间所保存的nandflash每个块的好坏、使用情况、作用信息。
所述的步骤B包括如下步骤B1、读取系统块信息和所有物理文件,并且创建物理文件链表;B2、在物理文件链表里查找到需要读取的逻辑文件,并分配缓冲空间;B3、获取逻辑文件对应的物理文件数据,并将其保存至缓冲空间;B4、由缓冲空间输出数据;B5、关闭逻辑文件操作。
所述的步骤B包括如下步骤b1、读取系统块信息和所有物理文件,并且创建物理文件链表;b2、打开需要写入的逻辑文件,并分配缓冲空间;
b3、把逻辑文件数据写到缓冲空间;b4、由缓冲空间将逻辑文件数据保存到nandflash对应物理块;b5、释放缓冲空间和逻辑文件空间,更新系统块数据和物理文件块数据,以保存新的逻辑文件输入。
本发明的有益效果为在本发明中,在nandflash存储器中寻找至少两个有效块,分别作为系统块和物理文件块,系统块反映nandflash的所有块信息,物理文件块保存该nandflash所有物理文件信息,由于nandflash在出厂是不能保证所有块是好的,也不能保证第1块一定是好的,另外,在使用过程中,也可能出现坏块,但不影响其他块的使用,坏与块之间是相对独立的,本发明中通过寻找至少两个有效块,极大程度地适应了这种块与块之间相对独立的特性,通过设定系统块和物理文件块,提高了nandflash的应用兼容性,其应用性能强,也使本发明获得了较高的稳定性和可靠性。
本发明通过nandflash驱动函数通过对nandflash信号时序以及有关数据口的控制,实现基本的删除,编程,读操作,逻辑文件(高级函数)则可以通过调用驱动函数实现对nandflash物理存储单元数据访问,nandflash驱动函数具有相当的透明性,极大地方便了用户对nandflash的应用,本发明根据系统块和物理文件块中的信息,完成逻辑文件的读取或写入操作,实现nandflash的动态应用,使本发明具有很强应用性能,并且文件存储、访问代码小,效率高,对系统要求不高,尤其适用于一般的CPU。


图1为nandflash存储器件内部结构示意图;图2为本发明整体系统结构示意图;图3为本发明文件系统物理结构示意图;
图4为本发明格式化处理的具体控制流程示意图;图5为本发明读取文件的具体控制流程示意图;图6为本发明物理文件链表结构示意图;图7为本发明写入文件具体控制流程示意图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明在本发明中,在nandflash存储器中寻找至少两个有效块,分别作为系统块和物理文件块,系统块反映nandflash的所有块信息,物理文件块保存该nandflash所有物理文件信息。
如图2所示,本发明的整体系统结构分为三层a)器件层nandflash存储设备。
b)文件物理层nandflash驱动函数,通过对nandflash信号时序以及有关数据口的控制,实现基本的删除,编程,读操作,每个函数产生符合nandflash操作的控制时序。
c)文件逻辑层文件操作函数,用户通过文件名调用高级函数实现文件读写等操作。高级函数调用驱动函数实现对nandflash物理存储单元数据访问,具有相当的透明性,方便了用户对nandflash的应用。
对于文件存储分为物理文件和逻辑文件,物理文件和逻辑文件按nandflash的块大小进行分配。物理/逻辑文件按nandflash一块的大小申请nandflash存储空间;逻辑块容量等于物理块容量,这样可以简化整个文件系统设计。
本发明的基本基本控制方法如下1)对nandflash存储器进行格式化操作,以寻找到的第1个好块作为系统块,系统块中包括设定的文件系统标识字符串和nandflash各个块的好坏、使用情况、作用信息,以后根据这些信息知道nandflash每物理块的作用和使用情况,根据这些信息分配物理块保存逻辑文件数据。例如,如图3所示,系统块第0页第0个字节开始,前8字节保存nandflash文件系统标识字符串“MALATAFS”,从第8字节开始保存每块的信息。每块的信息标识含义可如下表1所示

表12)在nandflash里寻找第2个好块作为物理文件块,物理文件体现为nandflash驱动函数,每个驱动函数产生符合nandflash操作的控制时序,每个物理文件占用设定长度的字节,其数据结构如下表2所示,包括文件名、文件扩展名、文件大小和文件数据所要分配的nandflash物理块信息。

表2如图3所示,在物理文件块中,从第0页到最后一页,以FileNode数据为一个单位,依次保存FileNode数据;读取其中的物理信息时,从该物理文件块第0页到最后一页,按256字节为一个单位依次读取所有信息。不使用的物理文件信息区域值是0xFF,根据这一点可以判断物理文件信息的合法性。
一个物理文件占(FileNode)256字节,256字节的分配如上表2,文件名占89字节;文件扩展名占3字节;文件大小占4字节。文件分配物理块最大块数为80块,一块2个字节。256=89+3+4+80×2。是2的8次方,非常适合计算机运算。256字节为一个物理文件信息(FileNode)。
该文件系统文件最大容量是=80×NandFlash块容量。
在nandflash中,nandflash容量=块总数*每块页总数*每页大小。
nandflash有几种操作删除,编程和读数据,读状态,读器件ID号基本操作。在控制信号时序控制下,通过数据口发不同的命令字实现不同的操作。删除只能对整个块操作删除,启动删除某块命令,把整个块删除,不管块的其他地方是否用到同样删除;编程只能对整个页操作;数据的读取可以整页读取,也可以页内任意数据读取。
nandflash线性物理地址由块号,页号,和页内地址得到。其计算式如下nandflash物理地址=((Block Address<<N))|((PageAddress in block)<<M)| Page Offset Address其中,N=log2(每块页总数+页大小),M=Log2(页大小)。
对于nandflash,可以根据这个物理地址实现对nandflash物理存储单元的访问。nandflash物理地址分几个字节发送,由高字节依次到低字节发送。
3)根据系统块和物理文件块中的信息,完成逻辑文件的读取或写入操作,逻辑文件体现为高级函数,高级函数通过调用驱动函数实现对nandflash物理存储单元数据访问,系统块根据nandflash每物理块的作用和使用信息分配物理块保存逻辑文件数据,逻辑文件所需要的存储块为(逻辑文件容量+逻辑文件块容量-1)/NandFlash块容量。
对于逻辑文件。文件按nandflash一块的大小申请nandflash存储空间。逻辑块容量等于物理块容量,这样可以简化整个文件系统设计。如下表3所示,逻辑文件所包含的基本信息包括逻辑文件操作缓冲区,逻辑文件大小,文件操作逻辑位置,逻辑文件操作结果标识,逻辑文件对应的物理文件FileNode。

表3
●逻辑文件操作缓冲区本文件系统是通过缓冲区实现对逻辑文件的操作,通过缓冲区可以提高文件的访问速度,提高效率。对文件读时,如果要读取的数据在缓冲区里,则直接从缓冲区输出数据,这时不用访问nandfash,速度非常快.如果要读取的数据不在缓冲区里,根据文件访问位置,计算出对应物理文件物理块,立即从nandflash的物理块读取该块数度到缓冲区。再从缓冲区输出数据。写时。先把数据写到缓冲区,缓冲区满,分配nandflash物理块把数据写进该物理块。通过缓冲区实现nandFlash和用户的传输。
●逻辑文件大小FileSize是逻辑文件的大小。文件占用字节数。等于物理文件大小.
●文件操作逻辑位置就是逻辑文件现在的操作位置,该值在
之间。对文件读写操作N个字节数据后,该值自动增加N个数字。该值记下文件最后操作的位置。用它实现逻辑文件任意数据操作。本文件系统也增加了动态改变文件访问位置的高级函数.极大方便用户.
●逻辑文件操作结果标识逻辑文件操作过程中出现错误,则置1。正常置0。
●物理文件结构FileNode如下表4所示,与物理文件的数据结构相同。

表4
如图4所示,本发明的格式化处理的具体控制流程如下1.根据nandflash控制时序要求,对整个nandflash删除,如步骤S601至步骤S604,从第一块到最后一块依次发送删除命令删除。进行删除后,一般而言,nandflash全是0xFF。
2.如步骤S605,分配等于nandflash总块数字节的内存空间,每个字节标识每nandflash物理快的好、坏,使用情况、作用信息,至于每块的作用,可参看上述表1得知。
3.如步骤S606,设置文件系统标识字符串,例如,将文件系统标识字符串“MALATAFS”写入一个系统变量中。该文件系统标识字符串应该保存在系统块的第0页的第0到第7地址处,对于任意nandflash,如果某块的第0页的第0到第7地址保存的是该字符串,则该nandflash为万利达文件系统,否则就不是。
4.如步骤S607至步骤S614,进一步判断整个nandflash存储器好、坏块,并且在分配的内存空间中设置或刷新相应标志。由于nandflash在出厂是不能保证所有块是好的,也不能保证第1块一定是好的,另外,在使用过程中,也可能出现坏块,在这里,首先根据Nandflash的数据规格书datasheet读取判断nandflash好坏的地址数据,再对于初步确定为坏块的,重新进行一次删除以进一步确定。对于坏块,在内存空间中设置或刷新BLOCK_BAT标志,表示不能使用;对于好块,在内存空间中设置或刷新BLOCK_GOOD NOTUSE标志。
5.如步骤S615至步骤S619,在nandflash里寻找第1个好块作为系统块,设置块信息的结构BLOCK_INFO。
6.如步骤S620至步骤S624,在nandflash里寻找第2个好块作为物理文件块,该物理文件块保存该nandflash所有物理文件信息,物理文件结构参照表2。
7.如步骤S625,在系统块中保存所设置的文件系统标识符(即“MALATAFS”)和内存空间所保存的nandflash每个块的好坏、使用情况、作用信息。
8.如步骤S626,由于格式化后nandflash是没有文件的,所以把物理文件双向链表,头,尾指针置空。
9.显然,在步骤S627中,表示该nandflash好快的数量不足2个(好快为0个或仅仅1个),不能创建文件系统。
通过步述步骤1至步骤8完成本发明的格式化处理,确定了系统块和物理文件块,创建了文件系统。
如图5所示,本发明的读取文件具体控制流程如下I.如步骤S701,初始化文件系统,如步骤S702,判断该nandflash是否是本实施例中和“MALATAFS”(万利达)文件系统,进行如下操作I1、若是,则继续如下步骤II。
I2、若不是,继续如下步骤Ⅶ。
II.读取系统块信息和所有物理文件,并且创建物理文件链表保存于内存中,如图6所示,该链表为一双向链表,把整个nandflash物理文件FileNode连接起来。在读,写,删除某逻辑文件时,在链表里查找文件,得到逻辑文件对应的物理文件数据,以提高速度。
III.如步骤S703,打开需要读取的逻辑文件,在物理文件链表里查找该逻辑文件,如步骤S704,根据打开是否成功进行如下操作III1、若成功,则继续如下步骤Ⅳ。
III2、若不成功,则继续如下步骤Ⅶ。
IV.分配缓冲空间,其大小等于nandflash一个块的大小,获取逻辑文件对应的物理文件数据,并将其保存至缓冲空间。
V.如步骤S705,用户读取缓冲空间的数据,由缓冲空间输出数据,此时用户调用高级函数读取数据,刚打开文件时已把文件第一块数据读进缓冲空间,逻辑文件位置0,如果高级函数读取的数据在该缓冲空间,则从缓冲区里直接输出数据给用户;如步骤706,如果高级函数读取的数据不在缓冲区,则根据文件位置,计算访问位置所在物理块,把新的一块数据读进缓冲空间,再从缓冲空间输出数据给用户。如步骤707,直至所有数据输出给用户。
VI.读取完毕后,如步骤708,进行关闭逻辑文件操作,释放缓冲空间内存和逻辑文件指针。
VII.结束流程。
如图7所示,本发明的写入文件具体控制流程如下i.如步骤S801,初始化文件系统,如步骤S802,判断该nandflash是否是本实施例中和“MALATAFS”(万利达)文件系统,进行如下操作i1、若是,则继续如下步骤ii。
i2、若不是,继续如下步骤xi。
ii.读取系统块信息和所有物理文件,并且创建物理文件链表。
iii.如步骤S803,在物理文件链表里查找是否存在该逻辑文件,进行如下操作iii1、若存在,则继续如下步骤xi。
iii2、若不存在,则继续如下步骤iv。
iv.如步骤S804,打开需要写入的逻辑文件,并分配缓冲空间,其大小等于nandflash一个块的大小,如步骤S805,根据打开是否成功进行如下操作iv1、若成功,则继续如下步骤v。
iv2、若不成功,则继续如下步骤xi。
v.如步骤S806把逻辑文件第一块数据写到缓冲空间。
vi.如步骤S807,在缓冲空间中保存数据。
vii.如步骤S808,若缓冲空间已满,继续如下步骤viii,否则,返回步骤vi。
viii.如步骤S809,从系统块里分配一可使用的物理块保存缓冲区数据,分配成功则同时把该块信息保存在(如表2的)物理文件信息分配表中,如步骤S810,调用底层函数把该块数据保存在nandflash里,继续如下步骤ix;分配不成功则继续如下步骤x。
ix.如步骤S811,继续逻辑文件下一块数据的操作,如步骤S812,重复上述步骤vi至步骤viii,直至将所有逻辑文件数据保存到nandflash对应物理块。
x.如步骤S813,关闭逻辑文件,释放缓冲空间和逻辑文件空间,更新系统块数据和物理文件块数据,以保存新的逻辑文件输入。
xi.结束流程。
综上所述,尽管本发明的基本结构、原理、方法通过上述实施例予以具体阐述,在不脱离本实用新型要旨的前提下,根据以上所述的启发,本领域普通技术人员可以不需要付出创造性劳动即可实施多种变换/替代形式或组合,此处不再赘述。
权利要求
1.一种nandflash文件系统实现方法,其特征在于在nandflash存储器中寻找至少两个有效块,分别作为系统块和物理文件块,所述的系统块反映nandflash的所有块信息,所述的物理文件块保存该nandflash所有物理文件信息。
2.如权利要求1所述的nandflash文件系统实现方法,其特征在于它采用如下步骤A、对nandflash存储器进行格式化操作,以寻找到的第1个好块作为系统块,所述的系统块中包括设定的文件系统标识字符串和nandflash各个块的好坏、使用情况、作用信息;在nandflash里寻找第2个好块作为物理文件块,所述的物理文件体现为nandflash驱动函数,每个驱动函数产生符合nandflash操作的控制时序,每个物理文件占用设定长度的字节,其数据结构包括文件名、文件扩展名、文件大小和文件数据所要分配的nandflash物理块信息;B、根据所述的系统块和物理文件块中的信息,完成逻辑文件的操作。
3.如权利要求2所述的nandflash文件系统实现方法,其特征在于所述的步骤A中,所述的系统块第0页第0个字节开始,前面的字节保存设定的nandflash文件系统标识字符串,后续的字节保存每个块的信息。
4.如权利要求2所述的nandflash文件系统实现方法,其特征在于所述的步骤A中,所述的物理文件块中,从第0页到最后一页,以FileNode数据为一个单位,依次保存FileNode数据;读取其中的物理信息时,从该物理文件块第0页到最后一页,按256字节为一个单位依次读取所有信息。
5.如权利要求2所述的nandflash文件系统实现方法,其特征在于所述的步骤B中,所述的逻辑文件体现为高级函数,高级函数通过调用驱动函数实现对nandflash物理存储单元数据访问,所述的系统块根据nandflash每物理块的作用和使用信息分配物理块保存逻辑文件数据。
6.如权利要求2所述的nandflash文件系统实现方法,其特征在于所述的步骤B中,所述的逻辑文件所包含的基本信息包括逻辑文件操作缓冲区,逻辑文件大小,文件操作逻辑位置,逻辑文件操作结果标识,逻辑文件对应的物理文件。
7.如权利要求2-6中任意一项所述的nandflash文件系统实现方法,其特征在于所述的步骤A包括如下步骤A1、对整个nandflash删除,根据nandflash控制时序要求,从第一块到最后一块依次发送删除命令删除;A2、分配等于nandflash总块数字节的内存空间,每个字节标识每nandflash物理快的好、坏,使用情况、作用信息;A3、设置文件系统标识字符串;A4、进一步判断整个nandflash存储器好、坏块,并且在分配的内存空间中设置或刷新相应标志;A5、在nandflash里寻找第1个好块作为系统块,设置块信息的结构;A6、在nandflash里寻找第2个好块作为物理文件块;A7、在系统块中保存所设置的文件系统标识符和内存空间所保存的nandflash每个块的好坏、使用情况、作用信息。
8.如权利要求2-6中任意一项所述的nandflash文件系统实现方法,其特征在于所述的步骤B包括如下步骤B1、读取系统块信息和所有物理文件,并且创建物理文件链表;B2、在物理文件链表里查找到需要读取的逻辑文件,并分配缓冲空间;B3、获取逻辑文件对应的物理文件数据,并将其保存至缓冲空间;B4、由缓冲空间输出数据;B5、关闭逻辑文件操作。
9.如权利要求2-6中任意一项所述的nandflash文件系统实现方法,其特征在于所述的步骤B包括如下步骤b1、读取系统块信息和所有物理文件,并且创建物理文件链表;b2、打开需要写入的逻辑文件,并分配缓冲空间;b3、把逻辑文件数据写到缓冲空间;b4、由缓冲空间将逻辑文件数据保存到nandflash对应物理块;b5、释放缓冲空间和逻辑文件空间,更新系统块数据和物理文件块数据,以保存新的逻辑文件输入。
全文摘要
一种涉及计算的nandflash文件系统实现方法,在nandflash存储器中寻找至少两个有效块,分别作为系统块和物理文件块,系统块反映nandflash的所有块信息,物理文件块保存该nandflash所有物理文件信息,主要步骤为A.对nandflash存储器进行格式化操作,以寻找到的第1个好块作为系统块,系统块中包括设定的文件系统标识字符串和nandflash各个块的好坏、使用情况、作用信息;在nandflash里寻找第2个好块作为物理文件块,物理文件体现为nandflash驱动函数,每个驱动函数产生符合nandflash操作的控制时序,B.根据系统块和物理文件块中的信息,完成逻辑文件的操作,本发明应用性能强,稳定性和可靠性高。
文档编号G06F17/30GK101013397SQ20071007309
公开日2007年8月8日 申请日期2007年2月8日 优先权日2007年2月8日
发明者吴凯庭, 吴启楠, 王燕飞, 梁仲宏 申请人:深圳万利达电子工业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1