CN117577154A - 闪存模拟电可擦除可编程只读存储器的方法及相关装置 - Google Patents
闪存模拟电可擦除可编程只读存储器的方法及相关装置 Download PDFInfo
- Publication number
- CN117577154A CN117577154A CN202311613844.9A CN202311613844A CN117577154A CN 117577154 A CN117577154 A CN 117577154A CN 202311613844 A CN202311613844 A CN 202311613844A CN 117577154 A CN117577154 A CN 117577154A
- Authority
- CN
- China
- Prior art keywords
- block
- flash
- record
- eeprom
- index
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000013507 mapping Methods 0.000 claims abstract description 30
- 230000004048 modification Effects 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 13
- 238000011084 recovery Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002035 prolonged effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例提供了一种闪存模拟电可擦除可编程只读存储器的方法及相关装置,用于利用闪存FLASH来模拟电可擦除可编程只读存储器EEPROM,从而来提升闪存FLASH的擦写寿命。本发明实施例方法包括:将闪存FLASH分割为至少两个块,其中,每个块的容量与电可擦除可编程只读存储器EEPROM的容量相同;将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
Description
技术领域
本发明涉及嵌入式通信技术领域,尤其涉及一种闪存模拟电可擦除可编程只读存储器的方法。
背景技术
EEPROM:是一种非易失性存储器,可以在断电后保留数据,且可以按字节或字进行读写操作,具有较高的擦写寿命(百万次以上)。
FLASH:一种非易失性存储器,具有较大的容量,但是擦写寿命较低(十万次左右),且只能按块进行擦除操作,块的大小通常以KB为单位。而如何使得FLASH具有较高的擦写寿命,是亟待解决的一个问题。
发明内容
本发明实施例提供了一种闪存模拟电可擦除可编程只读存储器的方法及相关装置,用于利用闪存FLASH来模拟电可擦除可编程只读存储器EEPROM,从而来提升闪存FLASH的擦写寿命。
本发明实施例提供了第一方面提供了一种闪存模拟电可擦除可编程只读存储器的方法,包括:
将闪存FLASH分割为至少两个块,其中,每个块的容量与电可擦除可编程只读存储器EEPROM的容量相同;
将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
可选地,所述将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中,包括:
注册FLASH驱动;
利用所述FLASH驱动对所述FLASH执行初始化操作,其中,所述初始化操作至少包括设置所述FLASH块的容量、页的容量和所述FLASH擦除区的容量;
利用所述FLASH驱动创建ROM文件,并将所述ROM文件确定为所述EEPROM的索引;
将所述FLASH驱动与所述EEPROM的索引执行关联存储,以将所述FLASH每个块中的数据空间映射至所述EEPROM的索引中。
可选地,当所述数据操作为写操作时,所述通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作,包括:
将所述至少两个块中的第一个块作为活动块;
在所述活动块中写入至少一条记录,其中,每条记录包括一个或多个变量及变量值,以及元数据段;
当所述活动块的空间不足以写入新记录时,将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中;
擦除所述第一块中的记录,并将所述第二个块设置为活动块。
可选地,所述元数据段包括记录状态字段、记录标识字段和记录大小字段,其中,所述记录状态字段的长度为所述FLASH的ECC校验基长度的整数倍;
所述记录状态字段用于表示记录是否有效,所述记录标识字段用于表示记录中所包含的变量,所述记录大小字段用于表示记录中数据的字节数。
可选地,当所述数据操作为修改操作时,所述通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作,包括:
从所述记录标识字段中获取待修改的变量字段;
在所述待修改的变量字段中写入修改后的数值;
将修改后的变量字段作为新的记录写入所述活动块中,并将修改前的记录标识为无效记录,将修改后的记录标识为有效记录。
可选地,所述将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中,包括:
将所述活动块中的每条有效记录的元数据先写入所述第二个块中;
再将所述活动块中的每条有效记录的数据写入至所述第二个块中;
判断所述每条有效记录是否成功写入至所述第二个块中;
若否,则针对每条有效记录,在所述第二个块中重复写入N次,并在N次失败后跳过写入失败的记录,其中,所述N≥2。
可选地,所述方法还包括:
在每个块的头部设置块状态字段,所述块状态字段至少包括所述块是否已执行初始化、所述块是否为活动块,所述块是否需要执行擦除操作或执行恢复操作;
当对所述每个块执行上电或复位操作时,遍历所述每个块,并根据所述每个块的块状态字段,对所述每个块执行与块状态字段相匹配的操作。
本申请实施例第二方面提供了一种闪存模拟电可擦除可编程只读存储器的装置,所述装置包括:
分割单元,用于将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;
映射单元,用于将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
执行单元,用于通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
可选地,映射单元,具体用于:
注册FLASH驱动;
利用所述FLASH驱动对所述FLASH执行初始化操作,其中,所述初始化操作至少包括设置所述FLASH块的容量、页的容量和所述FLASH擦除区的容量;
利用所述FLASH驱动创建ROM文件,并将所述ROM文件确定为所述EEPROM的索引;
将所述FLASH驱动与所述EEPROM的索引执行关联存储,以将所述FLASH每个块中的数据空间映射至所述EEPROM的索引中。
可选地,当所述数据操作为写操作时,执行单元具体用于:
将所述至少两个块中的第一个块作为活动块;
在所述活动块中写入至少一条记录,其中,每条记录包括一个或多个变量及变量值,以及元数据段;
当所述活动块的空间不足以写入新记录时,将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中;
擦除所述第一块中的记录,并将所述第二个块设置为活动块。
可选地,所述元数据段包括记录状态字段、记录标识字段和记录大小字段,其中,所述记录状态字段的长度为所述FLASH的ECC校验基长度的整数倍;
所述记录状态字段用于表示记录是否有效,所述记录标识字段用于表示记录中所包含的变量,所述记录大小字段用于表示记录中数据的字节数。
可选地,当所述数据操作为修改操作时,执行单元,具体用于:
从所述记录标识字段中获取待修改的变量字段;
在所述待修改的变量字段中写入修改后的数值;
将修改后的变量字段作为新的记录写入所述活动块中,并将修改前的记录标识为无效记录,将修改后的记录标识为有效记录。
可选地,执行单元,具体用于:
将所述活动块中的每条有效记录的元数据先写入所述第二个块中;
再将所述活动块中的每条有效记录的数据写入至所述第二个块中;
判断所述每条有效记录是否成功写入至所述第二个块中;
若否,则针对每条有效记录,在所述第二个块中重复写入N次,并在N次失败后跳过写入失败的记录,其中,所述N≥2。
可选地,所述装置还包括:
设置单元,用于在每个块的头部设置块状态字段,所述块状态字段至少包括所述块是否已执行初始化、所述块是否为活动块,所述块是否需要执行擦除操作或执行恢复操作;
遍历单元,用于当对所述每个块执行上电或复位操作时,遍历所述每个块,并根据所述每个块的块状态字段,对所述每个块执行与块状态字段相匹配的操作。
本申请实施例第三方面提供了一种计算机装置,包括处理器,所述处理器在执行存储于存储器上的计算机程序时,用于实现申请实施例第一方面提供的闪存模拟电可擦除可编程只读存储器的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,用于实现申请实施例第一方面提供的闪存模拟电可擦除可编程只读存储器的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
本申请实施例中,通过将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
因为EEPROM是按照字节对数据执行操作的,故通过EEPROM的索引和FLASH块之间的映射关系,既可以实现通过字节实现在FLASH块和页中的数据操作,从而使得FLASH块具有和EEPROM相似的读写特性,也即提升了FLASH块的擦写寿命。
附图说明
图1为本申请实施例中闪存模拟电可擦除可编程只读存储器的方法的一个实施例示意图;
图2为本申请图1实施例中步骤102的细化步骤;
图3为本申请图1实施例中步骤103的细化步骤;
图4为本申请实施例中块和记录的示意图;
图5为本申请图1实施例中步骤103的另一细化步骤;
图6为本申请实施例中写入新记录的过程示意图;
图7为本申请实施例中闪存模拟电可擦除可编程只读存储器的装置的一个实施例示意图。
具体实施方式
本发明实施例提供了一种闪存模拟电可擦除可编程只读存储器的方法及相关装置,用于利用闪存FLASH来模拟电可擦除可编程只读存储器EEPROM,从而来提升闪存FLASH的擦写寿命。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为方便理解,下面对本申请实施例中闪存模拟电可擦除可编程只读存储器的方法进行描述,请参阅图1,本申请实施例中闪存模拟电可擦除可编程只读存储器的方法的一个实施例,包括:
101、将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;
为了提升FLASH的擦写寿命,本申请实施例中将闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;
因为FLASH为块页结构,在通过FLASH存储数据时,FLASH的寻址方式是通过块地址,这也就是说在访问FLASH时,需要先擦除这个块,再写入数据,而EEPROM的寻址方式是通过字节地址,也即在访问EEPROM时,可以直接读取和写入指定的字节。
故本申请实施例将FLASH分割为至少两个块,并通过FLASH中的每个块来模拟EEPROM中数据的读写方式。
102、将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
为了利用FLASH块来模拟EEPROM,也即通过操作EEPROM的方式来访问FLASH块,本申请实施例将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中。
具体的,本申请中的EEPROM的索引为提取加载至内存中的索引,且此处的EEPROM为一个模拟的EEPROM(也即一个假的EEPROM),至于将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中的过程将在下面的实施例中进行描述,此处不再赘述。
103、通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
因为本申请实施例将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中,故本申请实施例在通过调用接口(如API)接口访问EEPROM的索引时,即可按照索引中的数据的范围与FLASH块和页之间的映射范围,来访问FLASH块的数据空间,进一步根据调用接口实现在FLASH块的数据空间中对数据的读操作和写操作。
为方便理解,下面举例说明:
假设在EEPROM的索引中,规定第1-512字节,对应FLASH第一个块中第1-15页的数据范围,那么在通过EEPROM的索引操作第12-512字节范围内的数据时,即可按照映射关系,对应在FLASH第一个块的第1-15页的数据范围中操作对应的数据,这里的数据操作包括对数据的增加操作、删除操作、改动操作和查看操作。
本申请实施例中,通过将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
因为EEPROM是按照字节对数据执行操作的,故通过EEPROM的索引和FLASH块之间的映射关系,既可以实现通过字节实现在FLASH块和页中的数据操作,从而使得FLASH块具有和EEPROM相似的读写特性,从而提升了FLASH块的擦写寿命。
基于图1所述的实施例,在将FLASH分割为至少两个块以后,本申请实施例还在每个块的头部设置块状态字段,其中,块状态字段至少包括块是否已执行初始化、块是否为活动块,以及块是否需要擦除操作或恢复操作,从而使得每个块在数据操作的过程中宕机时,可以在对每个块执行上电或复位的操作时,遍历每个块,并根据每个块的块状态字段,对每个块执行与块状态字段相匹配的操作,以防止FLASH在突然断电或宕机时,块中的数据出错,而本申请实施例在每个块上电或复位以后,能够根据每个块的块状态字段,对每个块执行对应块状态的操作,从而保证了FLASH块中数据的正确性。
基于图1中的步骤102,下面对步骤102做详细描述,请参阅图2,图2为步骤102的细化步骤:
201、注册FLASH驱动;
具体的,在将FLASH每个块中的数据空间映射至所述EEPROM的索引中之前,需要先注册一个FLASH驱动,其中,在注册FLASH驱动时,可以通过MTD框架提供的函数注册一个MTD驱动,而具体的注册过程,与现有技术中描述的一致,此处不再赘述。
202、利用所述FLASH驱动对所述FLASH执行初始化操作,其中,所述初始化操作至少包括设置所述FLASH块的容量、页的容量和所述FLASH擦除区的容量;
注册了FLASH驱动以后,为了将FLASH每个块中的数据空间映射至所述EEPROM的索引中,需要先利用FLASH驱动对所述FLASH执行初始化操作,这里的初始化操作至少包括设置FLASH块的容量、页的容量和所述FLASH擦除区的容量,此外,初始化操作还包括分配驱动注册数据的内存空间。
203、利用所述FLASH驱动创建ROM文件,并将所述ROM文件确定为所述EEPROM的索引;
为了获取EEPROM索引,本申请实施例利用FLASH驱动一个创建ROM文件,其中,创建的ROM文件是仿照EEPROM索引创建的,故在创建了ROM文件以后,则将ROM文件确定为所述EEPROM的索引。
204、将所述FLASH驱动与所述EEPROM的索引执行关联存储,以将所述FLASH每个块中的数据空间映射至所述EEPROM的索引中。
利用FLASH驱动完成对FLASH的初始化操作后,本申请实施例将FLASH驱动与EEPROM的索引执行关联存储,以将FLASH每个块中的数据空间映射至所述EEPROM的索引中。
因为EEPROM是按照字节处理数据的,故本申请实施例中的映射关系,可以是将EEPROM中第1-X字节,映射至FLASH的第一个块的第1-X页中,将EEPROM中第X+1-2X字节,映射至FLASH的第一个块的第X+1-2X页中,此处对FLASH每个块中的数据空间和EEPROM索引中的数据空间之间的映射关系不做具体限制。
本申请实施例中对将FLASH每个块中的数据空间映射至EEPROM的索引中的过程做了详细描述,且通过FLASH驱动创建了EEPROM索引,从而提升了获取EEPROM索引的便捷性,也对应地提升了映射过程的便捷性。
基于图1所述的实施例,下面对数据操作为写操作时,步骤103的过程做详细描述,请参阅图3,图3为步骤103的细化步骤:
301、将所述至少两个块中的第一个块作为活动块;
因为FLASH中存有至少两个块,故本申请实施例将至少两个块中的第一个块作为活动块,并在活动块中执行写操作。
302、在所述活动块中写入至少一条记录,其中,每条记录包括一个或多个变量及变量值,以及元数据段;
具体的,本申请实施例在活动块中写数据时,是以记录的形式写数据的,也即每次在活动块中写入一条数据时,在相当于在活动块中写入一条记录,为方便理解,图4给出了块和记录的示意图。
具体地,本申请实施例中的每条记录都包括一个或多个变量及变量值,以及元数据段,而元数据段包括记录状态字段、记录标识字段和记录大小字段,其中,记录状态字段的长度为FLASH的ECC校验基长度的整数倍,以方便采用ECC校验基对FLASH中的记录进行校验。
进一步,记录状态字段用于表示记录是否有效,记录标识字段用于表示记录中所述包含的变量,而记录大小字段用于表示记录中数据的字节数。故在判断每个记录是否有效时,通过记录的状态字段即可确定当前记录的状态(也即当前记录为有效记录还是无效记录)。
303、当所述活动块的空间不足以写入新记录时,将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中;
在对活动块执行写操作的过程中,若发现活动块的空间不足以写入新的记录,则将活动块中的有效记录复制并存储至至少两个块的第二个块中,并将第二个块作为活动块。
具体地,在将活动块的每条有效记录存储至第二个块的过程中,为了防止数据写入失败,可以按照以下步骤在第二个块中写入数据:
A、将活动块中的每条有效记录的元数据先写入第二个块中;
为了避免元数据段出现在多个有效记录中,从而导致数据读取失败的情形,本申请实施例先将活动块的每条有效记录的元数据写入第二个块中,并将第一块中的记录设置为无效记录。
B、再将所述活动块中的每条有效记录的数据写入至所述第二个块中;
将活动块中每条有效记录中的元数据写入第二个块中以后,再将每条记有效记录中的数据写入至第二个块中。
C、判断所述每条有效记录是否成功写入至所述第二个块中;
为了确保每条有效记录都成功写入第二个块中,本申请实施例在将每条有效记录写入第二个块中以后,判断每条有效记录是否在第二个块中写入成功,若是,则结束流程,若否,则执行步骤D。
D、针对每条有效记录,在所述第二个块中重复写入N次,并在N次失败后跳过写入失败的记录,其中,所述N≥2。
若在第二个块中没有成功写入每条有效记录,则针对每条有效记录,在第二个块中重复写入N次,并在N次都失败后跳过写入失败的记录,其中,所述N≥2。
也就是说,本申请实施例在将第一块中的有效记录写入至第二个块的过程中,为了确保每条有效记录都可以写入成功,本申请实施例在每条有效记录写入失败后,都重复写入N次,从而保证了在第二个块中写入有效记录的成功率。
304、擦除所述第一块中的记录,并将所述第二个块设置为活动块。
因为第一块中写了很多记录,而这些记录包括有效记录和无效记录,故在将第一块中的有效记录复制并存储至第二块的过程中,可以节省出无效记录的空间,从而提升了FLASH块中数据空间的利用率。
而将第一块中的记录复制并存储至第二块中以后,则擦除第一块中的记录,并将第二个块设置为活动块。
为方便理解,下面对将FLASH块中的数据空间映射至EEPROM索引中以后,FLASH的刷写寿命进行说明:
假设FLASH中1页的数据为512DB,而每次要写入200byte的数据,则针对FLASH而言,最大的刷写次数为2*(512*2-2)/200=10,其中,公式中的2*表示有备份空间,*2表示DB转为byte要乘2,-2表示最后两个byte不能存数据,故FLASH一页可以写10次这个值,而1万次是FLASH的通用刷写次数,故当FLASH中1页的数据为512DB时,若需要刷写200byte的数据,最大刷写次数为10w次,也即相当于软件层上,使得FLASH的刷写寿命扩大了10倍。
本申请实施例中,在将FLASH块中刷写数据的过程做了详细描述,且通过至少两个块相互复制存储有效记录的过程,可以实现对FLASH刷写寿命的延长,也提升了FLASH块中的空间利用率。
基于图1至3所述的实施例,当数据操作为修改数据时,对步骤103做详细描述,请参阅图5,图5为步骤103的另一细化步骤:
501、从所述记录标识字段中获取待修改的变量字段;
本申请实施例在对数据进行修改时,不是在原有记录中进行修改,而是重新写入一条新的记录,为方便理解,图6给出了写入新记录的过程示意图。
而为了在变量字段中写入新的数值,本申请实施例需要先从记录标识字段中获取待修改的变量字段,并针对待修改的变量字段执行步骤502。
其中在记录标识字段中可以通过查找的方式,来获取待修改的变量字段。
502、在所述待修改的变量字段中写入修改后的数值;
得到待修改的变量字段以后,则在待修改的变量字段中写入修改后的数值,并执行步骤503。
503、将修改后的变量字段作为新的记录写入所述活动块中,并将修改前的记录标识为无效记录,将修改后的记录标识为有效记录。
本申请实施例在对数据进行修改时,不是在原有记录中进行修改,而是重新写入一条新的记录,故本申请实施例将修改后的变量字段作为新的记录写入活动块中,并将修改前的记录表示为无效记录,而将修改后的记录标识为有效记录,从而防止读取数据的出错。
本申请实施例对在活动块中修改数据的过程做了详细描述,且本申请实施例通过写入新记录的方式来修改数据,而非原地擦写的方式来修改数据,从而提升了修改数据的便捷性,也相当于提升了FLASH块的寿命。
上面对本申请实施例中闪存模拟电可擦除可编程只读存储器的方法做了详细描述,下面接着对本申请实施例中闪存模拟电可擦除可编程只读存储器的装置做详细描述,请参阅图7,本申请实施例中闪存模拟电可擦除可编程只读存储器的装置的一个实施例,包括:
分割单元701,用于将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;
映射单元702,用于将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
执行单元703,用于通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
可选地,映射单元702,具体用于:
注册FLASH驱动;
利用所述FLASH驱动对所述FLASH执行初始化操作,其中,所述初始化操作至少包括设置所述FLASH块的容量、页的容量和所述FLASH擦除区的容量;
利用所述FLASH驱动创建ROM文件,并将所述ROM文件确定为所述EEPROM的索引;
将所述FLASH驱动与所述EEPROM的索引执行关联存储,以将所述FLASH每个块中的数据空间映射至所述EEPROM的索引中。
可选地,当所述数据操作为写操作时,执行单元703具体用于:
将所述至少两个块中的第一个块作为活动块;
在所述活动块中写入至少一条记录,其中,每条记录包括一个或多个变量及变量值,以及元数据段;
当所述活动块的空间不足以写入新记录时,将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中;
擦除所述第一块中的记录,并将所述第二个块设置为活动块。
可选地,所述元数据段包括记录状态字段、记录标识字段和记录大小字段,其中,所述记录状态字段的长度为所述FLASH的ECC校验基长度的整数倍;
所述记录状态字段用于表示记录是否有效,所述记录标识字段用于表示记录中所包含的变量,所述记录大小字段用于表示记录中数据的字节数。
可选地,当所述数据操作为修改操作时,执行单元703,具体用于:
从所述记录标识字段中获取待修改的变量字段;
在所述待修改的变量字段中写入修改后的数值;
将修改后的变量字段作为新的记录写入所述活动块中,并将修改前的记录标识为无效记录,将修改后的记录标识为有效记录。
可选地,执行单元703,具体用于:
将所述活动块中的每条有效记录的元数据先写入所述第二个块中;
再将所述活动块中的每条有效记录的数据写入至所述第二个块中;
判断所述每条有效记录是否成功写入至所述第二个块中;
若否,则针对每条有效记录,在所述第二个块中重复写入N次,并在N次失败后跳过写入失败的记录,其中,所述N≥2。
可选地,所述装置还包括:
设置单元704,用于在每个块的头部设置块状态字段,所述块状态字段至少包括所述块是否已执行初始化、所述块是否为活动块,所述块是否需要执行擦除操作或执行恢复操作;
遍历单元705,用于当对所述每个块执行上电或复位操作时,遍历所述每个块,并根据所述每个块的块状态字段,对所述每个块执行与块状态字段相匹配的操作。
本申请实施例中,通过分割单元701将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;通过映射单元702将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;通过执行单元703调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
因为EEPROM是按照字节对数据执行操作的,故通过EEPROM的索引和FLASH块之间的映射关系,既可以实现通过字节实现在FLASH块和页中的数据操作,从而使得FLASH块具有和EEPROM相似的读写特性,从而提升了FLASH块的擦写寿命。
上面从模块化功能实体的角度对本发明实施例中的闪存模拟电可擦除可编程只读存储器的装置进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:
该计算机装置用于实现闪存模拟电可擦除可编程只读存储器的装置的功能,本发明实施例中计算机装置一个实施例包括:
处理器以及存储器;
存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,用于执行如图1至图6中的方法。
可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述闪存模拟电可擦除可编程只读存储器的装置中的执行过程。例如,所述计算机程序可以被分割成上述闪存模拟电可擦除可编程只读存储器的装置中的各单元,各单元可以实现如上述相应闪存模拟电可擦除可编程只读存储器的装置说明的具体功能。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现闪存模拟电可擦除可编程只读存储器的装置的功能,其上存储有计算机程序,计算机程序被处理器执行时,处理器,用于执行如图1至图6中的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种闪存模拟电可擦除可编程只读存储器的方法,其特征在于,所述方法包括:
将闪存FLASH分割为至少两个块,其中,每个块的容量与电可擦除可编程只读存储器EEPROM的容量相同;
将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
2.根据权利要求1所述的方法,其特征在于,所述将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中,包括:
注册FLASH驱动;
利用所述FLASH驱动对所述FLASH执行初始化操作,其中,所述初始化操作至少包括设置所述FLASH块的容量、页的容量和所述FLASH擦除区的容量;
利用所述FLASH驱动创建ROM文件,并将所述ROM文件确定为所述EEPROM的索引;
将所述FLASH驱动与所述EEPROM的索引执行关联存储,以将所述FLASH每个块中的数据空间映射至所述EEPROM的索引中。
3.根据权利要求1所述的方法,其特征在于,当所述数据操作为写操作时,所述通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作,包括:
将所述至少两个块中的第一个块作为活动块;
在所述活动块中写入至少一条记录,其中,每条记录包括一个或多个变量及变量值,以及元数据段;
当所述活动块的空间不足以写入新记录时,将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中;
擦除所述第一块中的记录,并将所述第二个块设置为活动块。
4.根据权利要求3所述的方法,其特征在于,所述元数据段包括记录状态字段、记录标识字段和记录大小字段,其中,所述记录状态字段的长度为所述FLASH的ECC校验基长度的整数倍;
所述记录状态字段用于表示记录是否有效,所述记录标识字段用于表示记录中所包含的变量,所述记录大小字段用于表示记录中数据的字节数。
5.根据权利要求4所述的方法,其特征在于,当所述数据操作为修改操作时,所述通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作,包括:
从所述记录标识字段中获取待修改的变量字段;
在所述待修改的变量字段中写入修改后的数值;
将修改后的变量字段作为新的记录写入所述活动块中,并将修改前的记录标识为无效记录,将修改后的记录标识为有效记录。
6.根据权利要求3所述的方法,其特征在于,所述将所述活动块中的有效记录复制并存储至所述至少两个块的第二个块中,包括:
将所述活动块中的每条有效记录的元数据先写入所述第二个块中;
再将所述活动块中的每条有效记录的数据写入至所述第二个块中;
判断所述每条有效记录是否成功写入至所述第二个块中;
若否,则针对每条有效记录,在所述第二个块中重复写入N次,并在N次失败后跳过写入失败的记录,其中,所述N≥2。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在每个块的头部设置块状态字段,所述块状态字段至少包括所述块是否已执行初始化、所述块是否为活动块,所述块是否需要执行擦除操作或执行恢复操作;
当对所述每个块执行上电或复位操作时,遍历所述每个块,并根据所述每个块的块状态字段,对所述每个块执行与块状态字段相匹配的操作。
8.一种闪存模拟电可擦除可编程只读存储器的装置,其特征在于,所述装置包括:
分割单元,用于将所述闪存FLASH分割为至少两个块,其中,每个块的容量与所述电可擦除可编程只读存储器EEPROM的容量相同;
映射单元,用于将FLASH块的数据空间映射至加载至内存中的所述EEPROM的索引中;
执行单元,用于通过调用接口,访问所述EEPROM的索引,使得通过所述EEPROM的索引在所述FLASH块的数据空间中执行数据操作。
9.一种计算机装置,包括处理器,其特征在于,所述处理器在执行存储于存储器上的计算机程序时,用于实现如权利要求1至7中任一项所述的闪存模拟电可擦除可编程只读存储器的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,用于实现如权利要求1至7中任一项所述的闪存模拟电可擦除可编程只读存储器的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311613844.9A CN117577154A (zh) | 2023-11-29 | 2023-11-29 | 闪存模拟电可擦除可编程只读存储器的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311613844.9A CN117577154A (zh) | 2023-11-29 | 2023-11-29 | 闪存模拟电可擦除可编程只读存储器的方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117577154A true CN117577154A (zh) | 2024-02-20 |
Family
ID=89864005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311613844.9A Pending CN117577154A (zh) | 2023-11-29 | 2023-11-29 | 闪存模拟电可擦除可编程只读存储器的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117577154A (zh) |
-
2023
- 2023-11-29 CN CN202311613844.9A patent/CN117577154A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9842030B2 (en) | Data storage device and flash memory control method | |
US10437737B2 (en) | Data storage device | |
CN109783017B (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
KR101002978B1 (ko) | 플래시 메모리 관리 시스템 및 방법 | |
CN101288054B (zh) | 闪存管理方法、系统、存储设备、以及闪存设备 | |
CN109902034B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
CN103608866A (zh) | 用于闪存存储器的数据擦除方法及装置 | |
US11354192B2 (en) | Data storage devices and methods for firmware failure prevention | |
CN109976669B (zh) | 一种边缘存储方法、装置和存储介质 | |
US10606744B2 (en) | Method for accessing flash memory module and associated flash memory controller and electronic device | |
CN107391038B (zh) | 资料存储型闪存的数据写入方法、闪存及存储介质 | |
US20080301393A1 (en) | Apparatus and method of processing data of non-volatile memory | |
CN113704140A (zh) | 一种固态硬盘地址映射方法及装置 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
JP5895565B2 (ja) | Icカード、及びプログラム | |
CN111324414A (zh) | Nvm存储介质模拟器 | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
CN110209349B (zh) | 数据处理的方法及终端设备 | |
CN111694580A (zh) | 存储设备升级及初始化的方法、装置、电子设备 | |
CN117577154A (zh) | 闪存模拟电可擦除可编程只读存储器的方法及相关装置 | |
CN109960611B (zh) | 数据恢复的方法、装置、电子设备及机器可读存储介质 | |
CN114005476A (zh) | 闪存器、闪存擦写计数方法、电子设备及计算机存储介质 | |
CN109002265B (zh) | 一种数据处理的方法以及相关装置 | |
TWI633434B (zh) | 管理固態硬碟之方法、系統及電腦可讀取媒體 | |
CN111435331A (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |