一种数据存储方法及数据存储装置的制造方法

文档序号:10654100阅读:243来源:国知局
一种数据存储方法及数据存储装置的制造方法
【专利摘要】本发明公开了一种数据存储方法及数据存储装置。该方法基于闪存存储设备,该方法包括:获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。通过上述方式,本发明在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
【专利说明】
一种数据存储方法及数据存储装置
技术领域
[0001]本发明属于数据存储技术领域,尤其涉及一种数据存储方法及数据存储装置。【背景技术】
[0002]现有的电子产品中,基本上都会用到闪存存储设备。闪存存储设备在存储数据时, 一般至少有两部分数据需要存储:程序部分和用户数据部分。其中,电子产品出厂后,程序部分一般不会再改变,而用户数据部分经常会被用户修改。
[0003]因此,采用闪存存储设备存储用户数据时,则会出现以下问题:大部分闪存存储设备在写入数据之前,必须以存储块(Bank)也即64KB为最小擦除单位进行擦除,其中,一次擦除要100ms以上。由于用户数据部分经常会被用户修改,从而大大增加了闪存存储设备的擦除次数,进而影响了闪存存储设备的使用寿命。
[0004]为了解决上述问题,现有的一种基于闪存存储设备的数据存储方法为:以闪存存储设备中的两个存储块(Bank)为例进行说明,对两个存储块进行标识,譬如标识为第一存储块Bank61和第二存储块Bank62。每个存储块的存储空间为64KB,将第一存储块Bank61和第二存储块Bank62划分为64个存储单元,每个存储块包括32个存储单元,每个存储单元的存储空间是2KB,请参照图1所示。
[0005]当用户使用包含上述闪存存储设备的电子产品时,如果调整了用户数据,那么用户数据会被依次连续存入第一存储区Bank61和第二存储区Bank62的某一个存储单元内。
[0006]具体来说,第一个存储单元B(61)Indexl的前64字节用以存储第一标识和第二标识,其中,第一标识用于标识最新存储的用户数据,第二标识用于标识已废弃的用户数据。 当存储用户数据时,用户数据会在其它63个存储单元中依次存储,第一存储单元的前64个字节位置与64个存储单元一一对应。如图1所示,如果第一次用户数据存储在存储单元B (61) Index2,则第一个存储单元B(61) Indexl的第二个字节为第一标识;那么第二次用户数据存储在存储单元B(61) Index3,第一个存储单元B(61) Indexl的第三个字节标识为第一标识,第二字节从第一标识更新为第二标识;第三次用户数据存储在存储单元B(61) Index4, 第一个存储单B(61)Indexl的第四个字节标识为第一标识,第三个字节从第一标识更新为第二标识……按如此连续存储的原则进行数据存储。
[0007]通过上述方式,当用户数据需要再次存储至上次写过的存储单元时(例如再次存储至存储单元B(61)Index3),需要等到两个存储块中的63个存储单元都被写入过,且整个 128KB的空间进行擦除后。因此,同一存储单元被重复存储的几率极大的降低,从而达到延长闪存存储设备寿命的目的。
[0008]但是,现有技术提供的数据存储方法无法保证用户数据准确地、有效地存储至闪存存储设备。比如,当用户数据存储至某一存储单元的过程中发生断电,则会导致存储后续更新的用户数据时发生异常。又比如,当用户数据存储至带有坏块的某一存储单元时,则会导致电子产品使用该用户数据时发生异常。

【发明内容】

[0009]本发明主要解决的技术问题是提供一种数据存储方法及数据存储装置,在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
[0010]为解决上述技术问题,本发明采用的一个技术方案是:提供一种数据存储方法,该数据存储方法基于闪存存储设备,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志,该方法包括:
[0011]获取保存有最新用户数据的一第一存储单元;
[0012]依序查找并得到靠近第一存储单元的空闲的一第二存储单元;
[0013]将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;
[0014]将第一存储单元的状态标志从有效状态更新为废弃状态。
[0015]为解决上述技术问题,本发明采用的另一技术方案是:提供一种数据存储装置,该数据存储装置包括闪存存储设备和处理器;其中,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志;其中,该处理器用于获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。
[0016]本发明的有益效果是:区别于现有技术的情况,本发明的数据储存方法及数据存储装置通过获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。通过上述方式,本发明在保证延长闪存存储设备寿命的同时,能够保证用户数据准确地、有效地存储至闪存存储设备。
【附图说明】
[0017]图1是现有技术提供的闪存存储设备的内部划分示意图
[0018]图2是本发明提供的闪存存储设备中某一种用户数据的数据存储区中存储块的内部划分示意图;
[0019]图3是是图2所示存储块中存储单元的结构示意图;
[0020]图4是本发明第一实施方式的数据存储方法的流程图;
[0021 ]图5是本发明第二实施方式的数据存储方法的流程图;
[0022]图6是本发明第三实施方式的数据存储方法的流程图;
[0023]图7是本发明第四实施方式的数据存储方法的流程图;
[0024]图8是本发明实施方式的数据存储装置的结构示意图。【具体实施方式】
[0025]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0026]本发明公开的数据存储方法基于闪存存储设备,其中,该闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块(Bank),各存储块(Bank)包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,其中,标识区至少包括状态标志。
[0027]请参考图2,图2是本发明提供的闪存存储设备中某一种用户数据的数据存储区中存储块的内部划分示意图。如图2所示,该存储块(64KB)包括32个依序排列的相同结构的存储单元。其中,每一个存储单元的大小为2KB,也就是说,存储至该存储单元的用户数据小于 2KB〇
[0028]请一并参考图3,图3是图2所示存储块中存储单元的结构示意图。如图3所示,该存储单元包括标识区和数据区,其中标识区设置于各存储单元的最开始16个字节的存储空间,剩余的存储空间则为数据区。
[0029]具体来说,标识区依次包括1个字节的状态标志、4个字节的写次数标志、3个字节的保留位和8个字节的身份编码。
[0030]其中,状态标志包括四种不同状态,分别为全新状态例如为OxFF、可写状态例如为 0x7F、有效状态例如为0x3F和废弃状态例如为OxlF。具体来说,当闪存存储设备中包括该存储单元的存储块进行擦除操作后,该存储单元的状态标志为全新状态。当该存储单元正确地写入最新的用户数据后,该存储单元的状态标志为有效状态。当该存储单元中存储的用户数据不是最新数据时,该存储单元的状态标志为废弃状态。当该存储单元处于写入最新的用户数据的过程中,该存储单元的状态标志为可写状态。其中,写次数标志用于标识该存储单元被写入的次数,其中,该存储单元每写一次写次数标志自动加1。其中,身份编码用于标识该存储单元的用户数据是否合法。[〇〇31]具体来说,数据区用于存储用户数据对应的数据流。
[0032]本领域的技术人员可以理解,图2所示的存储块的内部划分示意图仅为举例,本发明不以此为限。也就是说,存储块的内部划分根据用户数据的大小有不同的划分方法。例如用户数据大于2KB且小于4KB时,则存储块可以包括16个依序排列的相同结构的存储单元, 其中,每一个存储单元的大小为4KB。在本发明中,优选地,用户数据以结构体的形式进行存储,该结构体具体如下所示:
[0033]typedef struct
[0034]{
[0035]BYTE gucObjectID;
[0036]BYTE gucDebugMode;
[0037]BYTE gucBankList[FDA_BANK_COUNT];
[0038]U8 gucUnitSize;
[0039]BYTE gucDataIDCard[8];
[0040]U32 gu32RamStartAddress;
[0041 ] U32 gu32RamLen;
[0042]BYTE ucBankCount;
[0043]BYTE ucBankUnitCount;
[0044]WORD ul6AreaUnitCount;
[0045]WORD ul6UnitIndex;IclsFlashDataArea;
[0046]其中,成员[gucObjectID]表示数据对象的身份识别码,用于标识唯一的数据对象。
[0047]成员[gucDebugMode]表示调试接口,用于设置不同参数以出现不同类型的打印信息。
[0048]成员[gucBankList]表示存储块列表,用于标识闪存存储设备中被划分的用于存储对象数据的存储块列表,其中,存储块列表中可包括多个存储块,且多个存储块可以连续,也可以不连续。
[0049]成员[gucUnitSize]表示存储单元的大小,用于指定存储块中一个存储单元的大小,取值范围(I?64)KB;
[0050]成员[gucDatalDCard]表示数据对象的身份编码,用于在载入数据时进行身份验证,如身份不正确会导入默认值;
[°°511 成员[gu32RamStartAddress,gu32RamLen]表示指定影射至可快速读写的存储器(Memory)中的区域。
[0052 ] 成员[ucBankCount ]表示本数据对象中存储块的数量。
[0053]成员[ucBankUnitCount]表示存储块中存储单元的数量,也即指定一个存储块被分成多少个存储单元,取值范围(I?64);
[°°54] 成员[ul6AreaUnitCount]表示当前数据对象区域有多少个存储单元,公式如下:
[0055]ul6AreaUnitCount=(ucBankUnitCount氺ucBankCount);
[0056]成员[u16 AreaUn itCount ]表示数据对象中的指针,用于标识保存有最新的用户数据的索引。
[0057]本领域的技术人员可以理解,由于用户数据以结构体的形式进行存储,从而可以很方便地实现对不同大小的用户数据在闪存存储设备中的存储。例如,假设A用户数据每次需要2KB大小的存储单元,B用户数据每次需要4KB大小的存储单元,则通过定义上述结构体的两个不同数据对象即可实现在闪存存储设备中配置两个具有不同大小的存储单元的数据存储区,从而使得对闪存存储设备的使用更加灵活方便,进而提高了闪存存储设备的利用率,减少了擦除闪存存储设备的次数。
[0058]请参考图4,图4是本发明第一实施方式的数据存储方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图4所示的流程顺序为限。如图4所示,该方法包括如下步骤:
[0059]步骤SlOl:获取保存有最新用户数据的一第一存储单元。
[0060]在步骤SlOl中,举例来说,在电子产品使用过程中,如果用户需要改变将用户数据,以电子产品为机顶盒为例来说,假如需要将默认音量从20调整到21,则首先查找保存有最新用户数据也即默认音量20的存储单元也即第一存储单元,其中,存储默认音量20的存储单元的状态标志为有效状态。
[0061]步骤S102:依序查找并得到靠近第一存储单元的空闲的一第二存储单元。[〇〇62]在步骤S102中,依序查找第一存储单元之后空闲的存储单元也即第二存储单元, 其中,空闲的存储单元可以理解为没有被写入过用户数据的存储单元。[〇〇63]步骤S103:将更新后的数据对象存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态。[〇〇64]在步骤S103中,承接上述举例,将默认音量21存储至第二存储单元,同时,将存储默认音量21的存储单元的状态标志更新为有效状态。[〇〇65]步骤S104:将第一存储单元的状态标志从有效状态更新为废弃状态。[〇〇66] 在步骤S104中,承接上述举例,当默认音量21存储至第二存储单元后,将存储默认音量20的存储单元的状态标志更新为废弃状态。本领域的技术人员可以理解,假设将默认音量21存储至第二存储单元的过程中发生断电,该第二存储单元中存储了部分数据而不再处于空闲状态。此时存储默认音量20的存储单元对应的状态标志还是为有效状态未更新为废弃状态,机顶盒依旧认定默认音量20为最新用户数据,也即第一存储单元的地址保持不变。当机顶盒再次上电后,用户仍需要将默认音量调整到21时,则在查找靠近第一存储单元的空闲的存储单元的过程中,会跳过断电过程中写入了一部分默认音量21的数据的该第二存储单元,从而避免了存储默认音量21时发生断电而产生的异常。[〇〇67]通过上述实施方式,本发明第一实施方式的数据存储方法通过依序查找保存有最新数据对象的存储单元之后空闲的存储单元,并将更新后的数据对象存储至该空闲存储单元,从而保证延长闪存存储设备寿命的同时,能够避免用户数据存储至某一存储单元的过程中发生断电,导致存储后续更新的用户数据时发生异常,进而能够保证用户数据准确地、 有效地存储至闪存存储设备。
[0068]请参考图5,图5是本发明第二实施方式的数据存储方法的流程图。需注意的是,若有实质上相同的结果,本发明的方法并不以图5所示的流程顺序为限。如图5所示,该方法包括如下步骤:[〇〇69]步骤S201:获取保存有最新用户数据的一第一存储单元。[〇〇7〇]在步骤S201中:获取保存有最新用户数据的一第一存储单元的步骤具体为:依次读取数据存储区中各存储单元的状态标志,获取状态标志位为有效状态对应的存储单元作为保存有最新用户数据的第一存储单元。
[0071]在其它实施例中,获取保存有最新用户数据的一第一存储单元也可以通过直接读取结构体中的成员[ul6AreaUnitCount]的值得到,其中,成员[ul6AreaUnitCount]用于标识保存有最新的用户数据的索引。[〇〇72]步骤S202:依序查找并得到靠近第一存储单元的空闲的一第二存储单元。[〇〇73]在步骤S202中,依序查找并得到靠近第一存储单元的空闲的一第二存储单元的操作具体为:依次读取第一存储单元之后的存储单元的状态标志;获取状态标志位为全新状态对应的存储单元作为靠近第一存储单元的空闲的第二存储单元。[〇〇74]步骤S203:将第二存储单元的状态标志更新为准写状态。
[0075]在步骤S203中,当准备向第二存储单元存储更新后的用户数据时,首先将第二存储单元的状态标志从全新状态更新为准写状态,也即指示第二存储单元正在写入更新后的用户数据。
[0076]步骤S204:将更新后的用户数据写入第二存储单元的数据区。
[0077]在步骤S204中,更新后的用户数据在未被写入闪存存储设备时,一般存储在可快速读写的存储器例如RAM中,也即结构体中成员[gu32RamStartAddress,gu32RamLen]对应的区域。将更新后的用户数据写入第二存储单元的数据区的操作具体为:从可快速读写的存储器的指定区域依次读取用户数据的数据流,随后写入第二存储单元的数据区。
[0078]步骤S205:读取存储至第二存储单元的用户数据。
[0079]在步骤S205中,当完成更新后的用户数据写入第二存储单元的操作后,继续读取存储至第二存储单元的用户数据并写入可快速读写的存储器中不同于结构体中成员[gu32RamStartAddress, gu32RamLen ]对应的区域的其它区域。
[0080]步骤S206:根据读取出的用户数据判断第二存储单元是否存在坏块,若存在,继续执行步骤S202,否则执行步骤S207。
[0081]在步骤S206中,根据读取出的用户数据判断第二存储单元是否存在坏块的操作具体为:计算从第二存储单元读取的用户数据对应的校验数据,并与原始存储在可快速读写的存储器中的用户数据对应的校验数据进行比对,若两者一致,则表示第二存储单元不存在坏块,若两者不一致,则表示第二存储单元存在坏块。
[0082]换个角度来说,若从第二存储单元读取出的用户数据与原始存储在可快速读写的存储器中的用户数据相同,则表示该用户数据准确地、有效地存储至第二存储单元。反之,则表示该用户数据未被正确存储。
[0083]其中,校验数据的计算方法可以采用现有技术,为简约起见,在此不再赘述。
[0084]本领域的技术人员可以理解,当步骤S206中判断第二存储单元存在坏块时,此时由于第二存储单元中存储了错误数据从而使得第二存储单元不再处于空闲状态。也就是说,此时第二存储单元的状态标志为不同于全新状态的准写状态。因此,再次执行查找靠近第一存储单元的空闲的存储单元的过程中,会跳过该状态标志为准写状态的第二存储单元,从而避免了后续存储更新的用户数据时发生异常。
[0085]步骤S207:将第二存储单元的状态标志从准写状态更新为有效状态。
[0086]在步骤S207中,当步骤S206中判断第二存储单元不存在坏块时,将第二存储单元的状态标志从准写状态更新为有效状态,以标识第二存储单元为保存有最新用户数据的存储单元。
[0087]在其它实施例中,若获取保存有最新用户数据的存储单元通过直接读取结构体中的成员[ul6AreaUnitCount]的值得到,则步骤S207执行完毕后,进一步将存储有更新后的用户数据的第二存储单元的地址更新至结构体的成员[ul6AreaUnitCount]中。
[0088]优选地,为了对第二存储单元中的用户数据进行有效性标识,步骤S207进一步包括将结构体中成员[gucDatalDCard]对应的值写入第二存储单元的标识区中的身份编码所在的区域。
[0089]优选地,为了对第二存储单元写入的次数进行标识,步骤S207进一步包括将第二存储单元的标识区中的写次数标志的值自动加I。
[0090]步骤S208:将第一存储单元的状态标志从有效状态更新为废弃状态。
[0091 ]在步骤S208中,当步骤S207标识第二存储单元为保存有最新用户数据的存储单元后,将第一存储单元的状态标志从有效状态更新为废弃状态,以标识第一存储单元为保存旧的用户数据的存储单元。
[0092]通过上述实施方式,本发明第二实施方式的数据存储方法通过将更新后的用户数据写入第二存储单元的数据区后,读取写入第二存储单元的用户数据以判断第二存储单元是否存在坏块。通过上述方式,本发明能够避免用户数据存储至带有坏块的存储单元而导致的电子产品工作异常,进而能够保证用户数据准确地、有效地存储至闪存存储设备。
[0093]请参考图6,图6是本发明第三实施方式的数据存储方法的流程图。其中,图6所示的第三实施方式与图5所示的第二实施方式的区别在于:[〇〇94]当数据存储区包括至少两个存储块时,在步骤S208后,图6所示的第三实施方式还包括:[0〇95]步骤S301:判断第一存储单元和第二存储单元是否处于同一存储块中,若是,继续执行步骤S201,否则执行步骤S302。[〇〇96]步骤S302:对第一存储单元所在的存储块进行擦除操作。[〇〇97]在步骤S302中,当步骤S301判断第一存储单元和第二存储单元没有处于同一存储块中时,则对第一存储单元所在的存储块进行擦除操作。
[0098]以数据存储区包括两个存储块为例来说,对两个存储块进行标识,譬如标识为第一存储块和第二存储块,则当第一存储单元处于第一存储块,而第二存储单元处于第二存储块时,则对第一存储块进行擦除操作。本领域的技术人员可以理解,第一存储单元处于第一存储块,第二存储单元处于第二存储块可以理解为:第一存储块已经存储满,继续使用第二存储块存储数据对象。
[0099]另外,当第一存储块进行擦除操作后,若第二存储块存储满,则继续使用第一存储块存储用户数据并擦除第二存储块。也就是说,两者交替进行擦除操作。[〇1〇〇]通过上述实施方式,本发明第三实施方式的数据存储方法通过判断第一存储单元和第二存储单元是否处于同一存储块中,当第一存储单元和第二存储单元没有处于同一存储块中时,则对第一存储单元所在的存储块进行擦除操作。通过上述方式,本发明能够在擦除操作中发生断电异常时,很好地保护最新的用户数据不被丢失。
[0101]请参考图7,图7是本发明第四实施方式的数据存储方法的流程图。其中,图7所示的第四实施方式与图6所示的第三实施方式的区别在于:
[0102]在步骤S202之后,图7所示的第四实施方式还包括:[〇1〇3]步骤S401:判断更新后的用户数据是否大于闪存存储设备中存储块的大小,若大于,则执行步骤S402,否则继续执行步骤S203。[〇1〇4]在步骤S401中,判断更新后的用户数据是否大于闪存存储设备中存储块的大小具体为:判断更新后的用户数据是否大于64KB。[〇1〇5]步骤S402:对用户数据进行压缩操作以使压缩后的数据流小于存储块的大小,并继续执行步骤S203。
[0106]在步骤S402中,当步骤S401判断更新后的用户数据大于64KB时,对数据流进行压缩操作以使压缩后的用户数据小于64KB。[〇1〇7]通过上述实施方式,本发明第四实施方式的数据存储方法通过将超过存储块的大小的数据流进行压缩操作,从而能够实现较大数据量的用户数据准确地、有效地存储至闪存存储设备。
[0108]请参考图8,图8是本发明实施方式的数据存储装置的结构示意图。如图8所示,该数据存储装置包括闪存存储设备11、与闪存存储设备11耦接的处理器12。
[0109]闪存存储设备11包括用于存储至少一种用户数据的数据存储区,每一数据存储区至少包括一个存储块,存储块包括依序排列的多个相同结构的存储单元,每一存储单元包括标识区和数据区,标识区至少包括状态标志。
[0110]处理器12用于获取保存有最新用户数据的一第一存储单元;依序查找并得到靠近第一存储单元的空闲的一第二存储单元;将更新后的用户数据存储至第二存储单元,并将第二存储单元的状态标志更新为有效状态;将第一存储单元的状态标志从有效状态更新为废弃状态。
[0111]具体来说,处理器12执行获取保存有最新用户数据的一第一存储单元的操作具体为:处理器12依次读取数据存储区中各存储单元的状态标志;获取状态标志位为有效状态对应的存储单元作为保存有最新用户数据的第一存储单元。
[0112]处理器12执行依序查找并得到靠近第一存储单元的空闲的一第二存储单元的操作具体为:处理器12依次读取第一存储单元之后的存储单元的状态标志;获取状态标志位为全新状态对应的存储单元作为靠近第一存储单元的空闲的第二存储单元。
[0113]处理器12执行将更新后的用户数据存储至第二存储单元的操作包括:处理器12将第二存储单元的状态标志更新为准写状态;将更新后的用户数据写入第二存储单元的数据区;将第二存储单元的状态标志从准写状态更新为有效状态。
[0114]优选地,在本实施例中,当处理器12执行将更新后的用户数据写入第二存储单元的数据区的操作后,处理器12还用于读取存储至第二存储单元的用户数据,并根据读取出的用户数据判断第二存储单元是否存在坏块。其中,当处理器12识别出第二存储单元存在坏块时,继续执行依序查找并得到靠近第一存储单元的空闲的存储单元的操作。当处理器12识别出第二存储单元不存在坏块时,将第二存储单元的状态标志从准写状态更新为有效状态。
[0115]优选地,在本实施例中,处理器12执行将更新后的用户数据存储至第二存储单元的操作之前,处理器12还用于判断更新后的用户数据是否大于闪存存储设备中存储块的大小;若用户数据大于存储块的大小,则对用户数据进行压缩操作以使压缩后的用户数据小于存储块的大小。
[0116]优选地,在本实施例中,当数据存储区包括至少两个存储块时,处理器12执行将第一存储单元的状态标志从有效状态更新为废弃状态的操作之后,处理器12还用于判断第一存储单元和第二存储单元是否处于同一存储块中;若第一存储单元和第二存储单元不在同一存储块中,对第一存储单元所在的存储块进行擦除操作。
[0117]优选地,在本实施例中,用户数据以结构体的形式进行存储,结构体至少包括存储块的数量、存储块中存储单元的大小、存储块中存储单元的数量。
[0118]优选地,在本实施例中,每一存储单元的标识区依次包括状态标志、写次数标志、保留位和身份编码。
[0119]另外,在本发明各个实施方式或实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0120]以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
【主权项】
1.一种数据存储方法,其特征在于,所述数据存储方法基于闪存存储设备,所述闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一所述数据存储区至少包括一个存储块,所述存储块包括依序排列的多个相同结构的存储单元,每一所述存储单元包括标识区和数据区,所述标识区至少包括状态标志,所述方法包括: 获取保存有最新所述用户数据的一第一存储单元; 依序查找并得到靠近所述第一存储单元的空闲的一第二存储单元; 将更新后的所述用户数据存储至所述第二存储单元,并将所述第二存储单元的所述状态标志更新为有效状态; 将所述第一存储单元的所述状态标志从有效状态更新为废弃状态。2.根据权利要求1所述的数据存储方法,其特征在于,所述将更新后的所述用户数据存储至所述第二存储单元步骤包括: 将所述第二存储单元的所述状态标志更新为准写状态; 将更新后的所述用户数据写入所述第二存储单元的所述数据区; 将所述第二存储单元的所述状态标志从所述准写状态更新为所述有效状态。3.根据权利要求2所述的数据存储方法,其特征在于,所述将更新后的所述用户数据写入所述第二存储单元的所述数据区的步骤之后,所述方法进一步包括: 读取存储至所述第二存储单元的所述用户数据; 根据读取出的所述用户数据判断所述第二存储单元是否存在坏块; 若所述第二存储单元存在坏块,则继续执行依序查找并得到靠近所述第一存储单元的空闲的所述存储单元的操作。4.根据权利要求1所述的数据存储方法,其特征在于,所述将更新后的所述用户数据存储至所述第二存储单元的步骤之前,所述方法进一步包括: 判断更新后的所述用户数据是否大于所述闪存存储设备中存储块的大小; 若所述用户数据大于所述存储块的大小,则对所述用户数据进行压缩操作以使压缩后的所述用户数据小于所述存储块的大小。5.根据权利要求1所述的数据存储方法,其特征在于,当所述数据存储区包括至少两个存储块时,所述将所述第一存储单元的所述状态标志从有效状态更新为废弃状态的步骤之后,所述方法进一步包括: 判断所述第一存储单元和所述第二存储单元是否处于同一存储块中; 若所述第一存储单元和所述第二存储单元不在同一存储块中,对所述第一存储单元所在的所述存储块进行擦除操作。6.根据权利要求1所述的数据存储方法,其特征在于,所述获取保存有最新所述用户数据的一第一存储单元的步骤具体为: 依次读取所述数据存储区中各所述存储单元的所述状态标志; 获取所述状态标志位为所述有效状态对应的所述存储单元作为保存有最新所述用户数据的所述第一存储单元。7.根据权利要求1所述的数据存储方法,其特征在于,所述依序查找并得到靠近所述第一存储单元的空闲一第二存储单元的步骤包括: 依次读取所述第一存储单元之后的所述存储单元的状态标志; 获取所述状态标志位为全新状态对应的所述存储单元作为靠近所述第一存储单元的空闲的所述第二存储单元。8.根据权利要求1所述的数据存储方法,其特征在于,所述用户数据以结构体的形式进行存储,所述结构体至少包括所述存储块的数量、所述存储块中所述存储单元的大小、所述存储块中所述存储单元的数量。9.根据权利要求1所述的数据存储方法,其特征在于,所述每一所述存储单元的标识区依次包括状态标志、写次数标志、保留位和身份编码。10.一种数据存储装置,其特征在于,所述数据存储装置包括闪存存储设备和处理器; 其中,所述闪存存储设备包括用于存储至少一种用户数据的数据存储区,每一所述数据存储区至少包括一个存储块,所述存储块包括依序排列的多个相同结构的存储单元,每一所述存储单元包括标识区和数据区,所述标识区至少包括状态标志; 其中,所述处理器用于获取保存有最新所述用户数据的一第一存储单元;依序查找并得到靠近所述第一存储单元的空闲的一第二存储单元;将更新后的所述用户数据存储至所述第二存储单元,并将所述第二存储单元的所述状态标志更新为有效状态;将所述第一存储单元的所述状态标志从有效状态更新为废弃状态。11.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据存储至所述第二存储单元的操作包括: 所述处理器将所述第二存储单元的所述状态标志更新为准写状态;将更新后的所述用户数据写入所述第二存储单元的所述数据区;将所述第二存储单元的所述状态标志从所述准写状态更新为所述有效状态。12.根据权利要求11所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据写入所述第二存储单元的所述数据区的操作之后,所述处理器还用于读取存储至所述第二存储单元的所述用户数据;根据读取出的所述用户数据判断所述第二存储单元是否存在坏块;若所述第二存储单元存在坏块,则继续执行依序查找并得到靠近所述第一存储单元的空闲的所述存储单元的操作。13.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行将更新后的所述用户数据存储至所述第二存储单元的操作之前,所述处理器还用于判断更新后的所述用户数据是否大于所述闪存存储设备中存储块的大小;若所述用户数据大于所述存储块的大小,则对所述用户数据进行压缩操作以使压缩后的所述用户数据小于所述存储块的大小。14.根据权利要求10所述的数据存储装置,其特征在于,当所述数据存储区包括至少两个存储块时,所述处理器执行将所述第一存储单元的所述状态标志从有效状态更新为废弃状态的操作之后,所述处理器还用于判断所述第一存储单元和所述第二存储单元是否处于同一存储块中;若所述第一存储单元和所述第二存储单元不在同一存储块中,对所述第一存储单元所在的所述存储块进行擦除操作。15.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行获取保存有最新所述用户数据的一第一存储单元的操作具体为: 所述处理器依次读取所述数据存储区中各所述存储单元的所述状态标志,获取所述状态标志位为所述有效状态对应的所述存储单元作为保存有最新所述用户数据的所述第一存储单元。16.根据权利要求10所述的数据存储装置,其特征在于,所述处理器执行依序查找并得 到靠近所述第一存储单元的空闲的一第二存储单元的操作具体为:所述处理器依次读取所述第一存储单元之后的所述存储单元的状态标志,获取所述状 态标志位为全新状态对应的所述存储单元作为靠近所述第一存储单元的空闲的所述第二 存储单元。17.根据权利要求10所述的数据存储装置,其特征在于,所述用户数据以结构体的形式 进行存储,所述结构体至少包括所述存储块的数量、所述存储块中所述存储单元的大小、所 述存储块中所述存储单元的数量。18.根据权利要求10所述的数据存储装置,其特征在于,所述每一所述存储单元的标识 区依次包括状态标志、写次数标志、保留位和身份编码。
【文档编号】G06F3/06GK106020735SQ201610380158
【公开日】2016年10月12日
【申请日】2016年5月31日
【发明人】徐兵辉
【申请人】晨星半导体股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1