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

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

Info

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
Application number
CN201110238970A
Other languages
English (en)
Inventor
赵祥模
惠飞
余腾
史昕
杨澜
雷涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changan University
Original Assignee
Changan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changan University filed Critical Changan University
Priority to CN201110238970A priority Critical patent/CN102323907A/zh
Publication of CN102323907A publication Critical patent/CN102323907A/zh
Pending legal-status Critical Current

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数据存储和删除方法
技术领域
本发明涉及一种计算机领域的数据存储,尤其涉及在基于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的值。
CN201110238970A 2011-08-19 2011-08-19 嵌入式arm处理器对nandflash数据存储和删除方法 Pending CN102323907A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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