CN102214145B - 一种闪存数据更新方法及系统 - Google Patents
一种闪存数据更新方法及系统 Download PDFInfo
- Publication number
- CN102214145B CN102214145B CN 201110197637 CN201110197637A CN102214145B CN 102214145 B CN102214145 B CN 102214145B CN 201110197637 CN201110197637 CN 201110197637 CN 201110197637 A CN201110197637 A CN 201110197637A CN 102214145 B CN102214145 B CN 102214145B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- data block
- shadow piece
- module
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种闪存数据更新方法及系统,其中方法包括:在闪存中设置一影子块,由随机存取存储器分配与闪存中待写入数据块中的字节分别对应的地址索引位;将需要更新到待写入数据块的数据写入影子块相应位置,并将相应地址索引位置1,待全部数据更新后,将相应地址索引位为非1的待写入数据块数据写入影子块相应位置;擦除待写入数据块;将影子块的数据复制到待写入数据块中。该技术避免了现有技术在更新闪存时,需将待写入闪存块数据全部临时备份到随机存取存储器而使得RAM资源消耗过大、系统成本较高的问题。该方法在更新闪存数据时,极大减少了所需的随机存取存储器的存储空间,降低了系统对随机存取存储器的要求,使得系统成本降低。
Description
技术领域
本发明属于数据存储技术领域,尤其涉及一种闪存数据更新方法及系统。
背景技术
目前,闪存(Flash Memory)已被广泛应用于各类嵌入式设备中,以单片机为例,很多单片机内部配置了数个FLASH块,每块大小几十到几百字节,以替代EEPROM,用于存储系统运行时参数。
一般地,在向闪存中写入数据前,需将闪存按块擦除,之后才能执行按字节写操作。在闪存写过程中,系统在受到某种电磁干扰(如强磁干扰、电压不稳等)时,存在一定的写错误概率。
为此,现有技术提供的应用于单片机的闪存数据更新方法如下:1.写入闪存之前先在RAM中申请与闪存中待写入数据块同样大小的临时RAM空间;2.将待写入数据块的内容复制到临时RAM空间中;3.在临时RAM空间中修改数据;4.擦除待写入数据块;5.将临时RAM空间中的数据回写到待写入数据块中。
然而,由于单片机中RAM的存储空间通常很小,仅有几百个字节,如果为了修改闪存中的几个字节而临时在RAM中备份整个待写入数据块的数据,会造成系统RAM资源紧张,提高系统对RAM存储空间的要求,使得系统成本较高,且限制了单片机程序规模。
发明内容
本发明实施例的目的在于提供一种闪存数据更新方法,以解决现有技术提供的应用于单片机的闪存数据更新方法会提高系统对RAM存储空间的要求,使得系统成本较高,且限制单片机程序规模的问题。
本发明实施例是这样实现的,一种闪存数据更新方法,所述方法包括以下步骤:
在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块,并由随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位,将所述地址索引位清零并擦除所述影子块;
将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上,并将相应的所述地址索引位置1,待全部数据更新后,将相应所述地址索引位为非1的所述待写入数据块中的数据写入所述影子块的相应位置;
擦除所述待写入数据块,将所述影子块的数据复制到所述待写入数据块中。
上述方法中,所述随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位的步骤具体可以包括以下步骤:
获取待写入数据块的字节空间n,n为正整数;
判断所述字节空间是否为8的倍数,是则由所述随机存取存储器分配n/8字节的存储空间,否则由所述随机存取存储器分配n/8+1字节的存储空间,分配的字节中的每一位即为所述地址索引位。
上述方法中,在所述将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上的步骤,和所述将相应的所述地址索引位置1的步骤之间,还可以包括以下步骤:判断写入所述影子块中相应位置上的数据是否正确,是则将相应的所述地址索引位置1,否则执行写错误处理例程。
上述方法中,所述擦除所述待写入数据块的步骤之前,还可以包括以下步骤:判断相应所述地址索引位为非1的所述待写入数据块中的数据是否全部被正确写入所述影子块的相应位置,是则擦除所述待写入数据块,否则执行写错误处理例程。
上述方法中,所述将所述影子块的数据复制到所述待写入数据块中的步骤之后,还可以包括以下步骤:
判断所述待写入数据块和所述影子块中的数据是否一致,是则数据更新完毕,否则执行写错误处理例程。
本发明还提供了一种闪存数据更新系统,所述系统包括:
设置模块,用于在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块;
分配模块,用于控制随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位;
擦除模块,用于擦除所述影子块;
清零模块,用于将所述地址索引位清零;
第一写入模块,用于将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上,并将相应的所述地址索引位置1;
第二写入模块,用于在所述第一写入模块将全部需要更新到所述待写入数据块的数据更新后,将相应所述地址索引位为非1的所述待写入数据块中的数据写入所述影子块的相应位置;
复制模块,用于擦除所述待写入数据块,将所述影子块的数据复制到所述待写入数据块中。
其中,所述分配模块控制随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位的步骤可以包括:
获取待写入数据块的字节空间n,n为正整数;
判断所述字节空间是否为8的倍数,是则由所述随机存取存储器分配n/8字节的存储空间,否则由所述随机存取存储器分配n/8+1字节的存储空间,分配的字节中的每一位即为所述地址索引位。
所述系统还可以包括:错误处理模块;
所述第一写入模块还用于在将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上后,判断写入所述影子块中相应位置上的数据是否正确,是则将相应的所述地址索引位置1,否则控制所述错误处理模块执行写错误处理例程。
在另一种情况下,所述系统还可以包括:错误处理模块;
所述复制模块还可以用于判断相应所述地址索引位为非1的所述待写入数据块中的数据是否被正确写入所述影子块的相应位置,是则擦除所述待写入数据块,否则控制所述错误处理模块执行写错误处理例程。
在另一种情况下,所述系统还可以包括:
错误处理模块;
判断模块,用于判断所述复制模块复制后的所述待写入数据块和所述影子块中的数据是否一致,是则数据更新完毕,否则控制所述错误处理模块执行写错误处理例程。
本发明提供的闪存数据更新方法在更新闪存数据时,随机存取存储器仅需存储用以指示闪存的待写入数据块中,与字节相应的地址索引位即可,而不必缓存待写入数据块的全部数据,极大减少了更新闪存数据时,所需的随机存取存储器的存储空间。例如,当待写入数据块大小为128字节时,随机存取存储器只需分配16字节的地址索引位,即可完成对待写入数据块的数据更新管理,相对于现有技术可以节省112字节的存储空间。当单片机的随机存取存储器空间为512字节时,空间节省达21.9%,且待写入数据块空间越大,节约效果越明显,降低了系统对随机存取存储器的要求,使得单片机程序规模可以扩大,系统成本降低。
附图说明
图1是本发明提供的闪存数据更新方法的流程图;
图2是本发明优选实施例提供的闪存数据更新方法的执行流程图;
图3是本发明提供的闪存数据更新系统的结构原理图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1示出了本发明提供的闪存数据更新方法的流程。
在步骤S101中,在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块,并由随机存取存储器分配与待写入数据块中的字节分别对应的地址索引位,将地址索引位清零并擦除影子块。
例如,待写入数据块包含的字节数为N(N为正整数)个,则相应地地址索引位为分别与N个字节一一对应的N个位。
其中,随机存取存储器分配与待写入数据块中的字节分别对应的地址索引位的步骤具体包括以下步骤:获取待写入数据块的字节空间n(n为正整数);判断字节空间是否为8的倍数,是则由随机存取存储器分配n/8字节的存储空间,否则由随机存取存储器分配n/8+1字节的存储空间,分配的字节中的每一位即为地址索引位。
在步骤S102中,将需要更新到待写入数据块的数据写入影子块中相应位置上,并将相应的地址索引位置1,待全部数据更新后,遍历地址索引位,如果地址索引位为非1,则说明相应的待写入数据块中的数据未发生变更,此时,将相应地址索引位为非1的待写入数据块中的数据写入影子块的相应位置。
其中的相应位置是指待写入数据块以及影子块中,具有相同地址偏移量的位置。
本发明中,在将需要更新到待写入数据块的数据写入影子块中相应位置上的步骤,以及将相应的地址索引位置1的步骤之间,还可以包括以下步骤:判断写入影子块中相应位置上的数据是否正确,是则将相应的地址索引位置1,否则执行写错误处理例程,以提高数据在更新写入过程中的准确率。
在步骤S103中,擦除待写入数据块,将影子块的数据复制到待写入数据块中。
本发明中,擦除待写入数据块的步骤之前,还可以包括以下步骤:判断相应地址索引位为非1的待写入数据块中的数据是否全部被正确写入影子块的相应位置,是则擦除待写入数据块,否则执行写错误处理例程,从而进一步提高了数据在更新写入过程中的准确率。
本发明在步骤S103之后,还可以包括以下步骤:判断待写入数据块和影子块中的数据是否一致,是则数据更新完毕,否则执行写错误处理例程。
本发明中,写错误处理例程可以是现有各种对错误数据的处理例程,如发出提示用户出现错误的信息、退出、数据恢复等。
图2示出了本发明优选实施例提供的闪存数据更新方法的执行流程。
在步骤S201中,设置影子块,并擦除该影子块;
在步骤S202中,在随机存取存储器中分配地址索引位并清零;
在步骤S203中,将需要更新的数据写入影子块;
在步骤S204中,判断需要更新的数据是否正确写入影子块,是则执行步骤S205,否则执行步骤S206。
在步骤S205中,将相应地址索引位置1;
在步骤S206中,执行写错误处理例程;
在步骤S207中,判断数据是否更新完毕,是则执行步骤S208,否则返回步骤S203;
在步骤S208中,将相应地址索引位为非1的待写入数据块中的数据写入影子块的相应位置;
在步骤S209中,判断相应地址索引位为非1的待写入数据块中的数据是否正确写入影子块的相应位置,是则执行步骤S210,否则执行步骤S206;
在步骤S210中,擦除待写入数据块;
在步骤S211中,将影子块的数据复制到待写入数据块;
在步骤S212中,判断是否将影子块的数据正确复制到待写入数据块,是则结束,否则执行步骤S206。
图3示出了本发明提供的闪存数据更新系统的结构原理。
本发明提供的闪存数据更新系统包括:设置模块11,用于在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块;分配模块12,用于控制随机存取存储器分配与待写入数据块中的字节分别对应的地址索引位;擦除模块13,用于擦除影子块;清零模块14,用于将地址索引位清零;第一写入模块15,用于将需要更新到待写入数据块的数据写入影子块中相应位置上,并将相应的地址索引位置1;第二写入模块16,用于在第一写入模块15将全部需要更新到待写入数据块的数据更新后,将相应地址索引位为非1的待写入数据块中的数据写入影子块的相应位置;复制模块17,用于擦除待写入数据块,将影子块的数据复制到待写入数据块中。
其中,分配模块控制随机存取存储器分配与待写入数据块中的字节分别对应的地址索引位的步骤如上所述,在此不再赘述。
本发明提供的闪存数据更新系统还可以包括:错误处理模块19;此时,第一写入模块15还可以用于在将需要更新到待写入数据块的数据写入影子块中相应位置上后,判断写入影子块中相应位置上的数据是否正确,是则将相应的地址索引位置1,否则控制错误处理模块19执行写错误处理例程,从而提高了数据在更新写入过程中的准确率。
另外,复制模块17还可以用于判断相应地址索引位为非1的待写入数据块中的数据是否全部被正确写入影子块的相应位置,是则擦除待写入数据块,否则控制错误处理模块19执行写错误处理例程,从而进一步提高了数据在更新写入过程中的准确率。
本发明提供的闪存数据更新系统还可以包括:判断模块18,用于判断复制模块17复制后的待写入数据块和影子块中的数据是否一致,是则数据更新完毕,否则控制错误处理模块19执行写错误处理例程。
本发明提供的闪存数据更新方法在更新闪存数据时,随机存取存储器仅需存储用以指示闪存的待写入数据块中,与字节相应的地址索引位即可,而不必缓存待写入数据块的全部数据,极大减少了更新闪存数据时,所需的随机存取存储器的存储空间,例如,当待写入数据块大小为128字节时,随机存取存储器只需分配16字节的地址索引位,即可完成对待写入数据块的数据更新管理,相对于现有技术可以节省112字节的存储空间,当单片机随机存取存储器大小为512字节时,空间节省达21.9%,且待写入数据块空间越大,节约效果越明显;另外,在擦除待写入数据块的步骤之前,如果数据在写入过程中出现错误,由于此时待写入数据块中的数据还未被更改,此时数据可以完全恢复,如果在擦除待写入数据块的步骤之后出现数据错误,由于此时影子块中的数据已是更新后的最新数据,仍可供系统使用,从而提高数据更改的准确率及应用的可靠性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种闪存数据更新方法,其特征在于,所述方法包括以下步骤:
在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块,并由随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位,将所述地址索引位清零并擦除影子块;
将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上,并将相应的所述地址索引位置1,待全部数据更新后,将相应所述地址索引位为非1的所述待写入数据块中的数据写入所述影子块的相应位置;
擦除所述待写入数据块,将所述影子块的数据复制到所述待写入数据块中;
所述随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位的步骤具体包括以下步骤:
获取待写入数据块的字节空间n,n为正整数;
判断所述字节空间是否为8的倍数,是则由所述随机存取存储器分配n/8字节的存储空间,否则由所述随机存取存储器分配n/8+1字节的存储空间,分配的字节中的每一位即为所述地址索引位。
2.如权利要求1所述的闪存数据更新方法,其特征在于,在所述将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上的步骤,和所述将相应的所述地址索引位置1的步骤之间,还包括以下步骤:判断写入所述影子块中相应位置上的数据是否正确,是则将相应的所述地址索引位置1,否则执行写错误处理例程。
3.如权利要求1所述的闪存数据更新方法,其特征在于,所述擦除所述待写入数据块的步骤之前,还包括以下步骤:判断相应所述地址索引位为非1的所述待写入数据块中的数据是否全部被正确写入所述影子块的相应位置,是则擦除所述待写入数据块,否则执行写错误处理例程。
4.如权利要求1所述的闪存数据更新方法,其特征在于,所述将所述影子块的数据复制到所述待写入数据块中的步骤之后,还包括以下步骤:
判断所述待写入数据块和所述影子块中的数据是否一致,是则数据更新完毕,否则执行写错误处理例程。
5.一种闪存数据更新系统,其特征在于,所述系统包括:
设置模块,用于在闪存中设置一空间大小与闪存中待写入数据块空间大小相等的影子块;
分配模块,用于控制随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位;
擦除模块,用于擦除所述影子块;
清零模块,用于将所述地址索引位清零;
第一写入模块,用于将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上,并将相应的所述地址索引位置1;
第二写入模块,用于在所述第一写入模块将全部需要更新到所述待写入数据块的数据更新后,将相应所述地址索引位为非1的所述待写入数据块中的数据写入所述影子块的相应位置;
复制模块,用于擦除所述待写入数据块,将所述影子块的数据复制到所述待写入数据块中;
所述分配模块控制随机存取存储器分配与所述待写入数据块中的字节分别对应的地址索引位的步骤包括:
获取待写入数据块的字节空间n,n为正整数;
判断所述字节空间是否为8的倍数,是则由所述随机存取存储器分配n/8字节的存储空间,否则由所述随机存取存储器分配n/8+1字节的存储空间,分配的字节中的每一位即为所述地址索引位。
6.如权利要求5所述的闪存数据更新系统,其特征在于,所述系统还包括:错误处理模块;
所述第一写入模块还用于在将需要更新到所述待写入数据块的数据写入所述影子块中相应位置上后,判断写入所述影子块中相应位置上的数据是否正确,是则将相应的所述地址索引位置1,否则控制所述错误处理模块执行写错误处理例程。
7.如权利要求5所述的闪存数据更新系统,其特征在于,所述系统还包括:错误处理模块;
所述复制模块还用于判断相应所述地址索引位为非1的所述待写入数据块中的数据是否全部被正确写入所述影子块的相应位置,是则擦除所述待写入数据块,否则控制所述错误处理模块执行写错误处理例程。
8.如权利要求5所述的闪存数据更新系统,其特征在于,所述系统还包括:
错误处理模块;
判断模块,用于判断所述复制模块复制后的所述待写入数据块和所述影子块中的数据是否一致,是则数据更新完毕,否则控制所述错误处理模块执行写错误处理例程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110197637 CN102214145B (zh) | 2011-07-14 | 2011-07-14 | 一种闪存数据更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110197637 CN102214145B (zh) | 2011-07-14 | 2011-07-14 | 一种闪存数据更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102214145A CN102214145A (zh) | 2011-10-12 |
CN102214145B true CN102214145B (zh) | 2013-07-17 |
Family
ID=44745463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110197637 Expired - Fee Related CN102214145B (zh) | 2011-07-14 | 2011-07-14 | 一种闪存数据更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102214145B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593296B (zh) * | 2012-08-15 | 2016-05-18 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
CN107357536B (zh) * | 2017-07-28 | 2020-07-07 | 郑州云海信息技术有限公司 | 分布式存储系统数据修改写方法及系统 |
CN108762987A (zh) * | 2018-05-30 | 2018-11-06 | 上海顺舟智能科技股份有限公司 | 用于双备份单片机闪存的数据恢复方法及装置 |
CN111767234A (zh) * | 2020-06-28 | 2020-10-13 | 歌尔科技有限公司 | 数据存储方法、装置、电子产品以及计算机可读存储介质 |
CN112181316B (zh) * | 2020-11-04 | 2024-07-30 | 深圳佰维存储科技股份有限公司 | 数据块信息继承方法、装置、存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100577380B1 (ko) * | 1999-09-29 | 2006-05-09 | 삼성전자주식회사 | 플래시 메모리와 그 제어 방법 |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
EP1435576B1 (en) * | 2003-01-03 | 2013-03-20 | Austria Card Plastikkarten und Ausweissysteme GmbH | Method and apparatus for block-oriented memory management provided in smart card controllers |
-
2011
- 2011-07-14 CN CN 201110197637 patent/CN102214145B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102214145A (zh) | 2011-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101727402B (zh) | 一种非易失性存储器数据的读写控制方法及系统 | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
US9645894B2 (en) | Data storage device and flash memory control method | |
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
CN102971717B (zh) | 存储器访问表保存和复原系统及方法 | |
US9244833B2 (en) | Data-storage device and flash memory control method | |
CN102214145B (zh) | 一种闪存数据更新方法及系统 | |
CN104484283B (zh) | 一种降低固态硬盘写放大的方法 | |
US20170336992A1 (en) | Method, device, and program for managing a flash memory for mass storage | |
US9213634B2 (en) | Efficient reuse of segments in nonoverwrite storage systems | |
CN104808951A (zh) | 进行存储控制的方法和设备 | |
JP2005242897A (ja) | フラッシュディスク装置 | |
CN100501868C (zh) | 基于NAND Flash存储器文件系统的实现方法 | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN107506138B (zh) | 一种固态硬盘提升寿命的方法 | |
CN102419735A (zh) | 存储器系统 | |
CN102298555A (zh) | 基于nand技术的模块化闪存管理系统 | |
CN107239526A (zh) | 文件系统实现方法、碎片整理方法、操作位置定位方法 | |
CN103164342A (zh) | 数据可用性的挂载时协调 | |
US20160147652A1 (en) | Data storage system and control method thereof | |
CN103677674A (zh) | 一种数据处理方法及装置 | |
WO2016160035A1 (en) | Persistent memory versioning and merging | |
CN109960471A (zh) | 数据存储方法、装置、设备以及存储介质 | |
JP2009205689A (ja) | フラッシュディスク装置 | |
CN106326132B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130717 Termination date: 20180714 |
|
CF01 | Termination of patent right due to non-payment of annual fee |