CN103258044B - 一种面向dsp的二元组nandflash数据文件管理方法 - Google Patents
一种面向dsp的二元组nandflash数据文件管理方法 Download PDFInfo
- Publication number
- CN103258044B CN103258044B CN201310197110.7A CN201310197110A CN103258044B CN 103258044 B CN103258044 B CN 103258044B CN 201310197110 A CN201310197110 A CN 201310197110A CN 103258044 B CN103258044 B CN 103258044B
- Authority
- CN
- China
- Prior art keywords
- startpageid
- tuple
- page
- data
- nandflash
- 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
一种面向DSP的二元组NANDFLASH数据文件管理方法,首先进行文件表建立和更新,之后可以进行数据写入或者数据读取。以“条次”为单位管理数据文件,每条文件表信息只占6字节,比FAT16文件系统节约约26字,且文件表不需要频繁重写,便于延长Nandflash使用寿命;以“页”而不是“块”为单位管理存储器,提高存储器利于效率,减少存储空间浪费;数据存储直接实时写入,无延时。该方法简捷、可靠、实用,CPU资源消耗少,适合以DSP为核心处理器的嵌入式系统使用。
Description
技术领域
本发明涉及一种面向DSP的二元组NANDFLASH数据文件管理方法。
背景技术
DSP是一种专门为实时、快速实现各种数字信号处理算法而设计的、具有特殊结构的微处理器,具有稳定、可大规模集成、可编程等优点,在雷达声纳、医用仪器、通信设备、电子对抗、武器制导等国民经济的各个领域应用广泛。
近年来,以DSP为核心构建的嵌入式系统功能日益增强,越来越多的应用场合需要实现数据记录存储功能,比如惯导、导引头、空间飞行器等系统,都需要自主、实时、可靠存储大量的关键信息,并保证即使整个系统掉电,所采集到的数据仍能长时间保持不丢失。
快速擦写存储器FLASH(闪存)是目前性能价格比和可靠性最高的可擦写、非易失存储器,成本低、体积小、承受冲击能力强、存储容量大,在嵌入式系统中已被广泛用作外存储部件。现在主流闪存分为NOR型和NAND型,NAND型闪存写入和擦除速度比NOR型快,单元存储容量大,且成本比NOR型低,因此NAND型闪存在大容量数据存储上比NOR型闪存更具有优势。
以DSP为核心的嵌入式系统中,DSP往往需要承担繁重的计算任务,复杂的文件管理系统不适合系统使用,因此迫切需要一种简捷、可靠、实用且CPU资源消耗少的Nandflash数据文件管理方法。
文件系统在整个系统中位于设备驱动程序和层应用程序之间,负责管理文件的创立、撤消、读写、修改、复制和存取控制等,并管理存放文件的各种资源,为上层引用程序提供统一的存储接口,透明具体的实现过程,为上层提供服务。它管理硬件上的数据存取方式和结构。以更好利用存储空间和提高存储效率。由于Windows操作系统的普及,微软公司的FAT文件系统被广泛采用。
然而Nand Flash存储器具有先擦除后写入的硬件特性,FAT文件系统是专门针对磁盘等存储介质而设计的,不适合直接应用于Nand Flash。主要问题有两点:一是文件系统工作时,需要频繁重写文件分配表,这就使得对文件分配表区的擦写明显多于其它区域,从而导致文件分配表区先于其它区域出现坏块。二是申请新簇时,文件系统总是按照从前到后的秩序查找FAT表,这就使得簇号小的较大的更频繁地被使用,从而导致簇号较小的簇更早磨损,出现坏块。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了一种面向DSP的二元组NANDFLASH数据文件管理方法。
本发明的技术解决方案是:
一种面向DSP的二元组NANDFLASH数据文件管理方法,首先进行文件表建立和更新,之后可以进行数据写入或者数据读取。
文件表建立和更新过程如下:
(1)加电启动后,将二元组个数num置0,将读取的页编号j置0;
(2)读取一条二元组信息,二元组个数num=num+1;
(3)如果该二元组的EndpageID不全是0xFF,则转第(2)步,否则转第(4)步;
(4)如果该二元组的StartpageId全是0xFF,将本二元组,即第num个二元组的StartpageId写为kstart,令StartpageId=kstart,结束;如果该二元组的StartpageId不全是0xFF,则转第(5)步;所述kstart为NANDFLASH数据区第1个有效块的第1页的序号;
(5)读取第StartpageId+j页的内容;
(6)如果第StartpageId+j页的内容不全是0xFF,则令j=j+1,转第(5)步;否则转第(7)步;
(7)令p=StartpageId+j;
(8)如果p>StartpageId,则将第num个二元组的EndpageID写为p-1,下一个二元组的StartpageId写为p,令StartpageId=p;结束,否则直接结束。
数据写入方法流程如下:
(3.1)将待写入的页编号q置0;
(3.2)判断StartpageId是否大于等于预设的存储门限gate,如果StartpageId大于等于gate,转第(3.4)步,否则转第(3.3)步;
(3.3)判断二元组个数num是否大于等于num_total-1,如果num大于等于num_total-1,转第(3.4)步,否则转第(3.5)步;num_total为文件表信息区共可存放的二元组个数;
(3.4)逐块擦除整片nandflash,令StartpageId=kstart,文件表中写入第1个二元组的StartpageId;
(3.5)向StartpageId+q页写入数据;
(3.6)如果此时要求停止继续写入,则结束,否则令q=q+1,转第(3.7)步;
(3.7)判断第StartpageId+q页是不是最后一页,如果是,结束,否则转第(3.5)步。
数据读取方法流程如下:
(4.1)判断给出的二元组编号是否超限,即是否大于可存储的二元组总个数num_total,如果超限则结束,否则转第(4.2)步;
(4.2)从文件表区读取该二元组的StartpageId和EndpageID;
(4.3)判断该二元组的StartpageId和EndpageID是否超限,即是否大于m-1,m为总页数,如果StartpageId和EndpageID其中有一个超限则结束,否则转第(4.4)步;
(4.4)从数据区中,顺序读取StartpageId和EndpageID之间的数据页的内容。
所述文件表用于存放数据文件的信息,以二元组表示:{StartpageId,EndpageID},其中,StartpageId和EndpageID为整数,分别表示起始页编号和结束页编号,可确定数据文件在Nandflash中的存储位置。
本发明与现有技术相比的有益效果是:
(1)以“条次”为单位管理数据文件,每个二元组文件表信息只占4~6字节,比FAT16文件系统节约约26字,节约了存储空间;
(2)只有写入操作会增加条次数,读取操作不增加条次数,文件表不需要频繁重写,数据文件从前到后顺序存放循环使用,便于延长Nandflash使用寿命;
(3)以“页”而不是“块”为单位管理存储器,提高存储器利于效率,减少存储空间浪费;
(4)数据存储直接实时写入,无延时。
(5)简捷、可靠、实用,便于实现,CPU资源消耗少,适合嵌入式系统使用。
附图说明
图1为nandflash存储区域划分示意图
图2为文件表区第一页存储示意图
图3为数据区存储示意图
图4为文件表建立和更新过程流程图
图5为数据写入方法流程图
图6为数据读取方法流程图
图7为三星公司生产的K9K8G08U0M结构图。
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
本发明基于nandflash特点,提出了二元组数据文件管理方法,以“条次”为单位管理数据文件,每条文件表信息只占6字节,比FAT16文件系统节约约26字,且文件表不需要频繁重写,便于延长Nandflash使用寿命;以“页”而不是“块”为单位管理存储器,提高存储器利于效率,减少存储空间浪费;数据存储直接实时写入,无延时。该方法简捷、可靠、实用,CPU资源消耗少,适合以DSP为核心处理器的嵌入式系统使用,并可推广应用于大容量闪存器件与单片机、ARM及其他类型的嵌入式系统设计中。
Nandflash分为文件表区和数据内容区。为确保可靠,文件表区位于第1块,因为芯片厂商确保第1块可用,其余块为数据区。数据在数据区中按照先后顺序连续存放。不同数据文件不共用页,即如果前一个文件存储时时未占满的一个页,下一个文件存储时将跳过该页,从下一个全新的页开始存储。数据区的内容可由用户自定义设计,可以是图像、音频、采用值等任何数据,无统一规定。
文件表区用于存放数据文件的信息,以二元组表示:{StartpageId,EndpageID}。其中,StartpageId、EndpageID为整数,可确定数据文件在Nandflash中的存储位置,分别表示起始页编号和结束页编号。页编号从0开始,第1块的第1页编号为0,第1块的第2页编号为1,以此类推。设NANDFLASH共有n块,每块有k页,共有m页,由于数据内容从第2块开始,所以StartpageId,EndpageID的取值范围是[k,m-1]。
二元组的字节数i需根据Nandflash的容量确定。StartpageId、EndpageID为整数,存储用的字节数根据所用Nandflash的容量确定。以K9K8G08U0M为例,该Nandflash共有219页,每块有64页,则StartpageId、EndpageID的取值范围为[64,219-1],因此StartpageId、EndpageID各用三个字节即可表示。所以,一条文件表信息(1个二元组)用6个字节即可,利于节约空间。如果是容量为128MB的Nandflash,共有65536页,则StartpageId、EndpageID各用2个字节即可表示。
文件表信息放在Nandflash的第1块,以二元组为单位顺序存放,前i个字节存放第1条次的文件信息即二元组,紧接着的i个字节存放第2条次的二元组,以此类推。当某一页剩余的字节数不足以存放一个二元组时,这些字节舍弃不用,下一个二元组从新的一页开始存放。仍以K9K8G08U0M为例,1个二元组是6字节,每页2048字节,可存储341个二元组,剩余2字节不用,下一个二元组从后续相邻页起始处开始存放。二元组的序号为正整数,从1开始编号。文件表信息区共可存放的二元组个数num_total等于floor(s/i)*k,其中floor()表示向下取整。仍以K9K8G08U0M为例,文件表信息区为1块,包含64页,每页2048字节,每个二元组6字节,则文件表信息区共可存放21824个二元组,因此可管理21824个数据文件。
设NANDFLASH分为n块(Block),每块包含k页(page),每页内包含s正常字节和少数空余备用字节,共有m页(m=n×k)。页编号从0开始,第1块的第1页编号为0,第1块的第2页编号为1,以此类推。块编号从1开始,第1块的编号为1,第2块的2编号为2,以此类推。以三星公司生产的K9K8G08U0M为例,该芯片共分为8192个block(块),每个Block包含64个page(页),每个page包含2048个字节的有效数据空间以及64个空余字节。其组织结构如图7所示。
如图1所示,Nandflash分为文件表区和数据内容区。文件表区位于第1块,包含k页,其余n-1块为数据区,包含(n-1)*k页。
如图2所示,文件表区中,文件信息以二元组为单位依次顺序存放。数据文件的信息以二元组表示:{StartpageId,EndpageID}。其中,StartpageId、EndpageID为整数,分别表示起始页编号和结束页编号,字节数根据所用Nandflash的容量确定。当某一页剩余的字节数不足以存放一个二元组时,这些字节舍弃不用,下一个二元组从新的一页开始存放。文件表信息区共可存放的二元组个数num_total=floor(s/i)*k,其中floor()表示向下取整。
以K9K8G08U0M为例,该Nandflash共有219页,每块有64页,则StartpageId、EndpageID的取值范围为[64,219-1],因此StartpageId、EndpageID各用三个字节即可表示(因三个字节可表示的范围是[0,224-1])。所以,一条文件表信息(1个二元组)用6个字节即可,利于节约空间。1个二元组是6字节,每页2048字节,可存储341个二元组,剩余2字节不用,下一个二元组从后续相邻页起始处开始存放。二元组的序号为正整数,从1开始编号。文件表区包含64页,共可存放21824个二元组,因此可管理21824个数据文件。
数据在数据区中按照“条次”顺序连续存放。不同“条次”数据文件不共用页,即如果前一个文件存储时时未占满的一个页,下一个文件存储时将跳过该页,从下一个全新的页开始存储。数据区的内容可由用户自定义设计,可以是图像、音频、采用值等任何数据,无统一规定。如图3所示,假设第1条次的数据占了半页,存放在第kstart页,第2条次的数据占了3页,则存放在第kstart+1、kstart+2和kstart+3页。
本发明提出的一种二元组NANDFLASH数据文件管理方法,主要包括文件表建立和更新、数据写入、数据读取三个部分,首先进行文件表建立和更新,之后可以进行数据写入或者读取。
如图4所示,文件表建立和更新过程如下:
(1)系统加电启动后,将二元组个数num置0,将读取的页编号j置0;
(2)读取一条二元组信息,二元组个数num=num+1;
(3)如果该二元组的EndpageID不全是0xFF,则转第(2)步,否则转第(4)步;
(4)如果该二元组的StartpageId全是0xFF,将本二元组(即第num个二元组的StartpageId写为kstart,令StartpageId=kstart,结束;如果该二元组的StartpageId不全是0xFF,则转第(5)步;
(5)读取第StartpageId+j页的内容;
(6)如果第StartpageId+j页的内容不全是0xFF,则令j=j+1,转第(5)步;否则转第(7)步;
(7)令p=StartpageId+j;
(8)如果p>StartpageId,则将第num个二元组的EndpageID写为p-1,下一个二元组的StartpageId写为p,令StartpageId=p;结束,否则直接结束。
在执行完上述文件表建立和更新过程后,可以执行数据写入。如图5所示,数据写入方法流程如下:
(1)将待写入的页编号q置0;
(2)判断StartpageId是否大于等于存储门限gate,如果StartpageId大于等于gate,转第(4)步,否则转第(3)步;
(3)判断二元组个数num是否大于等于num_total-1,如果num大于等于num_total-1,转第(4)步,否则转第(5)步;
(4)逐块擦除整片nandflash,令StartpageId=kstart,文件表中写入第1个二元组的StartpageId;
(5)向StartpageId+q页写入数据;
(6)判断系统是否要求停止写,如果要求停止写,结束,否则转第(7)步;
(7)令q=q+1;
(8)判断第StartpageId+q页是不是最后一页,如果是,结束,否则转第(5)步。
在执行完上述文件表建立和更新过程后,可以执行数据读取。如图6所示,数据读取方法流程如下:
(1)判断系统给出的二元组编号是否超限,即是否大于可存储的二元组总个数num_total,如果超限则结束,否则转第(2)步;从文件表区读取该二元组的StartpageId和EndpageID;
(2)从文件表区读取该二元组的StartpageId和EndpageID;
(3)判断该二元组的StartpageId和EndpageID是否超限,即是否大于m-1(m为总页数),如果StartpageId和EndpageID其中有一个超限则结束,否则转第(4)步;
(4)从数据区中,顺序读取StartpageId和EndpageID之间的数据页的内容。
Claims (2)
1.一种面向DSP的二元组NANDFLASH数据文件管理方法,其特征在于首先进行文件表建立和更新,之后可以进行数据写入或者数据读取;
文件表建立和更新过程如下:
(1)加电启动后,将二元组个数num置0,将读取的页编号j置0;
(2)读取一条二元组信息,二元组个数num=num+1;
(3)如果该二元组的EndpageID不全是0xFF,则转第(2)步,否则转第(4)步;
(4)如果该二元组的StartpageId全是0xFF,将本二元组,即第num个二元组的StartpageId写为kstart,令StartpageId=kstart,结束;如果该二元组的StartpageId不全是0xFF,则转第(5)步;所述kstart为NANDFLASH数据区第1个有效块的第1页的序号;
(5)读取第StartpageId+j页的内容;
(6)如果第StartpageId+j页的内容不全是0xFF,则令j=j+1,转第(5)步;否则转第(7)步;
(7)令p=StartpageId+j;
(8)如果p>StartpageId,则将第num个二元组的EndpageID写为p-1,下一个二元组的StartpageId写为p,令StartpageId=p;结束,否则直接结束;
数据写入方法流程如下:
(3.1)将待写入的页编号q置0;
(3.2)判断StartpageId是否大于等于预设的存储门限gate,如果StartpageId大于等于gate,转第(3.4)步,否则转第(3.3)步;
(3.3)判断二元组个数num是否大于等于num_total-1,如果num大于等于num_total-1,转第(3.4)步,否则转第(3.5)步;num_total为文件表信息区共可存放的二元组个数;
(3.4)逐块擦除整片nandflash,令StartpageId=kstart,文件表中写入第1个二元组的StartpageId;
(3.5)向StartpageId+q页写入数据;
(3.6)如果此时要求停止继续写入,则结束,否则令q=q+1,转第(3.7)步;
(3.7)判断第StartpageId+q页是不是最后一页,如果是,结束,否则转第(3.5)步;
数据读取方法流程如下:
(4.1)判断给出的二元组编号是否超限,即是否大于可存储的二元组总个数num_total,如果超限则结束,否则转第(4.2)步;
(4.2)从文件表区读取该二元组的StartpageId和EndpageID;
(4.3)判断该二元组的StartpageId和EndpageID是否超限,即是否大于m-1,m为总页数,如果StartpageId和EndpageID其中有一个超限则结束,否则转第(4.4)步;
(4.4)从数据区中,顺序读取StartpageId和EndpageID之间的数据页的内容。
2.根据权利要求1所述的一种面向DSP的二元组NANDFLASH数据文件管理方法,其特征在于:所述文件表用于存放数据文件的信息,以二元组表示:{StartpageId,EndpageID},其中,StartpageId和EndpageID为整数,分别表示起始页编号和结束页编号,可确定数据文件在Nandflash中的存储位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310197110.7A CN103258044B (zh) | 2013-05-24 | 2013-05-24 | 一种面向dsp的二元组nandflash数据文件管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310197110.7A CN103258044B (zh) | 2013-05-24 | 2013-05-24 | 一种面向dsp的二元组nandflash数据文件管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103258044A CN103258044A (zh) | 2013-08-21 |
CN103258044B true CN103258044B (zh) | 2017-01-18 |
Family
ID=48961961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310197110.7A Active CN103258044B (zh) | 2013-05-24 | 2013-05-24 | 一种面向dsp的二元组nandflash数据文件管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103258044B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915206B (zh) * | 2015-06-15 | 2019-03-19 | 南京阿凡达机器人科技有限公司 | 一种基于文本解析的dsp上的属性和数据的管理方法 |
CN106440256A (zh) * | 2016-11-11 | 2017-02-22 | 四川长虹电子部品有限公司 | 一种空调遥控器及其数据存储方法 |
CN113641630A (zh) * | 2017-03-27 | 2021-11-12 | 珠海极海半导体有限公司 | 一种flash存储器 |
CN107631724B (zh) * | 2017-09-01 | 2020-06-19 | 北京航天发射技术研究所 | 一种获取激光惯组寻北导航大数据的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772274B1 (en) * | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
CN1632765A (zh) * | 2004-12-31 | 2005-06-29 | 大唐微电子技术有限公司 | 一种闪存文件系统管理方法 |
CN1805049A (zh) * | 2005-11-22 | 2006-07-19 | 武汉国光通信有限公司 | 一种嵌入式系统中非易失性存储器的数据存取方法 |
CN1963810A (zh) * | 2005-11-09 | 2007-05-16 | 康佳集团股份有限公司 | 在Flash存储介质上的关于文件分配表的缓存实现方法 |
CN101178689A (zh) * | 2007-12-06 | 2008-05-14 | 浙江科技学院 | 一种NAND Flash存储器的动态管理方法 |
-
2013
- 2013-05-24 CN CN201310197110.7A patent/CN103258044B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772274B1 (en) * | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
CN1632765A (zh) * | 2004-12-31 | 2005-06-29 | 大唐微电子技术有限公司 | 一种闪存文件系统管理方法 |
CN1963810A (zh) * | 2005-11-09 | 2007-05-16 | 康佳集团股份有限公司 | 在Flash存储介质上的关于文件分配表的缓存实现方法 |
CN1805049A (zh) * | 2005-11-22 | 2006-07-19 | 武汉国光通信有限公司 | 一种嵌入式系统中非易失性存储器的数据存取方法 |
CN101178689A (zh) * | 2007-12-06 | 2008-05-14 | 浙江科技学院 | 一种NAND Flash存储器的动态管理方法 |
Non-Patent Citations (2)
Title |
---|
基于DSP平台的嵌入式文件系统的开发与研究;郁玉兰; 胡剑凌;《电脑知识与技术》;20041027;全文 * |
大容量NAND Flash文件系统中的地址映射算法研究;时正,陈香兰,纪金松,龚玉昌;《小型微型计算机系统》;20100326;说明书第2页第一栏第6段 * |
Also Published As
Publication number | Publication date |
---|---|
CN103258044A (zh) | 2013-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103677977B (zh) | 清理移动终端中临时文件的方法、装置和移动终端 | |
CN100538662C (zh) | 一种基于局部采样的存储器的磨损平衡方法 | |
CN103164490B (zh) | 一种不固定长度数据的高效存储实现方法和装置 | |
CN103258044B (zh) | 一种面向dsp的二元组nandflash数据文件管理方法 | |
CN103164346A (zh) | Lba位图使用 | |
US9342247B2 (en) | Leveraging a hybrid infrastructure for dynamic memory allocation and persistent file storage | |
CN102937830A (zh) | 移动设备的电量管理方法、装置及移动设备 | |
CN101968755B (zh) | 一种自适应应用负载变化的快照生成方法 | |
CN101488153A (zh) | 嵌入式Linux下大容量闪存文件系统的实现方法 | |
CN104063186A (zh) | 一种电子设备的数据访问方法 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CN106354658B (zh) | 一种降低混合映射算法中映射表内存资源占用的方法 | |
CN104778203A (zh) | 费控智能电能表中负荷记录分块索引存储及查询方法 | |
CN110377224A (zh) | 具有主机启动缓存区刷新的大容量存储设备 | |
CN103246609A (zh) | 一种闪存存储设备中冷热数据区分管理的方法及装置 | |
CN103885887A (zh) | 用户数据存储方法、读取方法及系统 | |
CN107515728A (zh) | 发挥闪存设备内部并发特性的数据管理方法和装置 | |
CN102520885B (zh) | 一种混合硬盘的数据管理系统 | |
CN108664577A (zh) | 一种基于flash空闲区的文件管理方法及系统 | |
CN109669889A (zh) | 一种轻量型Nor Flash闪存控制方法和装置 | |
CN109189724B (zh) | 提高视频监控系统音视频数据存储效率的方法及装置 | |
CN103268267A (zh) | 一种基于块的nandflash坏区动态标记处理方法 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
CN108647278A (zh) | 一种文件管理方法及系统 | |
CN108829345A (zh) | 日志文件的数据处理方法和终端设备 |
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 |