CN103645993A - 一种基于大页面Flash的数据更新和读取方法 - Google Patents

一种基于大页面Flash的数据更新和读取方法 Download PDF

Info

Publication number
CN103645993A
CN103645993A CN201310721756.0A CN201310721756A CN103645993A CN 103645993 A CN103645993 A CN 103645993A CN 201310721756 A CN201310721756 A CN 201310721756A CN 103645993 A CN103645993 A CN 103645993A
Authority
CN
China
Prior art keywords
page
data
log
flash
log area
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.)
Granted
Application number
CN201310721756.0A
Other languages
English (en)
Other versions
CN103645993B (zh
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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201310721756.0A priority Critical patent/CN103645993B/zh
Publication of CN103645993A publication Critical patent/CN103645993A/zh
Priority to PCT/CN2014/094668 priority patent/WO2015096698A1/zh
Priority to US15/107,326 priority patent/US10228875B2/en
Application granted granted Critical
Publication of CN103645993B publication Critical patent/CN103645993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种基于大页面Flash的数据更新和读取方法,属于存储器领域。其中,数据更新的方法包括:当与物理页号对应的Flash页面为空闲页时,将待写入数据写入所述Flash页面的有效数据区,当所述Flash页面不为空闲页时,生成日志记录,若所述Flash页面的日志区的剩余空间充足,则将日志记录写入所述Flash页面的日志区,若不充足则重新组织数据,用新的空闲页替换所述Flash页面;数据读取的方法包括:读取与物理页号对应的Flash页面的有效数据区中的数据,根据所述Flash页面的日志区中的日志记录更新读取到的数据,返回更新后的数据中的相应数据。本发明的有益效果在于:可以提高数据更新的效率。

Description

一种基于大页面Flash的数据更新和读取方法
技术领域
本发明涉及存储器领域,尤其涉及一种基于大页面Flash的数据更新和读取方法。
背景技术
Flash是存储芯片的一种,Flash存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程的性能,还可以快速读取数据,使数据不会因为断电而丢失。
发明人在实现本发明的过程中发现,现有技术中至少存在以下不足:有很多Flash芯片的页面非常大,例如2KB/4KB,但是应用中每次需要更新的内容却比较少,根据目前通用的方法,每次即使是更新几个字节的数据,也要重新查找空闲页面,然后将原始页面的内容在RAM中更新后写入新的Flash页面,采用这种方法进行数据更新,效率低,且会缩短Flash的寿命。
发明内容
本发明的目的是为了克服现有技术的缺陷,提出一种基于大页面Flash的数据更新和读取方法。
本发明方法是通过下述技术方案实现的:
一方面,本发明提供了一种基于大页面Flash的数据更新方法,其基本实施过程如下:
一种基于大页面Flash的数据更新方法,包括:根据写入地址得到物理页号和第一页内偏移地址,向大页面Flash中写入待写入数据;其特征在于,所述大页面Flash的每个Flash页面被划分为有效数据区和日志区,所述向所述大页面Flash中写入所述待写入数据具体包括:
步骤S1:判断与所述物理页号对应的Flash页面是否为空闲页,是则将所述待写入数据写入到所述Flash页面的有效数据区,结束;否则执行步骤S2;
步骤S2:按照预设格式根据所述待写入数据、所述待写入数据的长度和所述第一页内偏移地址生成日志记录;
步骤S3:计算所述Flash页面的日志区的剩余空间的大小,判断所述Flash页面的日志区的剩余空间是否大于所述日志记录的长度,是则将所述生成的日志记录写入到所述Flash页面的日志区,结束;否则执行步骤S4;
步骤S4:在所述大页面Flash中查找新的空闲页,根据所述Flash页面的日志区中的日志记录、所述生成的日志记录和有效数据区中的有效数据重新组织数据,将组织得到的数据写入所述新的空闲页的有效数据区,结束。
具体地,所述判断与所述物理页号对应的Flash页面是否为空闲页具体包括:检索所述Flash页面的日志区,判断所述Flash页面的日志区中的非空闲标志是否置位,是则所述Flash页面不是空闲页,否则所述Flash页面是空闲页;相应地,所述将组织得到的数据写入所述新的空闲页的有效数据区之后还包括:置位所述新的空闲页的日志区中的非空闲标志;进一步地,所述判断与所述物理页号对应的Flash页面是否为空闲页之前包括:设置各Flash页面的日志区的前两个字节为非空闲标志,当各Flash页面的前两个字节为0x5AA5时所述非空闲标志置位,当各Flash页面的前两个字节不为0x5AA5时所述非空闲标志复位;相应地,所述置位所述新的空闲页日志区中的非空闲标志:将所述新的空闲页日志区的前两个字节修改为0x5AA5;
或者,所述判断与所述物理页号对应的Flash页面是否为空闲页具体包括:读取所述Flash页面从起始地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页;
或者,所述判断所述物理页号对应的Flash页面是否为空闲页具体包括:读取所述Flash页面从第一页内偏移地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页;
所述步骤S1与步骤S2之间还包括:判断所述Flash页面的日志区是否写满,是则执行步骤S4,否则执行步骤S2;
所述判断所述Flash页面的日志区是否写满具体包括:计算所述Flash页面的日志区中已使用的字节数,判断所述日志区已使用的字节数是否等于所述Flash页面的日志区的大小,是则所述Flash页面的日志区写满;否则所述Flash页面的日志区未写满;其中,所述计算所述Flash页面的日志区中已使用的字节数具体包括:遍历所述Flash页面的日志区,记录所述Flash页面的日志区中各日志记录的长度,当查找到连续的至少两个字节的0xFF时,计算各日志记录的长度和,得到所述日志区中已使用的字节数;
所述计算所述Flash页面的日志区的剩余空间的大小具体包括:遍历所述Flash页面的日志区,记录所述Flash页面的日志区中各日志记录的长度,当查找到连续的两个及以上字节的0xFF时,计算各日志记录的长度和,得到所述Flash页面的日志区中已使用的字节数,用所述Flash页面的日志区的大小减去所述已使用的字节数,得到所述Flash页面的日志区的剩余空间的大小;
所述根据所述Flash页面的日志区中的日志记录、所述生成的日志记录和有效数据区中的有效数据重新组织数据具体包括:
步骤A:读取所述Flash页面的有效数据区中的有效数据;
步骤B:逐条读取所述Flash页面的日志区中的日志记录和所述生成的日志记录,按照日志记录中的第一页内偏移地址,用日志记录中的待写入数据更新有效数据中的相应的数据;
进一步地,所述步骤B具体包括:
步骤B1:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤B2:按照读取到的日志记录中的第一页内偏移地址,用读取到的日志记录中的待写入数据更新所述有效数据中的相应数据;
步骤B3:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回执行步骤B1,否则执行步骤B4;
步骤B4:读取所述生成的日志记录,按照所述生成的日志记录中的第一页内偏移地址,用所述生成的日志记录中的待写入数据更新所述有效数据中的相应数据;
其中,所述判断所述Flash页面的日志区中是否还有未读取的日志记录具体为:判断读取到的日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录。
另一方面,本发明还提供了一种基于大页面Flash的数据读取方法,其基本实施过程如下:
一种基于大页面Flash的数据读取方法,包括根据读取地址得到物理页号和第二页内偏移地址,读取大页面Flash中的数据;其特征在于,所述读取大页面Flash中的数据具体包括:
步骤T1:读取与所述物理页号对应的Flash页面的有效数据区中的有效数据;
步骤T2:逐条读取所述Flash页面的日志区中的日志记录,按照日志记录中的第一页内偏移地址,用日志记录中的待写入数据更新有效数据中的相应的数据;
步骤T3:返回更新得到的数据中与所述第二页内偏移地址和读取长度相对应的数据;
所述步骤T2具体包括:
步骤a:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤b:按照读取到的日志记录中的第一页内偏移地址,用读取到的日志记录中的待写入数据更新所述有效数据中的相应数据;
步骤c:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回执行步骤a,否则执行步骤T3。
所述判断所述Flash页面的日志区中是否还有未读取的日志记录具体为:判断读取到的日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录。
本发明方法的有益效果在于,采用本发明提供的方法可以提高数据更新的效率,特别是在Flash页面较大,每次更新的数据量较小的情况下,能够大幅提升Flash的性能和寿命。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种基于大页面Flash的数据更新方法的流程图;
图2为图1中将所述Flash页面的有效数据区和日志区的数据重新组织的具体方法流程图;
图3为本发明实施例一中所述Flash页面的页面示意图;
图4为本发明实施例一中将组织得到的数据写入新的空闲页后新的空闲页的页面示意图;
图5为本发明实施例二提供的一种基于大页面Flash的数据读取方法的流程图;
图6为图5中步骤b的具体方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的一种基于大页面Flash的数据更新和读取方法,在Flash的物理页面中划分出部分冗余区域作为日志区域,当需要更新该物理页面中的数据时,在日志区域中添加一条记录本次需要更新的内容的日志记录,当日志区域写满后,查找新的空闲页面,用查找到的空闲页面替换该物理页面;当需要读取该物理页面中的数据时,首先从数据区域读取内容,然后根据日志区域中的日志记录更新读取到的数据内容。
实施例一
参见图1,本发明实施例一提供一种基于大页面Flash的数据更新方法,在所述方法中,将大页面Flash的各Flash页面划分为有效数据区和日志区,例如,对于一个4KB的页面,划分出3KB为有效数据区,剩余的1KB冗余区域作为日志区,当向所述大页面Flash中写入数据(以下称要写入的数据为待写入数据)时,调用写入函数,向所述写入函数中传入待写入数据、待写入数据的长度和写入地址(该写入地址为逻辑地址),所述写入函数根据所述写入地址计算出逻辑页号和第一页内偏移地址,在逻辑页号物理页号映射表中查找与所述逻辑页号对应的物理页号,执行向所述物理页号对应的Flash页面中写入待写入数据操作,所述写入待写入数据操作包括以下步骤:
步骤A:判断所述Flash页面是否是空闲页,是则将待写入数据写入到所述Flash页面的有效数据区,结束;否则执行步骤B;
具体地,判断所述Flash页面是否是空闲页包括:检索所述Flash页面的日志区,判断所述日志区中的非空闲标志是否置位,是则所述Flash页面不是空闲页,否则所述Flash页面是空闲页;
当所述Flash页面是空闲页,将待写入数据写入所述Flash页面的有效数据区时还包括:置位所述Flash页面的日志区中的非空闲标志;
例如,本实施例中,设置日志区的前两个字节为非空闲标志,当日志区的前2个字节的值为0x5AA5时表示非空闲标志置位,当前两个字节的值不为0x5AA5时表示非空闲标志复位;
或者,判断所述Flash页面是否是空闲页包括:读取所述Flash页面从起始地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页;其中,所述预设个字节为若干个字节,通常为两个及以上字节;
例如,本实施例中,读取所述Flash页面从起始地址开始的两个字节的数据,若读取到的数据为0xFFFF则所述Flash页面为空闲页,否则所述Flash页面不为空闲页;
又或者,判断所述Flash页面是否是空闲页包括:读取所述Flash页面从第一页内偏移地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页;其中,所述预设个字节为若干个字节,通常为两个及以上字节;
例如,本实施例中,读取所述Flash页面从第一页内偏移地址开始的三个字节的数据,若读取到的数据为0xFFFFFF则所述Flash页面为空闲页。
步骤B:判断所述Flash页面的日志区是否写满,是则执行步骤F,否则执行步骤C;
具体地,判断所述Flash页面的日志区是否写满包括:
步骤B1:计算所述日志区已使用的字节数;
步骤B1具体包括:遍历所述Flash页面的日志区,记录各日志记录的长度,当查找到连续的至少两个字节的0xFF时,计算各日志记录的长度和,得到所述日志区已使用的字节数;
步骤B2:判断所述日志区已使用的字节数是否达到了所述日志区的大小,是则所述日志区写满,否则所述日志区未写满;
例如,本实施例中,日志区的大小为1KB,即1024个字节,当日志区已使用的字节数达到1024个字节时表示日志区写满,当日志区已使用的字节数未达到1024字节时,表示日志区未写满;
进一步地,本实施例中可以省略步骤B直接执行步骤C。
步骤C:按照预设格式根据待写入数据、待写入数据的长度和第一页内偏移地址生成日志记录;
具体地,所述预设格式为待写入数据长度+第一页内偏移地址+待写入数据;
本实施例中,用两个字节的数据表示待写入数据的长度,用两个字节的数据表示第一页内偏移地址,例如,若第一页内偏移地址为0x0400,待写入数据为0x313233343536,则生成的要添加的日志记录为:0x00060400313233343536。
步骤D:计算所述Flash页面的日志区剩余空间的大小,判断所述Flash页面的日志区剩余空间的大小是否大于所述日志记录的长度,是则执行步骤E,否则执行步骤F;
具体地,计算所述Flash页面的日志区的剩余空间包括:遍历所述Flash页面的日志区,记录各日志记录的长度,当查找到连续的至少两个字节的0xFF时,计算各日志记录的长度和,得到所述日志区已使用的字节数,用所述日志区的大小减去已使用的字节数得到所述日志区剩余空间的大小;
本实施例中,用两个字节的数据表示待写入数据的长度,用两个字节的数据表示页内偏移地址,所述日志记录的长度等于待写入数据的长度加上4个字节;例如,若待写入数据的长度为6个字节,则要添加的日志记录的长度为10个字节。
步骤E:将生成的日志记录写入到所述Flash页面的日志区,结束;
步骤F:查找新的空闲页,将所述Flash页面的有效数据区中的有效数据、日志区中的日志记录以及生成的日志记录重新组织;
参见图2,本实施例中,将所述Flash页面的有效数据区中的有效数据、日志区中的日志记录以及生成的日志记录重新组织包括:
步骤F1:读取所述Flash页面的有效数据区中的有效数据;
步骤F2:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤F3:按照所述日志记录中的第一页内偏移地址,用所述日志记录中的待写入数据更新有效数据中的相应数据;
例如,若读取到的日志记录为0x00060400313233343536,则将有效数据中的第1025个字节至第1030个字节的数据更新为0x313233343536;
步骤F4:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回步骤F2,否则执行步骤F5;
判断所述Flash页面的日志区中是否还有未读取的日志记录包括:判断所述日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录;
步骤F5:读取生成的日志记录;
步骤F6:按照所述生成的日志记录中的第一页内偏移地址,用所述生成的日志记录中的待写入数据更新有效数据中的相应数据,组织过程结束;
本实施例中,步骤F中还包括用新空闲页的物理页号替换逻辑页号物理页号映射表中所述Flash页面的物理页号。
步骤G:将组织得到的数据写入新的空闲页的有效数据区,结束。
具体地,若本实施例中用非空闲标志标识当前页面是否为空闲页时,将待写入数据写入新的空闲页的有效数据区时还包括,将所述新的空闲页中的非空闲标志置位;
例如,参见图3,本实施例中,所述Flash页面的首地址为0x4000,大小为4KB,所述Flash页面的有效数据区为地址0x4000--0x5000对应的区域,大小为3KB,所述Flash页面的日志区为地址0x5000--0x5400对应的区域,有效数据区中的数据为0x1111111111......(共1024个字节的11)2222222222......(共1024个字节的22)3333333333......(共1024个字节的33),日志区中的数据为0x5AA508000000444444444444…(共2048个字节的44)04000800555555555555...(共1024个字节的55),即日志区中共两条记录:0x08000000444444444444…和0x04000800555555555555...,本次数据更新过程中生成的日志记录为0x00060400313233343536;将有效数据区中的有效数据、日志区中的日志记录以及生成的日志记录重新组织得到的数据为:0x4444444444......(共1024个字节的44)313233343536444444444444(共1018个字节的44)5555555555......(共1024个字节的55),查找到的新空闲页的首地址为0x6000,将组织得到的数据写入到新空闲页的有效数据区后,新空闲页中的数据如图4所示。
实施例二
参见图5,本实施例二提供一种基于大页面Flash的数据读取方法,本方法中大页面Flash采用实施例中提供的方法进行数据更新;当读取所述大页面Flash中的数据时,调用读取函数,向所述写入函数中传入读取地址(该读取地址为逻辑地址)和读取长度,所述读取函数根据所述读取地址计算出逻辑页号和第二页内偏移地址,在逻辑页号物理页号映射表中查找与所述逻辑页号对应的物理页号,执行读取所述物理页号对应的Flash页面中的数据的操作,所述操作包括以下步骤:
步骤a:读取所述Flash页面的有效数据区中的有效数据;
步骤b:逐条读取所述Flash页面的日志区中的日志记录,按照各日志记录中的第一页内偏移地址,用各日志记录中的待写入数据更新有效数据中的相应数据;
参见图6,本实施例中,步骤b具体包括:
步骤b1:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤b2:按照所述日志记录中的第一页内偏移地址,用所述日志记录中的待写入数据更新有效数据中的相应数据;
例如,本实施例中,从所述Flash页面的有效数据区中读取到的有效数据为0x111111111111......(共1024个字节的11)222222222222......(共1024个字节的22)333333333333......(共1024个字节的33),若读取到一条日志记录为0x00060400313233343536,则将有效数据中的第1025个字节至1030个字节的数据更新为0x313233343536,更新之后的有效数据为0x111111111111......(共1024个字节)3132333435362222......(共1018个字节的22)333333333333......(共1024个字节)。
步骤b3:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回步骤b1,否则执行步骤c。
具体地,判断所述Flash页面的日志区中是否还有日志记录包括:判断所述日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录;
步骤c:返回更新得到的数据中与所述第二页内偏移地址和所述读取长度相对应的数据。
例如,更新得到的数据为0x111111111111......(共1024个字节)3132333435362222......(共1018个字节的22)333333333333......(共1024个字节),若所述页内偏移地址为0x0002,读取长度为8个字节,则将更新得到的数据中的第3个字节至第10个字节返回。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

Claims (15)

1.一种基于大页面Flash的数据更新方法,包括:根据写入地址得到物理页号和第一页内偏移地址,向大页面Flash中写入待写入数据;其特征在于,所述大页面Flash的每个Flash页面被划分为有效数据区和日志区,所述向所述大页面Flash中写入所述待写入数据具体包括:
步骤S1:判断与所述物理页号对应的Flash页面是否为空闲页,是则将所述待写入数据写入到所述Flash页面的有效数据区,结束;否则执行步骤S2;
步骤S2:按照预设格式根据所述待写入数据、所述待写入数据的长度和所述第一页内偏移地址生成日志记录;
步骤S3:计算所述Flash页面的日志区的剩余空间的大小,判断所述Flash页面的日志区的剩余空间是否大于所述日志记录的长度,是则将所述生成的日志记录写入到所述Flash页面的日志区,结束;否则执行步骤S4;
步骤S4:在所述大页面Flash中查找新的空闲页,根据所述Flash页面的日志区中的日志记录、所述生成的日志记录和有效数据区中的有效数据重新组织数据,将组织得到的数据写入所述新的空闲页的有效数据区,结束。
2.如权利要求1所述方法,其特征在于,所述判断与所述物理页号对应的Flash页面是否为空闲页具体包括:检索所述Flash页面的日志区,判断所述Flash页面的日志区中的非空闲标志是否置位,是则所述Flash页面不是空闲页,否则所述Flash页面是空闲页;
相应地,所述将组织得到的数据写入所述新的空闲页的有效数据区之后还包括:置位所述新的空闲页的日志区中的非空闲标志。
3.如权利要求2所述的方法,其特征在于,所述判断与所述物理页号对应的Flash页面是否为空闲页之前包括:设置各Flash页面的日志区的前两个字节为非空闲标志,当各Flash页面的前两个字节上的数据为预设数据时所述非空闲标志置位,否则所述非空闲标志复位;
相应地,所述置位所述新的空闲页日志区中的非空闲标志:将所述新的空闲页日志区的前两个字节上的数据修改为所述预设数据。
4.如权利要求1所述的方法,其特征在于,所述判断与所述物理页号对应的Flash页面是否为空闲页具体包括:读取所述Flash页面从起始地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页。
5.如权利要求1所述的方法,其特征在于,所述判断所述物理页号对应的Flash页面是否为空闲页具体包括:读取所述Flash页面从第一页内偏移地址开始的预设个字节的数据,判断读取到的各个字节是否均为0xFF,是则所述Flash页面是空闲页,否则所述Flash页面不是空闲页。
6.如权利要求1所述的方法,其特征在于,所述步骤S1与步骤S2之间还包括:判断所述Flash页面的日志区是否写满,是则执行步骤S4,否则执行步骤S2。
7.如权利要求6所述的方法,其特征在于,所述判断所述Flash页面的日志区是否写满具体包括:计算所述Flash页面的日志区中已使用的字节数,判断所述日志区已使用的字节数是否等于所述Flash页面的日志区的大小,是则所述Flash页面的日志区写满;否则所述Flash页面的日志区未写满。
8.如权利要求7所述的方法,其特征在于,所述计算所述Flash页面的日志区中已使用的字节数具体包括:遍历所述Flash页面的日志区,记录所述Flash页面的日志区中各日志记录的长度,当查找到连续的至少两个字节的0xFF时,计算各日志记录的长度和,得到所述日志区中已使用的字节数。
9.如权利要求1所述的方法,其特征在于,所述计算所述Flash页面的日志区的剩余空间的大小具体包括:遍历所述Flash页面的日志区,记录所述Flash页面的日志区中各日志记录的长度,当查找到连续的两个及以上字节的0xFF时,计算各日志记录的长度和,得到所述Flash页面的日志区中已使用的字节数,用所述Flash页面的日志区的大小减去所述已使用的字节数,得到所述Flash页面的日志区的剩余空间的大小。
10.如权利要求1所述的方法,其特征在于,所述根据所述Flash页面的日志区中的日志记录、所述生成的日志记录和有效数据区中的有效数据重新组织数据具体包括:
步骤A:读取所述Flash页面的有效数据区中的有效数据;
步骤B:逐条读取所述Flash页面的日志区中的日志记录和所述生成的日志记录,按照日志记录中的第一页内偏移地址,用日志记录中的待写入数据更新有效数据中的相应的数据。
11.如权利要求10所述的方法,其特征在于,所述步骤B具体包括:
步骤B1:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤B2:按照读取到的日志记录中的第一页内偏移地址,用读取到的日志记录中的待写入数据更新所述有效数据中的相应数据;
步骤B3:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回执行步骤B1,否则执行步骤B4;
步骤B4:读取所述生成的日志记录,按照所述生成的日志记录中的第一页内偏移地址,用所述生成的日志记录中的待写入数据更新所述有效数据中的相应数据。
12.如权利要求11所述的方法,其特征在于,所述判断所述Flash页面的日志区中是否还有未读取的日志记录具体为:判断读取到的日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录。
13.一种基于大页面Flash的数据读取方法,包括根据读取地址得到物理页号和第二页内偏移地址,读取大页面Flash中的数据;其特征在于,所述读取大页面Flash中的数据具体包括:
步骤T1:读取与所述物理页号对应的Flash页面的有效数据区中的有效数据;
步骤T2:逐条读取所述Flash页面的日志区中的日志记录,按照日志记录中的第一页内偏移地址,用日志记录中的待写入数据更新有效数据中的相应的数据;
步骤T3:返回更新得到的数据中与所述第二页内偏移地址和读取长度相对应的数据。
14.如权利要求13所述的方法,其特征在于,所述步骤T2具体包括:
步骤a:顺序读取所述Flash页面的日志区中的一条日志记录;
步骤b:按照读取到的日志记录中的第一页内偏移地址,用读取到的日志记录中的待写入数据更新所述有效数据中的相应数据;
步骤c:判断所述Flash页面的日志区中是否还有未读取的日志记录,是则返回执行步骤a,否则执行步骤T3。
15.如权利要求14所述的方法,其特征在于,所述判断所述Flash页面的日志区中是否还有未读取的日志记录具体为:判断读取到的日志记录之后是否为至少两个字节的0xFF,是则所述Flash页面的日志区中没有未读取的日志记录,否则所述Flash页面的日志区中还有未读取的日志记录。
CN201310721756.0A 2013-12-24 2013-12-24 一种基于大页面Flash的数据更新和读取方法 Active CN103645993B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201310721756.0A CN103645993B (zh) 2013-12-24 2013-12-24 一种基于大页面Flash的数据更新和读取方法
PCT/CN2014/094668 WO2015096698A1 (zh) 2013-12-24 2014-12-23 一种Flash的数据写入和读取方法
US15/107,326 US10228875B2 (en) 2013-12-24 2014-12-23 Data writing and reading methods for flash

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310721756.0A CN103645993B (zh) 2013-12-24 2013-12-24 一种基于大页面Flash的数据更新和读取方法

Publications (2)

Publication Number Publication Date
CN103645993A true CN103645993A (zh) 2014-03-19
CN103645993B CN103645993B (zh) 2016-04-06

Family

ID=50251214

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310721756.0A Active CN103645993B (zh) 2013-12-24 2013-12-24 一种基于大页面Flash的数据更新和读取方法

Country Status (1)

Country Link
CN (1) CN103645993B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015096698A1 (zh) * 2013-12-24 2015-07-02 飞天诚信科技股份有限公司 一种Flash的数据写入和读取方法
CN107168647A (zh) * 2017-04-17 2017-09-15 武汉永力科技股份有限公司 Flash数据读写方法及系统
CN113157212A (zh) * 2021-04-23 2021-07-23 歌尔股份有限公司 Flash存储方法、装置、智能穿戴设备及存储介质
CN114089916A (zh) * 2018-01-12 2022-02-25 珠海极海半导体有限公司 数据采集系统和温湿度传感器系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050026330A (ko) * 2003-09-09 2005-03-15 가부시끼가이샤 르네사스 테크놀로지 비휘발성 메모리 제어 장치
CN101510175A (zh) * 2009-04-02 2009-08-19 北京中星微电子有限公司 目标数据更新至存储器中的方法及其装置
EP2209074A1 (en) * 2009-01-19 2010-07-21 Huawei Technologies Co., Ltd. Data storage processing method, data searching method and devices thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050026330A (ko) * 2003-09-09 2005-03-15 가부시끼가이샤 르네사스 테크놀로지 비휘발성 메모리 제어 장치
TW200511011A (en) * 2003-09-09 2005-03-16 Renesas Tech Corp Non-volatile memory control device capable of recovering data even when data writing is interrupted
EP2209074A1 (en) * 2009-01-19 2010-07-21 Huawei Technologies Co., Ltd. Data storage processing method, data searching method and devices thereof
CN101799783A (zh) * 2009-01-19 2010-08-11 中国人民大学 一种数据存储处理方法、查找方法及其装置
CN101510175A (zh) * 2009-04-02 2009-08-19 北京中星微电子有限公司 目标数据更新至存储器中的方法及其装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015096698A1 (zh) * 2013-12-24 2015-07-02 飞天诚信科技股份有限公司 一种Flash的数据写入和读取方法
US10228875B2 (en) 2013-12-24 2019-03-12 Feitian Technologies Co., Ltd. Data writing and reading methods for flash
CN107168647A (zh) * 2017-04-17 2017-09-15 武汉永力科技股份有限公司 Flash数据读写方法及系统
CN107168647B (zh) * 2017-04-17 2020-10-23 武汉永力科技股份有限公司 Flash数据读写方法及系统
CN114089916A (zh) * 2018-01-12 2022-02-25 珠海极海半导体有限公司 数据采集系统和温湿度传感器系统
CN114089916B (zh) * 2018-01-12 2022-12-20 珠海极海半导体有限公司 数据采集系统和温湿度传感器系统
CN113157212A (zh) * 2021-04-23 2021-07-23 歌尔股份有限公司 Flash存储方法、装置、智能穿戴设备及存储介质

Also Published As

Publication number Publication date
CN103645993B (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
CN102306125B (zh) 一种flash存储器的数据擦写方法
CN101493794B (zh) 一种闪存数据处理方法及装置
CN101446921B (zh) 一种Flash存储器的动态存储方法
CN101419841B (zh) 一种flash存储器擦写方法
CN104090730A (zh) 一种对存储设备进行数据读写的方法及装置
CN102929795B (zh) 一种NandFlash坏块管理方法
CN103729303A (zh) 一种Flash的数据写入和读取方法
CN101901189B (zh) 更新用户数据的方法以及恢复用户数据的方法
CN102629234B (zh) 一种单片机片内置Flash数据快速检索方法
CN102831072A (zh) 闪存设备及其管理方法、数据读写方法及读写装置
CN103645993B (zh) 一种基于大页面Flash的数据更新和读取方法
WO2015096698A1 (zh) 一种Flash的数据写入和读取方法
CN102841851A (zh) 闪存管理方法和闪存设备
CN105988722B (zh) 数据储存方法及嵌入式系统
CN106354658B (zh) 一种降低混合映射算法中映射表内存资源占用的方法
CN102339254A (zh) 用于智能电能表的flash数据存储方法
CN103064792A (zh) 数据写入方法及装置
CN104516959A (zh) 一种管理数据库日志的方法及装置
CN103970669A (zh) 用于加速在固态设备中的回收操作的物理到逻辑地址映射
CN103365786A (zh) 数据存储方法、装置和系统
CN106020735A (zh) 一种数据存储方法及数据存储装置
CN104598386A (zh) 通过追踪和利用二级映射索引重复利用固态驱动器块
CN109558335A (zh) 一种基于Nor Flash存储器的嵌入式系统的文件存储格式
CN104166627B (zh) 一种基于单片机的nand‑flash写操作方法
CN107506311B (zh) 一种固态硬盘的ftl表的刷写方法及装置

Legal Events

Date Code Title Description
PB01 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