一种基于nand flash的高可靠线性文件存取方法技术

技术编号:9667612 阅读:88 留言:0更新日期:2014-02-14 05:43
本发明专利技术公开了一种基于nand?flash的高可靠线性文件存取方法,nand?flash包括sdram存储器,nvram非易失存储器和nand?flash存储阵列;存取方法包括以下步骤:初始化分区表;初始化文件信息,包括文件的始末地址、打开方式、文件名和文件大小信息;根据初始化文件信息,创建新文件;采用顺序地址方式将数据从nand?flash的sdram存储器中的缓冲区搬移至分区中文件指针指向的存储区域,完成文件写入;将数据从分区读取到nand?flash的sdram存储器中,然后从sdram存储器中取走,完成文件读取。本发明专利技术实现了对基于nand?flash的设备的文件存取管理,具有效率高、以文件方式实现数据存取等特点。

【技术实现步骤摘要】
—种基于nand flash的高可靠线性文件存取方法
本专利技术涉及计算机存储领域,尤其涉及一种基于nand flash的高可靠线性文件存 取方法。
技术介绍
nand flash是一种大容量的存储芯片,其特点是容量密度大,制造成本低,访问 速度快,通常作为U盘、固态盘、存储卡等设备上的存储芯片,但其也存在一些不足:它属于 地址、数据共用类型访问方式,访问相对麻烦,它由于本身出厂是就存在坏块,需要“跳过” 坏块进行访问,需要专门的管理方法进行块的管理。目前对数据的管理主要分以下两种方 式:(I)无文件系统方式访问,使用者需调用函数对存储单元进行直接操作,实现难度 低,但使用难度高;(2)文件系统方式访问,使用者以文件的方式对存储系统进行访问,实现难度高, 但使用难度低。文件系统的优点在于不需要使用者关注数据的存放位置,文件系统来管理数据, 屏蔽了物理介质的不同。由于文件系统对使用者实现数据管理的透明,完全接管数据的存 储,一旦文件系统崩溃会导致数据丢失,所以对文件系统的可靠性要求较高,能经受长时间 的考验。本专利技术涉及一种基于nand flash的高可靠线性文件系统的软件。用于由nand flash组成的存储阵列中实现以文件的方式进行访问管理。本文件系统与windows上使用 的文件系统不同,windows等操作系统上使用的文件系统属于“基于页表结构”形式,而本 文件系统属于线性文件系统。所谓“线性文件系统”是指数据记录在顺序的地址单元中,而 常见的文件系统都是“基于页表结构”形式,即数据记录在不连续的地址单元中,各地址单 元通过一个链表相连接。线性文件系统的特点是管理简单,记录效率高,而常见页表形式的 文件系统管理页表较复杂,无掉电保护特性,效率稍低。本专利技术非常适合于需要一种高可靠 性、高效率、方便使用的记录设备的环境下。
技术实现思路
本专利技术要解决的技术问题在于针对上述现有技术中的缺陷,提供一种基于nand flash的高可靠线性文件系统及线性文件存取方法。本专利技术解决其技术问题所采用的技术方案是:,包括以下步骤:I)初始化分区表;通过初始化获得芯片的属性信息,并对芯片中坏块做好替换准 备;2)初始化文件信息,包括文件的始末地址、打开方式、文件名和文件大小信息;3)根据初始化文件信息,创建新文件;包括以下步骤:a.检查文件名,进行文件名非法自处纠正;b.判断是否存在同名文件,如果不存在同名文件,转入步骤f,否则转入步骤c;c.判断是否“自动追加”模式,如果是转入步骤d,否则创建失败;d.判断是否文件个数已满,如果已满,则转入步骤f,否则转入步骤e ;e.对文件名自动追加后缀序号后,创建添加“后缀序号”的文件;f.判断是否是循环模式,如果是循环模式,则删除最老的文件;g.在分区表中找到一个位置,创建文件信息,并返回指向该位置的文件指针,并根 据文件的大小更新分区表;h.创建完成;4)采用顺序地址方式将数据从nand flash的sdram存储器中的缓冲区搬移至分 区中文件指针指向的存储区域,完成文件与入;5)将数据从分区读取到nand flash的sdram存储器中,然后从sdram存储器中取 走,完成文件读取。按上述方案,所述步骤I)初始化分区表包括以下步骤:1.1)通过初始化获得芯片的属性信息:向nand flash发出读ID的命令,将读取 到的nand fIashID信息与已支持的芯片类型ID进行比对,如果符合则通过初始化得到芯 片的特性信息:block的个数和每block的page数,否则停止后续操作,防止对芯片进行异 常访问;1.2)识别nand芯片中的所有坏块:读取nand芯片的每个block的前2个page 的spare区,若该spare区的信息不为Oxff,则该block为坏块;扫描nand芯片的每一个 block,直至识别出所有的坏块,即完成坏块信息的扫描;1.3)建立坏块到好块的物理位置的映射关系:建立一张坏块表,即无效块到保留 区的映射表,当访问到无效块时,通过查表访问被映射的好块的物理位置。保留区设置在 nand芯片的末尾3%的区域,因为nand芯片的坏块率基本在1%以下,保留3%的区域可保证 所有的坏块均可被替换,还有一定的余量供后续使用中发现的坏块进行替换。在运行中发 现新的坏块时,标记坏块,并从保留区找到一个好块,将数据拷贝至该好块中,坏块计数器 加I ;1.4)按照分区时的参数进行分区大小划分。按上述方案,步骤4)将数据写入分区前,还包括将数据缓冲至nand flash的 nvram非易失存储器中,并随时做好断点保护的步骤。按上述方案,所述步骤4)中,在写入文件时,同时将文件的日志记录到nand flash 的一片nvram存储器中。按上述方案,所述步骤4)中,在写入文件时若掉电,当重新上电时,读取nvram存 储器中的日志数据,通过读取该部分数据追朔至掉电前数据记录物理地址,查询到最后写 入的数据的内容,将未写入至nand存储器的数据从nvram非易失存储器中重新写入到nand 的某分区中。按上述方案,所述步骤4)中,在写入文件时若掉电,采取以下步骤进行处理:4.1)从nvram存储器读取日志数据,判断日志是否正常,若正常则进入步骤4.2);4.2)删除被标记需要删除的文件;4.3)根据日志数据找到断电未关闭的文件,并找到文件断电时的“断点”;4.4)判断是否实时写入,如果是则进入步骤4.5),否则进入步骤4.6);4.5)读取在nvram中缓冲的文件数据,写入到nand阵列中;进入步骤4.7)4.6)处理文件末尾字段,记录文件末尾的地址,写入文件系统分区表中;计算文件 大小、总使用大小、下个可用空间等信息;4.7)更新分区表,即保存分区表到nand阵列中,计算校验码,并保存分区表的备 份;4.8)更新nvram中的日志信息。按上述方案,所述步骤4)中,在文件写入过程中,当写入过程中出现记录错误、擦 除、读出校验等错误时,需要进行块替换时,替换步骤如下:7.1)首先将数据从坏块拷贝出,并进行校验修正,存入sdram存储器;7.2)从替换表SubstiTable中取出的第一个块a,将数据拷入其中;7.3)标记新产生的坏块b,并放入BadTable表中;7.4)建立块a与块b的映射关系,当访问地址处于块a时,会通过查找表,发现块 a是坏块,需要通过访问块b获取正确的数据;7.5)保存新的分区表;所述坏块记录表BadTable为记录坏块的位置的记录表,坏块替换表SubstiTable 为记录被映射到坏块位置的好块的位置的记录表。本专利技术产生的有益效果是:1、传统文件存取方法基本都是运行在操作系统上调用相应的驱动实现,而在某些 嵌入式应用领域,没有操作系统的支持,对大容量nand flash阵列的数据访问还停留在对 底层芯片IO方式;本专利技术对大容量nand flash阵列提供一种无需操作系统的文件形式访 问方法,适用于需要一种高可靠性、高效率、方便使用的嵌入式系统中;2、文件在nand flash中的记录采用顺序地址方式记录,以并行流水方式操作,提 升数据访问速度;3、文件分区表记录在nand flash中,并且分区表多备份,防止文件分区表损坏时 无法修复;4、本文档来自技高网
...

【技术保护点】
一种基于nand?flash的高可靠线性文件存取方法,其特征在于,包括以下步骤:1)初始化分区表;通过初始化获得芯片的属性信息,并对芯片中坏块做好替换准备;2)初始化文件信息,包括文件的始末地址、打开方式、文件名和文件大小信息;3)根据初始化文件信息,创建新文件;包括以下步骤:a.检查文件名,进行文件名非法自处纠正;b.判断是否存在同名文件,如果不存在同名文件,转入步骤f,否则转入步骤c;c.判断是否“自动追加”模式,如果是转入步骤d,否则创建失败;d.判断是否文件个数已满,如果已满,则转入步骤f,否则转入步骤e;e.对文件名自动追加后缀序号后,创建添加“后缀序号”的文件;f.判断是否是循环模式,如果是循环模式,则删除最老的文件;g.在分区表中找到一个位置,创建文件信息,并返回指向该位置的文件指针,并根据文件的大小更新分区表;h.创建完成;4)采用顺序地址方式将数据从nand?flash的sdram存储器中的缓冲区搬移至分区中文件指针指向的存储区域,完成文件写入;5)将数据从分区读取到nand?flash的sdram存储器中,然后从sdram存储器中取走,完成文件读取。

【技术特征摘要】
1.一种基于nand flash的高可靠线性文件存取方法,其特征在于,包括以下步骤:1)初始化分区表;通过初始化获得芯片的属性信息,并对芯片中坏块做好替换准备;2)初始化文件信息,包括文件的始末地址、打开方式、文件名和文件大小信息;3)根据初始化文件信息,创建新文件;包括以下步骤:a.检查文件名,进行文件名非法自处纠正;b.判断是否存在同名文件,如果不存在同名文件,转入步骤f,否则转入步骤c;c.判断是否“自动追加”模式,如果是转入步骤d,否则创建失败;d.判断是否文件个数已满,如果已满,则转入步骤f,否则转入步骤e;e.对文件名自动追加后缀序号后,创建添加“后缀序号”的文件;f.判断是否是循环模式,如果是循环模式,则删除最老的文件;g.在分区表中找到一个位置,创建文件信息,并返回指向该位置的文件指针,并根据文件的大小更新分区表;h.创建完成;4)采用顺序地址方式将数据从nandflash的sdram存储器中的缓冲区搬移至分区中文件指针指向的存储区域,完成文件写入;5)将数据从分区读取到nand flash的sdram存储器中,然后从sdram存储器中取走, 完成文件读取。2.根据权利要求1所述的基于nandflash的高可靠线性文件存取方法,其特征在于, 所述步骤I)初始化分区表包括以下步骤:.1.1)通过初始化获得芯片的属性信息:向nand flash发出读ID的命令,将读取到的 nand flashID信息与已支持的芯片类型ID进行比对,如果符合则通过初始化得到芯片的特性信息:block的个数和每block的page数,否则停止后续操作,防止对芯片进行异常访问;.1.2)识别nand芯片中的所有坏块:读取nand芯片的每个block的前2个page的spare 区,若该spare区的信息不为Oxff,则该block为坏块;扫描nand芯片的每一个block,直至识别出所有的坏块,即完成坏块信息的扫描;.1.3)建立坏块到好块的物理位置的映射关系:建立一张坏块表,即无效块到保留区的映射表,当访问到无效块时,通过查表访问被映射的好块的物理位置;保留区设置在nand 芯片的末尾3%的区域,因为nand芯片的坏块率基本在1%以下,保留3%的区域可保证所有的坏块均可被替换,还有一定的余量供后续使用中发现的坏块进行替换;在运行中发现新的坏块时,标记坏块,并从保留区找到一个好块,将数据拷贝至该好块中,坏块计数器加I ;.1.4)按照分区时的参数进行分区大小划分。3.根据权利...

【专利技术属性】
技术研发人员:袁松毛先俊何冲
申请(专利权)人:中船重工武汉凌久电子有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1