一种寿命均衡的NandFlash存储器读写方法与流程

文档序号:11294939阅读:2472来源:国知局
一种寿命均衡的NandFlash存储器读写方法与流程

本发明涉及一种大容量存储控制技术,具体地说是涉及一种寿命均衡的NandFlash存储器读写方法。



背景技术:

现有绝大部分的Nandflash读写驱动,是为了适应通用的文件系统而设立的,如支持几乎无限制数量的文件写入到存储器中,文件读写格式也是准备格式,因此这类文件系统驱动通常要求软硬件资源较多,比如linux操作系统中的YAFFS文件系统,是一种公认优秀的能完善支持Nandflash存储器的文件系统,移植该系统需要RAM通常为存储器容量的百分之一,如Nandflash存储器容量为1GB,则RAM容量需要10MB,此外对CPU运算速度也有要求,否则无法适应对文件读写的速度要求。

有一类嵌入式系统组成的应用系统,如长时间数据数据采集记录仪器,其每次开机运行时间长,文件数量少,单个文件容量大。这类系统资源相对紧张,比如CPU运行速度几十MHz,RAM容量几十乃至几百KB,无法移植YAFFS这类标准文件驱动系统。大容量数据记录系统中通常将NandFlash作为的数据存储器。这种存储器写入以块(block)为基本单元,存在写入次数有限的缺点,如5000-10000次。在出厂时,就可能存在已经已做标记的坏块(有坏块的存储器的其他块仍然可以正常写入、读出),在写入过程中也会产生新的坏块。因此,对这种存储器进行读写时,需要识别坏块、躲避坏块、均衡写入(尽可能保证所有的块的写入次数一致),以保证整个存储器的寿命。

人们设计了多种文件系统,以支持对NandFlash的读写,其基本思路是建立一张映射表和一个数据缓冲区,定期更新写入次数记录和坏块记录,并依此调整数据写入的块位置。在数据写入开始时,先将数据缓存在缓冲区中,等前述判断完成后再写入NandFlash中。



技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种对存储器进行读写时,可识别坏块、躲避坏块、均衡写入,保证所有的块的写入次数一致,以保证整个存储器的寿命的寿命均衡的NandFlash存储器读写方法。

本发明的技术方案是:一种寿命均衡的NandFlash存储器读写方法,所述方法具体包括以下步骤:

写入步骤为:

第一步:在NandFlash地址空间内建立一张新的文件信息表,读取其他所有文件信息表,确定新的文件的写入起始地址;

第二步:判断文件写入起始地址是否正好处于一个块的起始地址,如果是则要对其擦除,判断擦除操作返回状态,如果返回错误,则表明该块为坏块,需要在交换区找出一个块来替换,并更新坏块登记表;

第三步:待写入的数据存入内存的数据缓冲区,若已存够一页内容,则写入存储器中(一次写满一页),判断写操作返回状态,如果返回错误,则表明该页所处的块为坏块,需要在交换区找出一个块来替换,更新坏块登记表,并将坏块当前页和它之前页的内容复制到新块中;

第四步:页写入成功后,更新文件信息表,包含文件存储起始和结束地址、文件大小、文件更新时间;

第五步,重复第三步,直到用户结束写操作,检查数据缓冲区中是否还有剩余数据,若有则将缓冲区中所有数据写入到存储器(缓冲区未填满的内容用特定字节填充);

第六步:更新文件信息表,结束文件写入操作;

读取步骤为:

第一步:读取文件信息表,已确定文件存储的起始地址和结束地址;

第二步:判断起始地址是否为新的块地址,若是则执行第三步,否则执行第四步;

第三步:判断准备读入的块是否为坏块,若是,则查找其替换块的地址;

第四步:以页为单位读出,根据文件信息表判断文件是否读入完毕,若完毕则结束,否则继续;

第五步:判断块内容是否全部页都读出,若没有则将页地址加1,继续执行第四步,否则执行第六步;

第六步:将块地址加1,继续执行第三步。

进一步,所述方法还包括文件删除操作:文件删除操作是删除信息文件信息表,若被删除文件在数据区的起始地址之前尚存有文件,则将起始地址之前的文件依次复制,并存储到最后1个文件的末尾起始地址,即保证数据区中保存有文件内容的区域地址连贯。

进一步,所述方法还包括文件追加写入操作,即在文件的尾部继续写入,若被追加写入的文件后面没有其他文件,则直接继续写入即可,而如果该文件后面有其他文件,则先执行的文件移动过程,将被追加写入的文件移动到一用存储空间的最尾端,然后在文件尾部继续写入。

进一步,所述NandFlash地址空间分为存储信息区、文件信息区、数据区和交换区;

存储信息区,用于存储坏块登记交换表,位于文件信息区之后;所述存储信息区分成若干小块,每块可以存储一份完整存储信息,每个小块轮流使用;

文件信息区,用于存储坏文件信息表,位于存储器物理地址的前几个块;文件信息区内部分成若干小块,每块可以存储一份完整文件信息,每个小块轮流使用;

数据区,用于存储数据内容本身,位于存储器物理地址的中间部分;

交换区,用于对坏块的交换,位于存储器物理地址的最后若干个块,若数据区中某块无法写入,则将其用交换区中的块替换。

进一步,所述存储信息区和文件信息区均有若干相同大小的小块存储单元组成,每小块存储单元均存储一份完整存储信息,每小块存储单元轮流使用。

本发明的有益效果是:由于采用上述技术方案,本发明的方法具有计算量小、需要内存小的特点,适合适用于同一时间单一文件操作的应用场合,对系统硬件、软件需求低,能为这种低成本、低功耗的嵌入式系统的操作提供完整的文件系统方案。

附图说明

图1为本发明的文件写入方法流程框图。

图2为本发明的文件读取方法流程框图。

图3为本发明的存储区结构示意图。

图4为本发明的文件移动逻辑框图。

具体实施方式

下面结合附图和具体实施例对本发明的技术方案做进一步说明。

如图1和图2所示,本发明一种寿命均衡的NandFlash存储器读写方法,所述方法具体包括以下步骤:

写入步骤为:

第一步:在NandFlash地址空间内建立一张新的文件信息表,读取其他所有文件信息表,确定新的文件的写入起始地址;

第二步:判断文件写入起始地址是否正好处于一个块的起始地址,如果是则要对其擦除,判断擦除操作返回状态,如果返回错误,则表明该块为坏块,需要在交换区找出一个块来替换,并更新坏块登记表;

第三步:待写入的数据存入内存的数据缓冲区,若已存够一页内容,则写入存储器中(一次写满一页),判断写操作返回状态,如果返回错误,则表明该页所处的块为坏块,需要在交换区找出一个块来替换,更新坏块登记表,并将坏块当前页和它之前页的内容复制到新块中;

第四步:页写入成功后,更新文件信息表,包含文件存储起始和结束地址、文件大小、文件更新时间;

第五步,重复第三步,直到用户结束写操作,检查数据缓冲区中是否还有剩余数据,若有则将缓冲区中所有数据写入到存储器(缓冲区未填满的内容用字节填充,如十六进制字节AA);

第六步:更新文件信息表,结束文件写入操作;

读取步骤为:

第一步:读取文件信息表,已确定文件存储的起始地址和结束地址;

第二步:判断起始地址是否为新的块地址,若是则执行第三步,否则执行第四步;

第三步:判断准备读入的块是否为坏块,若是,则查找其替换块的地址;

第四步:以页为单位读出,根据文件信息表判断文件是否读入完毕,若完毕则结束,否则继续;

第五步:判断块内容是否全部页都读出,若没有则将页地址加1,继续执行第四步,否则执行第六步;

第六步:将块地址加1,继续执行第三步。

如图3所示,本发明所述NandFlash地址空间分为存储信息区、文件信息区、数据区和交换区;

存储信息区,用于存储坏块登记交换表,位于文件信息区之后;所述存储信息区分成若干小块,每块可以存储一份完整存储信息,每个小块轮流使用;

文件信息区,用于存储坏文件信息表,位于存储器物理地址的前几个块;文件信息区内部分成若干小块,每块可以存储一份完整文件信息,每个小块轮流使用;

数据区,用于存储数据内容本身,位于存储器物理地址的中间部分;

交换区,用于对坏块的交换,位于存储器物理地址的最后若干个块,若数据区中某块无法写入,则将其用交换区中的块替换。

如图4(a)所示,所述方法还包括文件删除操作:文件删除操作是删除信息文件信息表,若被删除文件在数据区的起始地址之前尚存有文件,则将起始地址之前的文件依次复制,并存储到最后1个文件的末尾起始地址,即保证数据区中保存有文件内容的区域地址连贯。

如图4(b)所示,所述方法还包括文件追加写入操作,即在文件的尾部继续写入,若被追加写入的文件后面没有其他文件,则直接继续写入即可,而如果该文件后面有其他文件,则先执行的文件移动过程,将被追加写入的文件移动到一用存储空间的最尾端,然后在文件尾部继续写入。

以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1