CN103399826B - 一种基于nor flash的数据存储方法 - Google Patents
一种基于nor flash的数据存储方法 Download PDFInfo
- Publication number
- CN103399826B CN103399826B CN201310353845.4A CN201310353845A CN103399826B CN 103399826 B CN103399826 B CN 103399826B CN 201310353845 A CN201310353845 A CN 201310353845A CN 103399826 B CN103399826 B CN 103399826B
- Authority
- CN
- China
- Prior art keywords
- page
- data
- index
- write
- flash
- 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.)
- Active
Links
Abstract
本发明是一种基于NOR?FLASH的数据存储方法,其特征在于,该方法是采用FLASH中存放一级索引,RAM中存放二级索引,存放数据时同时修改一级索引区和数据,并通过算法平衡FLASH每块的编程次数,防止掉电时数据丢失,具体包括如下步骤:A)初始化:B)数据定位:C)数据写入:判断索引是否存在:D)数据读取:E)写平衡算法:F)掉电处理。本发明的优点:有效地提高了数据存储的安全性和可靠性,延长了NOR?FLASH的整体使用寿命。
Description
技术领域
本发明涉及的是一种在无文件系统的NORFLASH上,实现一种基于NORFLASH的数据存储方法。属于FLASH存储技术领域。
背景技术
目前在FLASH存储技术领域存在一些NORFLASH的研究,但是均存在一些缺点,例如专利号为CN103176920A的专利,提出了一种Norflash掉电保护方法,但是该方法实现是基于FAT文件系统的,而且还需要外接一片非易失性随机访问存储器Nvram存储全局位置索引,增加了运行开销和硬件成本。
又如专利号为CN101118517A的专利,该方法是通过建立FLASH和内存数据映射表,标记需要写入的FLASH块,定时将修改通过数据写入FLASH。该方法主要实现了NORFLASH的坏块管理,而由于NORFLASH的特性,坏块管理几乎不用考虑。第二个缺点是通过定时修改将数据写入FLASH,系统异常掉电时极易丢失数据。
发明内容
本发明提出一种基于NORFLASH的数据存储方法,其目的旨在克服上述现有技术所存在的缺陷,采用FLASH中存放一级索引,RAM中存放二级索引,存放数据时同时修改一级索引区和数据,并通过一定算法平衡FLASH每块的编程次数,实现数据存储。有效地延长了NORFLASH的整体使用寿命。并提供一种较为有效不依赖于其他硬件的NORFLASH掉电数据保存技术。
本发明的技术解决方案:一种基于NORFLASH的数据存储方法,其特征在于,该方法是采用FLASH中存放一级索引,RAM中存放二级索引,存放数据时同时修改一级索引区和数据,并通过算法平衡FLASH每块的编程次数,防止掉电时数据丢失,具体包括如下步骤:A)初始化:B)数据定位:C)数据写入:判断索引是否存在:D)数据读取:E)写平衡算法:F)掉电处理。
本发明的有益效果:本发明使用二级索引的机制来保证读写时快速定位数据的方法。在Flash中存放的一级索引,里面存放数据页在Flash中的位置;在RAM中的二级索引,通过在上电时遍历FLASH索引区生成二级索引数组,里面存放一级索引页在Flash中的位置,通过最少写入次数写平衡算法,选择空白页,实现块写入平衡,通过分配额外存储空间,实现负担平摊,通过写入数据时的分段操作,上电时数据自检,防止了掉电时数据丢失,提高了数据存储的安全性和可靠性。通过记录页面结构,记录每块FLASH的擦除次数,再选择最少写入的FLASH,平衡了每块FLASH的擦除次数,延长了NORFLASH芯片的整体使用寿命。
附图说明
附图1初始化的流程示意图。
附图2数据定位步骤示意图。
附图3数据页结构示意图。
附图4数据写入步骤示意图。
附图5写平衡算法的流程示意图。
具体实施方式
一种基于NORFLASH的数据存储方法,其特征在于,该方法是采用FLASH中存放一级索引,RAM中存放二级索引,存放数据时同时修改一级索引区和数据,并通过算法平衡FLASH每块的编程次数,防止掉电时数据丢失,具体包括如下步骤:A)初始化:B)数据定位:C)数据写入:判断索引是否存在:D)数据读取:E)写平衡算法:F)掉电处理。
下面结合附图具体描述各实施步骤
A)初始化(如附图1所示)
(1)初始化,系统上电时启动,检测FLASH状态。
(2)建立FLASH一级索引。
(3)RAM二级索引表初始化。
所述建立一级索引,是指根据预先划分的数据页结构内容,读取数据页信息,建立一级索引。
(4)初始化FLASH中未擦除页。
(5)初始化FLASH空白地址页。读入存储在FLASH的索引内容,建立一级索引表,在内存中建立二级索引表。
B)数据定位
如图2,描述了数据项定位的步骤。
(1)根据数据项计算出其在二级索引的位置。
(2)根据二级索引中存储的一级索引区的位置。
(3)从NORFLASH中的一级索引区读取一级索引信息。
(4)获得物理FLASH页号。
(5)获得数据页结构,从数据页结构中获得数据位置。
所述数据页结构如图3,其中:
a.有效性:指页面的有效标志,包括有效,无效,中间态。
b.存储对象:指存放的数据类型,包括参数和数据。
c.日期:指页面中包含的数据日期。
d.序号:表示该存储对象对应页序号。
e.写入次数:当前页写入时,FLASH的写入次数。
f.空白页号:在索引区的页中存放其相应数据类型的空白起始页号。
g.数据域:用于存放数据。
C)数据写入(如图4数据写入步骤)
判断索引是否存在。
所述索引包括二级索引和一级索引。
(a1)索引位置不存在(为0xFFFF),则进行第一次写入:如果连二级索引都没有,则只要新建一级索引和数据页;如果仅仅是一级索引没有,需要先将旧的一级索引读出;
(a2)在RAM中填好新数据页的页头信息及相应数据,根据写平衡算法查找到空白页,写入到该类数据的空白页;在RAM中填好新索引页的页头信息,更新数据页页号为该类数据空白页页号,数据区空白页页号加一(在其开辟空间内循环),写入索引页至索引区空白页;
(a3)更新二级索引(RAM)相应序号索引页为索引区空白页,索引区空白页加一(在其开辟空间内循环);如果步骤(a1)中将旧索引读出,需要将旧索引页有效性置为无效。
(b1)索引位置存在,如果可以定位到该数据的页号,那么该项数据已经写入过,需要进行一般写入。
(b2)读出旧索引页与数据页到RAM。
(b3)根据写平衡算法查找到空白页,更新页头和数据内容,将数据页写入该类数据空白页;
(b4)更新索引为数据空白页页号,空白页页号加一,更新页头,写入索引到索引区空白页;更新二级索引,索引区空白页页号加一,将旧数据页和旧索引页加一。
所述写平衡算法在E)中描述。
所述的数据写入步骤为,把当前页①数据写到空白页②里,页面②为中间态,接着把页面①数据置为无效,然后再把这页面②数据置为有效。所有存储均按照这原则读写,包括索引区。
D)数据读取
读数据相对简单,如果有数据跨页,需要读多个页数据将内容拼接起来。如果是参数的读取,会进行校验和的检验,如果检验和不正确,会到备份区取参数。
E)写平衡(如图5写平衡算法)
(1)遍历空白页。
所述空白页是指数据页结构中描述为无效的页。
(2)读取页面信息。
(3)获得写入次数最少的空白页号,这样可以平摊FLASH的写入负担,减少频繁的向某一处写入,增加FLASH的使用寿命,这种机制称为写平衡。
所述平摊FLASH写入负担是指,在给数据分配FLASH空间时,在满足所有数据存储的基础上,额外分配几块空间以便实现写平衡。
F)掉电处理
装置在一上电遍历所有页的有效状态,如果状态为有效和中间态都认为有效。
(1)新页开始写的过程中,突然停电,存储信息没有改变,上一页仍然为“有效态”标志,装置在下次上电后,只丢失本次更新的数据,数据还是以上一次的。
(2)新页已经写完,置成中间态,在置上一页数据无效时,突然停电,装置下次上电时会发现该页数据有两块,一块是置为“有效态”另一块是置为“中间态”,我们判断“中间态”为真正的“有效态”,然后再把那一页的“有效态”置为“无效态”。
(3)新页已经写完,置成“中间态”,上一页也置为“无效态”,在给新页置“有效态”时,突然停电。装置在下一次上电后,判断有“中间态”的这页,置为“有效态”。
(4)装置在新页置成“有效态”,旧页置成“无效态”后,在更新存储信息结构体时,突然停电,装置重新上电后,会重新遍历数据页,更新存储信息结构体,所以这次停电无任何损失。
所述的数据页结构包括:有效性、存储对象,日期,序号,写入次数,空白页号,数据域。
所述的数据定位步骤包括根据数据项计算出其在二级索引的位置,根据二级索引中存储的一级索引区的位置,根据一级索引获得物理页面号。
所述的数据写入步骤为,把当前页①数据写到空白页②里,页面②为中间态,接着把页面①数据置为无效,然后再把这页面②数据置为有效。
采用最少写入次数选择空白页,达到NORFLASH写平衡的目的。
采用在满足所有数据存储的基础上,额外分配NORFLASH存储空间,平摊FLASH写入负担。
通过写入时分段操作,上电时数据自检实现数据掉电保护。
Claims (6)
1.一种基于NORFLASH的数据存储方法,其特征在于,该方法是采用FLASH中存放一级索引,RAM中存放二级索引,存放数据时同时修改一级索引区和数据,并通过算法平衡FLASH每块的编程次数,防止掉电时数据丢失,具体包括如下步骤:A)初始化:B)数据定位:C)数据写入:判断索引是否存在:D)数据读取:E)写平衡算法:F)掉电处理;所述的C)数据写入:判断索引是否存在:
(a1)索引位置不存在,为0xFFFF,则进行第一次写入:如果连二级索引都没有,则只要新建一级索引和数据页;如果仅仅是一级索引没有,需要先将旧的一级索引读出;
(a2)在RAM中填好新数据页的页头信息及相应数据,根据写平衡算法查找到空白页,将数据写入空白页,在RAM中填好新索引页的页头信息,更新数据页页号为该数据空白页页号,数据区空白页页号加一,在数据区空白页开辟空间内循环,写入索引页至索引区空白页;
(a3)更新索引区空白页为二级索引RAM相应序号索引页,索引区空白页页号加一,在索引区空白页开辟空间内循环;如果步骤(a1)中将旧索引读出,需要将旧索引页有效性置为无效;
(b1)索引位置存在,如果可以定位到该数据的页号,那么该数据已经写入过,需要进行一般写入;
(b2)读出旧索引页与数据页到RAM;
(b3)根据写平衡算法查找到空白页,更新页头和数据内容,将数据页写入该空白页;
(b4)更新索引为数据空白页页号,空白页页号加一,更新页头,写入索引到索引区空白页;更新二级索引,索引区空白页页号加一,将旧数据页和旧索引页页号加一;
所述的数据写入步骤为,把当前页①数据写到空白页②里,页面②为中间态,接着把页面①数据置为无效,然后再把这页面②数据置为有效;所有存储均按照这原则写入,包括索引区。
2.根据权利要求1所述的一种基于NORFLASH的数据存储方法,其特征在于所述的A)初始化:
(1)初始化,系统上电时启动,检测FLASH状态;
(2)遍历FLASH一级索引,包括了一级索引的修复;
(3)RAM二级索引表初始化;
(4)初始化FLASH中未擦除页;
(5)初始化FLASH空白地址页,读入存储在FLASH的索引内容,建立一级索引表,在RAM中建立二级索引表。
3.根据权利要求1所述的一种基于NORFLASH的数据存储方法,其特征在于所述的B)数据定位:
(1)根据数据项计算出数据在二级索引的位置;
(2)根据二级索引中存储的一级索引区的位置,从NORFLASH中的一级索引区读取一级索引信息;
(3)获得物理FLASH页号;
(4)获得数据页结构,从数据页结构中获得数据位置。
4.根据权利要求1所述的一种基于NORFLASH的数据存储方法,其特征在于所述的D)数据读取:如果有数据跨页,需要读多个页数据将内容拼接起来;如果是参数的读取,会进行校验和检验,如果校验结果不正确,会到备份区取参数。
5.根据权利要求1所述的一种基于NORFLASH的数据存储方法,其特征在于所述的E)写平衡算法:
(1)遍历空白页,
所述空白页是指数据页结构中描述为无效的页,
(2)获得写入次数;
(3)获得写入次数最少的空白页号,这样可以平摊FLASH的写入负担,减少频繁的向某一处写入,增加FLASH的使用寿命,这种机制称为写平衡;
所述平摊FLASH写入负担是指,在给数据分配FLASH空间时,在满足所有数据存储的基础上,额外分配几块空间以便实现负担平摊。
6.根据权利要求1所述的一种基于NORFLASH的数据存储方法,其特征在于所述的F)掉电处理:
通过写入时分段操作,上电时数据自检,装置在一上电遍历所有页的有效状态,如果状态为有效和中间态都认为有效;
(1)新页开始写的过程中,突然停电,存储信息没有改变,上一页仍然为“有效态”标志,装置在下次上电后,只丢失本次更新的数据,数据还是以上一次的;
(2)新页已经写完,置成中间态,在置上一页数据无效时,突然停电,装置下次上电时会发现该页数据有两块,一块是置为“有效态”另一块是置为“中间态”,判断“中间态”为真正的“有效态”,然后再把那一页的“有效态”置为“无效态”;
(3)新页已经写完,置成“中间态”,上一页也置为“无效态”,在给新页置“有效态”时,突然停电,装置在下一次上电后,判断有“中间态”的这页,置为“有效态”;
(4)装置在新页置成“有效态”,旧页置成“无效态”后,在更新存储信息结构体时,突然停电,装置重新上电后,会重新遍历数据页,更新存储信息结构体,所以这次停电无任何损失。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310353845.4A CN103399826B (zh) | 2013-08-15 | 2013-08-15 | 一种基于nor flash的数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310353845.4A CN103399826B (zh) | 2013-08-15 | 2013-08-15 | 一种基于nor flash的数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103399826A CN103399826A (zh) | 2013-11-20 |
CN103399826B true CN103399826B (zh) | 2016-01-06 |
Family
ID=49563458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310353845.4A Active CN103399826B (zh) | 2013-08-15 | 2013-08-15 | 一种基于nor flash的数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103399826B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090732A (zh) * | 2014-07-21 | 2014-10-08 | 昆腾微电子股份有限公司 | 非易失性存储器的管理方法和装置 |
CN104298475B (zh) * | 2014-10-13 | 2015-11-11 | 合一网络技术(北京)有限公司 | 一种数据存储的优化方法 |
CN105760313A (zh) * | 2015-08-07 | 2016-07-13 | 深圳市证通金信科技有限公司 | 基于SPI-Flash的文件系统的数据处理方法及装置 |
CN106227678B (zh) * | 2016-07-21 | 2018-12-28 | 北京四维益友信息技术有限公司 | 一种虚拟存储介质的存取方法 |
CN107168647B (zh) * | 2017-04-17 | 2020-10-23 | 武汉永力科技股份有限公司 | Flash数据读写方法及系统 |
CN107301073B (zh) * | 2017-06-23 | 2021-06-15 | 郑州云海信息技术有限公司 | 一种基于固态硬盘系统的配置信息检索方法及其装置 |
CN108304331B (zh) * | 2018-01-30 | 2020-04-10 | 浙江鸿泉车联网有限公司 | 基于NorFlash的环形队列式数据存储方法及装置 |
CN108710578B (zh) * | 2018-04-20 | 2022-07-26 | 深圳市战音科技有限公司 | 基于闪存的数据存储方法和装置 |
CN109189772B (zh) * | 2018-08-21 | 2021-09-28 | 华清瑞达(天津)科技有限公司 | 用于无文件系统存储介质的文件管理方法及系统 |
CN109634919A (zh) * | 2018-10-16 | 2019-04-16 | 西北铁道电子股份有限公司 | 一种文件管理系统 |
CN109558335B (zh) * | 2018-10-17 | 2020-05-12 | 上海移芯通信科技有限公司 | 一种基于Nor Flash存储器的嵌入式系统的文件存储格式 |
CN110175001B (zh) * | 2019-05-27 | 2022-06-14 | 牧星机器人(江苏)有限公司 | 一种nor-flash数据存储方法、计算机设备及存储介质 |
CN112711381A (zh) * | 2020-12-28 | 2021-04-27 | 深圳市合信自动化技术有限公司 | 一种加快掉电数据保存的方法及plc |
CN113625964B (zh) * | 2021-07-16 | 2024-01-26 | 浙江鸿泉电子科技有限公司 | 基于NandFlash的顺序存储方法、电子设备和存储介质 |
CN114527934A (zh) * | 2022-01-12 | 2022-05-24 | 珠海泰芯半导体有限公司 | 闪存的控制方法、装置、存储介质和电子设备 |
CN114115754B (zh) * | 2022-01-28 | 2022-04-05 | 北京紫光青藤微系统有限公司 | 用于数据更新的方法及装置、电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169971A (zh) * | 2006-10-23 | 2008-04-30 | 北京锐科天智科技有限责任公司 | 电子硬盘 |
CN102971717A (zh) * | 2010-05-25 | 2013-03-13 | 马维尔国际贸易有限公司 | 存储器访问表保存和复原系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7711923B2 (en) * | 2006-06-23 | 2010-05-04 | Microsoft Corporation | Persistent flash memory mapping table |
-
2013
- 2013-08-15 CN CN201310353845.4A patent/CN103399826B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169971A (zh) * | 2006-10-23 | 2008-04-30 | 北京锐科天智科技有限责任公司 | 电子硬盘 |
CN102971717A (zh) * | 2010-05-25 | 2013-03-13 | 马维尔国际贸易有限公司 | 存储器访问表保存和复原系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103399826A (zh) | 2013-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103399826B (zh) | 一种基于nor flash的数据存储方法 | |
US10228854B2 (en) | Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations | |
CN101346771B (zh) | 用于传统主机的方法和存储器系统 | |
KR101631348B1 (ko) | 불휘발성 메모리에 대한 메타데이터 리던던시 스킴 | |
CN104750625B (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN104881371B (zh) | 持久性内存事务处理缓存管理方法与装置 | |
CN105740157B (zh) | 数据储存装置以及快闪存储器控制方法 | |
CN105009094B (zh) | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 | |
DE112020002526T5 (de) | Blockmodusumschaltung in datenspeichersystem | |
US20200110537A1 (en) | File system metadata decoding for optimizing flash translation layer operations | |
CN102866956B (zh) | 基于固态存储介质的数据实时跟踪存储系统及方法 | |
CN101504625B (zh) | 实现独立磁盘冗余阵列的方法、固态硬盘和电子设备 | |
CN103092764A (zh) | 用于获得和使用非易失性存储器健康信息的系统和方法 | |
CN109977034A (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
CN105122220A (zh) | 固态驱动器中的原子写入命令支持 | |
CN101946286A (zh) | 用于模拟每单元单个位的nand闪存的每单元多个位的nand闪存的控制器 | |
CN101124555A (zh) | 具有多流更新的非易失性存储器和方法 | |
CN110032521A (zh) | 用于增强闪存转换层映射灵活性以得到性能和寿命改进的方法和系统 | |
US7925821B2 (en) | Nonvolatile semiconductor storage device and method of managing the same | |
CN104461387A (zh) | 一种提高固态硬盘对未映射区域的读性能的方法 | |
CN103365786A (zh) | 数据存储方法、装置和系统 | |
CN108228471A (zh) | 管理存储器装置中存储器单元的实体信息的方法及系统 | |
CN103678145A (zh) | 数据储存装置与快闪存储器控制方法 | |
US8819387B2 (en) | Memory storage device, memory controller, and method for identifying valid data | |
DE112020003290T5 (de) | Datenplatzierung in einer schreib-cache-architektur, die eine lesehitze-datenaufteilung unterstützt |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |