嵌入式arm处理器对nandflash数据存储和删除方法

文档序号:6431112阅读:307来源:国知局
专利名称:嵌入式arm处理器对nandflash数据存储和删除方法
技术领域
本发明涉及一种计算机领域的数据存储,尤其涉及在基于ARM处理器且无操作系统的嵌入式实时数据采集领域的NANDFLASH数据存储和删除方法,重点在于延长 NANDFLASH的使用寿命,提高NANDFLASH的使用效率。
背景技术
随着嵌入式技术的飞速发展,尤其在工业控制方面,嵌入式系统以专用性强、成本低、性能高、稳定性好而得到越来越广泛使用。基于ARM内核的微处理器,以性能高、成本低、能耗省、丰富的外接扩展电路、开发方便在嵌入式工控方面得到广泛的使用。在基于ARM的车载数据采集系统上,由于车载的特殊环境,比如震动比较强烈、 粉尘等情况,使得其对存储芯片有很高的要求,必须是抗震好、速度快等。由于NANDFLASH 具有引脚少、数据线和地址线复用,同时采用TSOP封装,可直接焊接在ARM核心板或底板上,具有非常好的抗震性能。在复杂车载环境中,使用嵌入式数据采集系统,该系统采用 NANDFLASH作为存储媒介,可以获得高效、安全的数据存取,另一方面NANDFLASH具有很高的数据写入和读取速度,特别适用于需要采集大量数据的数据采集领域。同时大部分ARM 处理器已经完全支持NANDFLASH并做了相应的优化,使得NANDFLASH的应用相当简单。但是在数据采集领域,由于过度频繁的对NANDFLASH的某些块进行重复操作,会很快的降低 NANDFLASH的使用寿命。这是由NANDFLASH本身的物理电气性质所决定的。数据采集存储作为嵌入式领域的一个重要部分,保存大量嵌入式系统实时采集的数据和系统使用的数据。基于NANDFLASH的存储器由于具有存储容量大、体积小、掉电数据不易丢失、可多次擦写等优点,更重要的是NANDFLASH存储速度快,采用TSOP封装直接封装在ARM开发板上,没有任何移动部分,不用担心机械运动的损坏,具有非常好的抗震效果。 特别适用于复杂的车载环境,尤其是采集数据量大的领域,同时为了方便NANDFLASH存储和管理,引入了类似FAT文件系统,提高了数据的稳定和安全性。FAT文件系统的引进能方便数据在NANDFLASH的管理,但是由于FAT文件管理方式会造成某个区域(文件分配表区)频繁的操作,比如一个FAT的簇大小为2KB,而Block 的大小为U8KB,这时最坏的情况是当存储1个Block大小的数据时,该Block只要进行一次擦写操作,而FAT数据区(文件目录)擦除的次数为131072次。而NANDFLASH的读写次数是有限制的,所以必须均衡在每一个Block上的擦除次数。一个大小为256M大小的 NANDFLASH (如K9F2GXXX0M),则该NANDFLASH的期望寿命为(理想状态下)期望寿命=256MX100000X0. 7/20M = 896000 次其中0. 7表示额外损耗系数。

发明内容
本发明的目的在于,提供一种不需要操作系统支持的ARM处理器对NANDFLASH数据存储和删除方法,可最大限度的提高NANDFLASH的使用寿命,同时方便数据在NANDFLASH的存储和管理。为了实现上述任务,本发明采取如下的技术解决方案一种嵌入式ARM处理器对NANDFLASH数据存储和删除方法,其特征在于,该方法严格控制NANDFLASH的每一数据块擦除的次数,具体按以下步骤操作1) ARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;2)在内存中建立一个缓存区A,该缓存区A的大小与NANDFLASH的页大小一样;3)从NANDFLASH的BlockO,PageO和I^age 1读取FAT文件分配信息,获取记录 NANDFALSH坏块信息,将不对这些坏块进行任何的读写操作;4)从NANDFLASH的BlockO块,Page2到Blockl读取剩余其他Block的文件配置信息,获取当前可操作的Block位置、I^age位置和在该I^ge里面设置的偏移地址hdex ;5)针对ARM处理器写和删除NANDFLASH数据操作请求做出判断;A)如果是数据写请求,则进行以下操作(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和 Page区域;(2)开始申请下一个可进行数据存储的I^age,如果还在同一个Block里,则对I^age 偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的 Block 地址,将 I^age 置 O ;(3)如果是强制写入函数,则将数据立即写入I^age,同时更改I^age的索引值 hdex,继续填充缓存区A,直到数据量达到缓存区A的大小;(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block数据拷贝操作, 减少系统延时;(B)如果是数据删除请求,则进行以下操作(1)将要删除数据开始位置的I^age位置和I^age偏移位置之前的数据复制到当前 Block.Page和偏移位置中,同时将删除数据结束位置的I^age位置和I^age偏移之后的数据复制到当前Block、I^age和偏移位置中;(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表,查找可用的Block,并将该Blokc的对应编号做相应处理;(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,再进行一次擦除操作,擦除操作后依然提示ECC校验失败,则将该Block的PageO扩展区Spare area 的第六个字节标记为非OxfT的值。本发明实现了不依赖操作系统的嵌入式ARM处理器对NANDFLASH的高效写入和删除操作,可大幅度提高NANDFLASH的使用寿命,且不依赖操作系统,移植简单。


图1是NANDFLASH数据写流程图;图2是NANDFLASH数据删除流程图。下面结合附图对本发明作进一步详细的说明。
具体实施例方式按照本发明的技术方案,ARM嵌入式处理器对NANDFLASH数据存储和删除方法,具体按以下步骤进行操作1) ARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;2)在内存中建立一个缓存区A,该缓存区A的大小与NANDFLASH的页大小一样;3)从NANDFLASH的BlockO,PageO和Pagel读取文件分配信息,获取记录坏块信息,将不对这些坏块进行任何的读写操作;4)从NANDFLASH的BlockO,Page2到Blockl读取剩余其他Block的文件配置信息,返回当前可操作的Block位置、Page位置和在该I^age里面的设置的偏移地址索引值;5)针对ARM处理器读写NANDFLASH数据操作请求做出以下判断(A)如果是数据写请求,则进行以下操作(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和 Page区域;(2)开始申请下一个可进行数据存储的I^age,如果还在同一个Block里,则对I^age 偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的 Block 地址,将 I^age 置 O ;(3)如果是强制写入函数,则将数据立即写入I^age,同时更改I^ge的索引值,继续填充缓存区A,使数据大小达到缓存区A的大小;(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block拷贝操作,减少系统延时;(B)如果是数据删除请求,则进行以下操作(1)将要删除数据开始位置的I^age位置和I^age偏移位置之前的数据复制到当前 Block.Page和偏移位置中,同时将删除数据结束位置的I^age位置和I^age偏移之后的数据复制到当前Block、I^age和偏移位置中;(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表,查找可用的Block,并将该Blokc的对应编号做相应处理;(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,这时可以再进行一次擦除操作,依然提示ECC校验失败,则将该块的PageO扩展区的第六个字节标记为非Oxff的值。以下是发明人给出的实施例。参见图1,图1给出了 NANDFLASH数据写流程,具体操作过程是系统上电后,需要对NANDFLASH进行初始化,该过程主要是根据NANDFLASH的读写时序,控制相应的寄存器或者读写引脚的延时,这是因为不同的ARM处理器对NANDFLASH的支持方式是不一样的。通过读ID操作获取该快NANDFLASH的硬件存储信息,包括Block大小、Page大小、Spare area大小、NANDFLASH容量等信息,通过该信息,在内存区域开辟大小相适应的缓冲区,该缓冲区主要存放需要写入到NANDFLASH里面的数据,当数据容量超过该缓冲区时,立刻执行写操作。图2给出了 NANDFLASH删除数据的具体流程,具体操作过程是
首先读取文件分配信息,在这里建立一个小型的数组,记录系统每一个不能使用的坏块,如果在文件分配信息中记录的坏块达到系统全部Block的数量的30%时,给出严重的系统警告,NANDFLASH的使用寿命即将到达最大值,接着读取在每一个Block里的 Spare area区域里面的记录数据,找出一定数量的Block,它们的擦除次数是系统擦除次数最少的,以供后续Block申请使用。在写数据的过程中,主要参考Block、I^age和^idex值来引导存储位置的,如果是普通写入的话,最少的操作量级是在I^ge级别,如果是强制写入的话,那么操作级别就在 Index上。当操作的数据在同一 Block里面时,只有当出现写ECC校验失败时,才会开始申请一个新的Block进行数据拷贝。在坏块的处理上面,本着多次尝试的原则,如果在第二次 Block擦除中,依然提示ECC校验失败,就果断将该快设置为坏块,不再进行任何的数据操作,相反,则继续标记该块为可使用的数据块,并且更新该Block的Spare area记录,使得系统明白自己对该块所做的操作。NANDFLASH的数据删除过程与一般的存储芯片的删除方法不一样,因为 NANDFLASH的物理性质决定其数据信息只能有高电平变为低电平,而不能从低电平变为高电平,即某比特的信息可以有1写为0,但是不能有0写为1,如果要恢复高电平状态,就必须使用Block擦除命令,但是这样也会将这个Block的数据破坏,因此需要申请一块新的 Block用于存放删除后的新数据,该新Block存放完数据后,也需进行ECC校验判断,因为 NANDFLASH的位反转现象可以出现在写数据操作的任何时候。
权利要求
1. 一种嵌入式ARM处理器对NANDFLASH数据存储和删除方法,其特征在于,该方法严格控制NANDFLASH的每一数据块擦除的次数,具体按以下步骤操作DARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;2)在内存中建立一个数据缓存区A,该缓数据存区A的大小与NANDFLASH的页大小一样;3)从NANDFLASH的BlockO,PageO和Pagel读取FAT文件分配信息,获取记录 NANDFLASH坏块信息,将不对这些坏块进行任何的读写操作;4)从NANDFLASH的BlockO块,Page2到Blockl读取剩余其他Block的文件配置信息, 获取当前可操作的Block位置、Page位置和在该I^age里面设置的偏移地址hdex ;5)针对ARM处理器写和删除NANDFLASH数据操作请求做出判断;A)如果是数据写请求,则进行以下操作(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和I^age 区域;(2)开始申请下一个可进行数据存储的I^ge,如果还在同一个Block里,则对I^age偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的 Block 地址,将 I^age 置 O ;(3)如果是强制写入函数,则将数据立即写入I^age,同时更改I^ge的索引值hdex,继续填充缓存区A,直到数据量达到缓存区A的大小;(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block数据拷贝操作,减少系统延时;(B)如果是数据删除请求,则进行以下操作(1)将要删除数据开始位置的I^age位置和I^age偏移位置之前的数据复制到当前 Block.Page和偏移位置中,同时将删除数据结束位置的I^age位置和I^age偏移之后的数据复制到当前Block、I^age和偏移位置中;(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表, 查找可用的Block,并将该Blokc的对应编号做相应处理;(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,再进行一次擦除操作,擦除操作后依然提示ECC校验失败,则将该Block的PageO扩展区Spare area的第六个字节标记为非Oxff的值。
全文摘要
本发明公开了一种嵌入式ARM(Advanced RISC Machines)处理器对NANDFLASH(非易失闪存)数据存储和删除方法,该方法严格控制NANDFLASH的每一块数据擦除的次数,首先获得NANDFLASH存储信息;然后在ARM处理器的内存(SDRAM)中建立一个数据缓存区A,从NANDFLASH的Block0,Page0和Page1读取FAT(File Allocation Table)文件分配信息(该分配信息保存NNADFLASH的坏块记录),然后针对ARM处理器写和删除NANDFLASH数据操作请求做出判断,规定了写请求和删除请求的操作。该方法实现了不依赖操作系统的嵌入式ARM处理器对NANDFLASH的高效写入和删除操作,可大幅度提高NANDFLASH的使用寿命,且不依赖操作系统,移植简单。
文档编号G06F12/02GK102323907SQ201110238970
公开日2012年1月18日 申请日期2011年8月19日 优先权日2011年8月19日
发明者余腾, 史昕, 惠飞, 杨澜, 赵祥模, 雷涛 申请人:长安大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1