CN102323907A - 嵌入式arm处理器对nandflash数据存储和删除方法 - Google Patents
嵌入式arm处理器对nandflash数据存储和删除方法 Download PDFInfo
- Publication number
- CN102323907A CN102323907A CN201110238970A CN201110238970A CN102323907A CN 102323907 A CN102323907 A CN 102323907A CN 201110238970 A CN201110238970 A CN 201110238970A CN 201110238970 A CN201110238970 A CN 201110238970A CN 102323907 A CN102323907 A CN 102323907A
- Authority
- CN
- China
- Prior art keywords
- data
- nandflash
- block
- page
- write
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种嵌入式ARM(Advanced RISC Machines)处理器对NANDFLASH(非易失闪存)数据存储和删除方法,该方法严格控制NANDFLASH的每一块数据擦除的次数,首先获得NANDFLASH存储信息;然后在ARM处理器的内存(SDRAM)中建立一个数据缓存区A,从NANDFLASH的Block0,Page0和Page1读取FAT(File Allocation Table)文件分配信息(该分配信息保存NNADFLASH的坏块记录),然后针对ARM处理器写和删除NANDFLASH数据操作请求做出判断,规定了写请求和删除请求的操作。该方法实现了不依赖操作系统的嵌入式ARM处理器对NANDFLASH的高效写入和删除操作,可大幅度提高NANDFLASH的使用寿命,且不依赖操作系统,移植简单。
Description
技术领域
本发明涉及一种计算机领域的数据存储,尤其涉及在基于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的大小为128KB,这时最坏的情况是当存储1个Block大小的数据时,该Block只要进行一次擦写操作,而FAT数据区(文件目录)擦除的次数为131072次。而NANDFLASH的读写次数是有限制的,所以必须均衡在每一个Block上的擦除次数。一个大小为256M大小的NANDFLASH(如K9F2GXXX0M),则该NANDFLASH的期望寿命为(理想状态下):
期望寿命=256M×100000×0.7/20M=896000次
其中0.7表示额外损耗系数。
发明内容
本发明的目的在于,提供一种不需要操作系统支持的ARM处理器对NANDFLASH数据存储和删除方法,可最大限度的提高NANDFLASH的使用寿命,同时方便数据在NANDFLASH的存储和管理。
为了实现上述任务,本发明采取如下的技术解决方案:
一种嵌入式ARM处理器对NANDFLASH数据存储和删除方法,其特征在于,该方法严格控制NANDFLASH的每一数据块擦除的次数,具体按以下步骤操作:
1)ARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;
2)在内存中建立一个缓存区A,该缓存区A的大小与NANDFLASH的页大小一样;
3)从NANDFLASH的Block0,Page0和Page1读取FAT文件分配信息,获取记录NANDFALSH坏块信息,将不对这些坏块进行任何的读写操作;
4)从NANDFLASH的Block0块,Page2到Block1读取剩余其他Block的文件配置信息,获取当前可操作的Block位置、Page位置和在该Page里面设置的偏移地址Index;
5)针对ARM处理器写和删除NANDFLASH数据操作请求做出判断;
A)如果是数据写请求,则进行以下操作:
(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和Page区域;
(2)开始申请下一个可进行数据存储的Page,如果还在同一个Block里,则对Page偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的Block地址,将Page置0;
(3)如果是强制写入函数,则将数据立即写入Page,同时更改Page的索引值Index,继续填充缓存区A,直到数据量达到缓存区A的大小;
(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block数据拷贝操作,减少系统延时;
(B)如果是数据删除请求,则进行以下操作:
(1)将要删除数据开始位置的Page位置和Page偏移位置之前的数据复制到当前Block、Page和偏移位置中,同时将删除数据结束位置的Page位置和Page偏移之后的数据复制到当前Block、Page和偏移位置中;
(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表,查找可用的Block,并将该Blokc的对应编号做相应处理;
(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,再进行一次擦除操作,擦除操作后依然提示ECC校验失败,则将该Block的Page0扩展区Spare area的第六个字节标记为非0xff的值。
本发明实现了不依赖操作系统的嵌入式ARM处理器对NANDFLASH的高效写入和删除操作,可大幅度提高NANDFLASH的使用寿命,且不依赖操作系统,移植简单。
附图说明
图1是NANDFLASH数据写流程图;
图2是NANDFLASH数据删除流程图。
下面结合附图对本发明作进一步详细的说明。
具体实施方式
按照本发明的技术方案,ARM嵌入式处理器对NANDFLASH数据存储和删除方法,具体按以下步骤进行操作:
1)ARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;
2)在内存中建立一个缓存区A,该缓存区A的大小与NANDFLASH的页大小一样;
3)从NANDFLASH的Block0,Page0和Page1读取文件分配信息,获取记录坏块信息,将不对这些坏块进行任何的读写操作;
4)从NANDFLASH的Block0,Page2到Block1读取剩余其他Block的文件配置信息,返回当前可操作的Block位置、Page位置和在该Page里面的设置的偏移地址索引值;
5)针对ARM处理器读写NANDFLASH数据操作请求做出以下判断:
(A)如果是数据写请求,则进行以下操作:
(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和Page区域;
(2)开始申请下一个可进行数据存储的Page,如果还在同一个Block里,则对Page偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的Block地址,将Page置0;
(3)如果是强制写入函数,则将数据立即写入Page,同时更改Page的索引值,继续填充缓存区A,使数据大小达到缓存区A的大小;
(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block拷贝操作,减少系统延时;
(B)如果是数据删除请求,则进行以下操作:
(1)将要删除数据开始位置的Page位置和Page偏移位置之前的数据复制到当前Block、Page和偏移位置中,同时将删除数据结束位置的Page位置和Page偏移之后的数据复制到当前Block、Page和偏移位置中;
(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表,查找可用的Block,并将该Blokc的对应编号做相应处理;
(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,这时可以再进行一次擦除操作,依然提示ECC校验失败,则将该块的Page0扩展区的第六个字节标记为非0xff的值。
以下是发明人给出的实施例。
参见图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、Page和Index值来引导存储位置的,如果是普通写入的话,最少的操作量级是在Page级别,如果是强制写入的话,那么操作级别就在Index上。当操作的数据在同一Block里面时,只有当出现写ECC校验失败时,才会开始申请一个新的Block进行数据拷贝。在坏块的处理上面,本着多次尝试的原则,如果在第二次Block擦除中,依然提示ECC校验失败,就果断将该快设置为坏块,不再进行任何的数据操作,相反,则继续标记该块为可使用的数据块,并且更新该Block的Spare area记录,使得系统明白自己对该块所做的操作。
NANDFLASH的数据删除过程与一般的存储芯片的删除方法不一样,因为NANDFLASH的物理性质决定其数据信息只能有高电平变为低电平,而不能从低电平变为高电平,即某比特的信息可以有1写为0,但是不能有0写为1,如果要恢复高电平状态,就必须使用Block擦除命令,但是这样也会将这个Block的数据破坏,因此需要申请一块新的Block用于存放删除后的新数据,该新Block存放完数据后,也需进行ECC校验判断,因为NANDFLASH的位反转现象可以出现在写数据操作的任何时候。
Claims (1)
1.一种嵌入式ARM处理器对NANDFLASH数据存储和删除方法,其特征在于,该方法严格控制NANDFLASH的每一数据块擦除的次数,具体按以下步骤操作:
1)ARM处理器对NANDFLASH进行初始化,获得NANDFLASH存储信息;
2)在内存中建立一个数据缓存区A,该缓数据存区A的大小与NANDFLASH的页大小一样;
3)从NANDFLASH的Block0,Page0和Page1读取FAT文件分配信息,获取记录NANDFLASH坏块信息,将不对这些坏块进行任何的读写操作;
4)从NANDFLASH的Block0块,Page2到Block1读取剩余其他Block的文件配置信息,获取当前可操作的Block位置、Page位置和在该Page里面设置的偏移地址Index;
5)针对ARM处理器写和删除NANDFLASH数据操作请求做出判断;
A)如果是数据写请求,则进行以下操作:
(1)如果数据量达到数据缓存区A大小时,将缓存区的数据写入相应的Block和Page区域;
(2)开始申请下一个可进行数据存储的Page,如果还在同一个Block里,则对Page偏移量加1,如果不是,则要申请一个新的Block;从上面建立的文件分配信息里面可以迅速查找可以使用的Block,同时查找出擦除次数最少的Blokc编号,通过该编号获取相应的Block地址,将Page置0;
(3)如果是强制写入函数,则将数据立即写入Page,同时更改Page的索引值Index,继续填充缓存区A,直到数据量达到缓存区A的大小;
(4)如果在写入过程中存在ECC校验失败的情况,则需进行Block数据拷贝操作,减少系统延时;
(B)如果是数据删除请求,则进行以下操作:
(1)将要删除数据开始位置的Page位置和Page偏移位置之前的数据复制到当前Block、Page和偏移位置中,同时将删除数据结束位置的Page位置和Page偏移之后的数据复制到当前Block、Page和偏移位置中;
(2)在上一步的操作中如果需要新的Block存储数据时,根据建立的文件分配信息表,查找可用的Block,并将该Blokc的对应编号做相应处理;
(3)擦除存在脏数据的Block,如果在擦除过程中出现ECC校验失败,再进行一次擦除操作,擦除操作后依然提示ECC校验失败,则将该Block的Page0扩展区Spare area的第六个字节标记为非Oxff的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110238970A CN102323907A (zh) | 2011-08-19 | 2011-08-19 | 嵌入式arm处理器对nandflash数据存储和删除方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110238970A CN102323907A (zh) | 2011-08-19 | 2011-08-19 | 嵌入式arm处理器对nandflash数据存储和删除方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102323907A true CN102323907A (zh) | 2012-01-18 |
Family
ID=45451652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110238970A Pending CN102323907A (zh) | 2011-08-19 | 2011-08-19 | 嵌入式arm处理器对nandflash数据存储和删除方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102323907A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092713A (zh) * | 2012-11-07 | 2013-05-08 | 无锡成电科大科技发展有限公司 | 使用与非闪存存储嵌入式代码的方法 |
CN103294609A (zh) * | 2012-01-27 | 2013-09-11 | 富士通株式会社 | 信息处理装置和存储器管理方法 |
CN104050052A (zh) * | 2013-03-11 | 2014-09-17 | 希捷科技有限公司 | 错误校正代码播种 |
CN107562376A (zh) * | 2017-08-23 | 2018-01-09 | 北京小米移动软件有限公司 | 数据擦除方法及装置 |
CN111179997A (zh) * | 2019-12-26 | 2020-05-19 | 武汉精鸿电子技术有限公司 | 一种半导体存储器测试数据的存储方法及装置 |
CN116301579A (zh) * | 2022-12-06 | 2023-06-23 | 无锡市海鹰加科海洋技术有限责任公司 | 对于自容式测量设备的文件存取系统及其存取方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
CN101968724A (zh) * | 2010-11-04 | 2011-02-09 | 长安大学 | 针对嵌入式arm处理器对sd卡数据存储和删除方法 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
WO2011095516A1 (en) * | 2010-02-05 | 2011-08-11 | St-Ericsson Sa | Method and system for mass storage on flash memory |
-
2011
- 2011-08-19 CN CN201110238970A patent/CN102323907A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
CN101488153A (zh) * | 2009-02-12 | 2009-07-22 | 浙江大学 | 嵌入式Linux下大容量闪存文件系统的实现方法 |
WO2011095516A1 (en) * | 2010-02-05 | 2011-08-11 | St-Ericsson Sa | Method and system for mass storage on flash memory |
CN101968724A (zh) * | 2010-11-04 | 2011-02-09 | 长安大学 | 针对嵌入式arm处理器对sd卡数据存储和删除方法 |
CN102081577A (zh) * | 2011-01-12 | 2011-06-01 | 厦门雅迅网络股份有限公司 | Flash存储器的数据存储结构及其数据操作方式 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294609A (zh) * | 2012-01-27 | 2013-09-11 | 富士通株式会社 | 信息处理装置和存储器管理方法 |
CN103294609B (zh) * | 2012-01-27 | 2016-01-13 | 富士通株式会社 | 信息处理装置和存储器管理方法 |
CN103092713A (zh) * | 2012-11-07 | 2013-05-08 | 无锡成电科大科技发展有限公司 | 使用与非闪存存储嵌入式代码的方法 |
CN104050052A (zh) * | 2013-03-11 | 2014-09-17 | 希捷科技有限公司 | 错误校正代码播种 |
CN104050052B (zh) * | 2013-03-11 | 2017-11-17 | 希捷科技有限公司 | 错误校正代码播种 |
CN107562376A (zh) * | 2017-08-23 | 2018-01-09 | 北京小米移动软件有限公司 | 数据擦除方法及装置 |
CN111179997A (zh) * | 2019-12-26 | 2020-05-19 | 武汉精鸿电子技术有限公司 | 一种半导体存储器测试数据的存储方法及装置 |
CN116301579A (zh) * | 2022-12-06 | 2023-06-23 | 无锡市海鹰加科海洋技术有限责任公司 | 对于自容式测量设备的文件存取系统及其存取方法 |
CN116301579B (zh) * | 2022-12-06 | 2024-01-12 | 无锡市海鹰加科海洋技术有限责任公司 | 对于自容式测量设备的文件存取系统及其存取方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN102622309B (zh) | 数据安全擦除方法及装置 | |
US9697116B2 (en) | Storage system and writing method thereof | |
CN103136121B (zh) | 一种固态盘的缓存管理方法 | |
CN106527969B (zh) | 一种寿命均衡的NandFlash存储器读写方法 | |
CN102323907A (zh) | 嵌入式arm处理器对nandflash数据存储和删除方法 | |
CN104268095A (zh) | 一种存储器及基于该存储器进行数据读/写操作的方法 | |
CN101819509A (zh) | 一种固态硬盘读写方法 | |
CN100449549C (zh) | 嵌入式系统中NAND Flash存储器上建立文件系统的方法 | |
CN110515550B (zh) | 一种sata固态硬盘冷热数据分离的方法及其装置 | |
CN101727395A (zh) | 闪存设备的管理系统、方法及闪存设备 | |
CN108431783A (zh) | 访问请求处理方法、装置及计算机系统 | |
CN108959589B (zh) | 基于stt-mram加速固态存储器件日志文件保存恢复的方法 | |
CN101702139B (zh) | 一种访问Nand闪存数据的方法和装置 | |
CN101383190A (zh) | 应用于固态硬盘的闪存均衡损耗算法 | |
CN104461750A (zh) | 一种NAND flash的访问方法和装置 | |
CN109144899A (zh) | 用于管理表恢复的方法 | |
CN102306124A (zh) | Nand Flash芯片硬件驱动层的实现方法 | |
CN105607862A (zh) | 一种dram与mram结合具有备份电源的固态硬盘 | |
CN107506311B (zh) | 一种固态硬盘的ftl表的刷写方法及装置 | |
CN102012873A (zh) | Nand闪存的缓存系统及缓存方法 | |
CN101819821B (zh) | 一种固态硬盘动态损耗均衡方法 | |
CN108491166B (zh) | 面向光盘库的读数据缓存管理方法 | |
CN102520885A (zh) | 一种混合硬盘的数据管理系统 | |
KR100995546B1 (ko) | 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120118 |