CN105573858B - 数据的保存方法和电可擦编程只读存储器 - Google Patents
数据的保存方法和电可擦编程只读存储器 Download PDFInfo
- Publication number
- CN105573858B CN105573858B CN201410539372.1A CN201410539372A CN105573858B CN 105573858 B CN105573858 B CN 105573858B CN 201410539372 A CN201410539372 A CN 201410539372A CN 105573858 B CN105573858 B CN 105573858B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- data field
- state
- field
- 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
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种数据的保存方法和电可擦编程只读存储器,其中,该方法包括:预设两个互为备份地址的第一地址和第二地址在电可擦编程只读存储器EEPROM中,第一地址和第二地址分别对应一个数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态。本发明解决了现有技术在数据保存的过程中,提供一种先将目标地址对应的数据区进行擦写,然后再备份地址对应的数据区中进行与目标地址对应的数据区相同的擦写过程,使得数据保存过程耗费时间长、资源浪费较大的问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据的保存方法和电可擦编程只读存储器。
背景技术
现有技术提供的电可擦编程只读存储器EEPROM在一个擦写周期内完成的数据保存操作可以包括先擦除操作再编程操作两部分,擦除和编程的都是针对同一个地址对应的数据区中的内容进行操作,在该地址对应的数据区进行保存操作过程中,EEPROM内的数据状态的过程如图1。如图1所示,在针对当前地址对应的数据区完成的一个擦写周期中,在进入擦除的工作状态之前,该地址对应的数据区的数据状态为数据有效态,表示当前地址对应的数据区中保存有数据,在进入擦除的工作状态之后,系统对该地址对应的数据区中的数据内容进行擦除,在擦除的中间过程中该地址对应的数据区的数据状态为数据不定态,表示当前地址对应的数据区中的数据处于正在擦除还没有擦除成功的状态,在将数据完全擦除成功之后,在擦除的中间过程中该地址对应的数据区的数据状态为数据擦除态,表示当前地址对应的数据区中的数据被完全擦除,并擦除成功。此时可以获知的是,在该擦写周期内,在完成上述擦除操作之后,进入编程的工作状态,即在该地址对应的数据区写入新的数据,该过程可以看做是擦除过程的逆过程,在编程的过程中,该地址对应的数据区的数据状态从擦除态转换为不定态,最后转换为数据有效态,表示当前地址对应的数据区从编写数据到编程完全并编写成功的整个过程。
此处需要注意到的是,在图1所示的方案中,当前地址对应的数据区中的数据在处于不定态或擦除态时,如果擦除或者编程操作由于其它原因被中断,此时,EEPROM内保留的数据成了不定态或擦除态,从而出现数据丢失现象。
为避免出现上述类型的数据丢失,现有技术可以采用备份机制,即提供两个物理上独立,逻辑上关联的地址,两个地址分别对应一个数据区,可以将数据分别写入两个不同的地址的数据区,这两个地址分别定义为目标地址和备份地址,其中,在目标地址对应的数据区中的数据内容被中断或者错误的情况下,可以采用备份地址对应的数据区中的数据内容对目标地址中的数据进行恢复。如图2a和图2b所通过的备份方案,目标地址和备份地址中完成的数据保存的过程与图1所示的流程相同,数据区的数据状态的变化过程也相同,不同之处在于,通过在目标地址对应的数据区中完成一个擦写周期的数据保存过程之后,系统会再消耗一个擦写周期,完成在备份地址对应的数据区中备份一套与目标地址对应的数据区中的相同的数据保存过程,具体的,是先在目标地址对应的数据区进行数据保存过程完成的擦除和编写操作,然后在备份地址对应的数据区中备份一套相同的数据。如图2a和图2b所示,无论何时操作中断,EEPROM至少保留一个有效数据。
分析可知,上述图2a和图2b所提供的备份方案,虽然可以针对擦写操作过程中出现异常的情况,提供一种采用备份内容进行数据恢复的方案,来保证数据的完整性,但这种备份数据的方法先将目标地址的进行擦写,然后改写备份地址的数据耗费时间长,资源耗费也较大。
针对现有技术在数据保存的过程中,提供一种先将目标地址对应的数据区进行擦写,然后在备份地址对应的数据区中进行与目标地址进行的数据区相同的擦写过程,使得数据保存过程耗费时间长、资源浪费较大的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种数据的保存方法及电可擦编程只读存储器,以至少解决现有技术中备份的方法先将目标地址的进行擦写,然后改写备份地址的数据耗费时间长的问题。
本发明提供了一种数据的保存方法,该方法包括:预设两个互为备份地址的第一地址和第二地址在电可擦编程只读存储器EEPROM中,第一地址和第二地址分别对应一个数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态。
本发明还提供了一种电可擦编程只读存储器,该电可擦编程只读存储器包括:两个互为备份的第一地址和第二地址的数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态。
通过本发明,采用预设两个互为备份地址的第一地址和第二地址在电可擦编程只读存储器EEPROM中,第一地址和第二地址分别对应一个数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态,解决了现有备份方式中先将目标地址的进行擦写,然后改写备份地址的数据耗费时间长的问题,实现了备份省时、可靠性延长的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据现有技术的EEPROM的写操作的示意图;
图2a是根据现有技术的EEPROM备份方案的示意图;
图2b是根据现有技术的EEPROM备份方案的示意图;
图3是根据本发明实施例一的数据的保存方法的流程图;
图4是根据本发明实施例一的数据的保存方法的事宜图;
图5是根据本发明实施例一的正常应用的流程图;以及
图6是根据本发明实施例一的异常应用的流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1
本实施例提供了一种数据的保存方法,结合图3和图4所示,该方法包括:
步骤S101,预设两个互为备份地址的第一地址和第二地址在电可擦编程只读存储器EEPROM中,第一地址和第二地址分别对应一个数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态。
具体的,结合图4所示,上述第一地址可以为A地址,上述第二地址可以为B地址,上述A地址和B地址分别对应EEPROM内两个数据区,上述电可擦编程只读存储器EEPROM在工作时先将A地址进行编程,将数据写入A地址对应的数据区,之后,再将B地址对应的数据区中的数据擦除。在进行下一次擦写操作的时候,系统先对B地址对应的数据区进行编程,将数据写入B地址对应的数据区,然后上述系统再对A地址对应的数据区的数据内容进行擦除,A地址和B地址对应的两个数据区互为备份。如图4所示,在任何一个擦写周期,如果A地址对应的数据区处于编程工作状态,则B地址对应的数据区则处于擦除的工作状态,如果A地址对应的数据区处于擦除工作状态,B地址对应的数据区则处于编程的工作状态,由此可知,上述两个数据区在时间轴内任何时刻内至少保留一个有效数据。本方法只需要1次编程和1次写入的时间就保证了实现了数据的更新,本方法可以确保在任一时刻,上述EEPROM内均至少有一个有效数据。
在本申请上述实施例一提供的方案中,采用两个地址对应的数据区互为备份数据进而进行擦写和编程,解决了现有技术在数据保存的过程中,提供一种先将目标地址对应的数据区进行擦写,然后再备份地址对应的数据区中进行与目标地址对应的数据区相同的擦写过程,使得数据保存过程耗费时间长、资源浪费较大的问题。
可选的,步骤S101中在预设两个互为备份地址的第一地址和第二地址之后,本实施例提供的方法还可以包括:
步骤S301,初始化电可擦编程只读存储器EEPROM,读取第一地址和第二地址对应的两个数据区中的数据。
具体的,本实施例提供的方法可以包括以下两个方案:
方案一:在第一地址对应的数据区的初始化数据状态为数据无效态的情况下,第一地址对应的数据区中的数据完整,且第二地址对应的数据区的初始化数据状态为数据有效态.
方案二:在第一地址对应的数据区的初始化数据状态为数据有效态的情况下,第二地址对应的数据区中的数据完整,且第二地址对应的数据区的初始化数据状态为数据无效态。
从上述两个方案可知,初始化上述两个地址对应的数据区,在上述两个数据区任意一个数据区中,如果其中一个数据区中的数据完整,则该数据区的初始化数据为数据无效态,另一个数据区的数据则处于数据有效态。具体的,如图5所示,本申请提供的方法先扫描A和B两个地址对应的数据区,如果A地址对应的数据区完整且处于有效态,B地址对应的数据区处于数据无效态即擦除态,则先对B地址对应的区进行编程,再对A地址对应的数据区进行擦除。
可选的,上述步骤S301中的初始化电可擦编程只读存储器EEPROM之后,本实施例提供的方法还可以包括:
步骤S401,检测任意一个擦写周期内第一地址和第二地址分别对应的数据区的数据状态,其中,先对数据状态为数据无效态的数据区进行编程,然后,擦除数据状态为数据有效态的数据区的数据内容。
可选的,步骤S401中检测任意一个擦写周期内第一地址和第二地址分别对应的数据区的数据状态的步骤可以包括:
步骤S501,进入第一个擦写周期,其中,在第一个擦写周期内,如果检测到第一地址对应的数据区的数据状态为数据无效态,则第一地址对应的数据区进入编程工作状态,在向第一地址对应的数据区编程数据完成之后,第一地址对应的数据区的数据状态转换为数据有效态,且第二地址对应的数据区进入擦除工作状态,擦除第二地址对应的数据区中已经保存的数据,此时,第二地址对应的数据区的数据状态从数据有效态转换为数据无效态;
具体的,在第一个擦写周期内,系统对第一地址对应的数据区进行编程,上述第一地址对应的数据区在编程之前的数据状态为无效态,系统的编程行为完成后,上述第一地址对应的数据区由无效态转换成数据有效态,系统再对第二地址对应的数据区进行擦除,上述第二地址对应的数据区在擦除前的状态为有效态,系统的擦除行为完成后,第二地址对应的数据区由数据有效态转换成无效态,由此可知,在任意一个时刻,第一地址和第二地址对应的两个数据区总有一个数据区保持数据有效态。
步骤S503,进入与第一个擦写周期相邻的第二个擦写周期,其中,在进入第二个擦写周期之后,第二地址对应的数据区的数据状态为数据无效态,则第二地址对应的数据区进入编程工作状态,在向第二地址对应的数据区编程数据完成之后,第二地址对应的数据区的数据状态转换为数据有效态,且第一地址对应的数据区进入擦除工作状态,擦除第一地址对应的数据区中已经保存的数据,此时,第一地址对应的数据区的数据状态从数据有效态转换为数据无效态。
具体的,在第二个擦写周期内,系统对第二地址对应的数据区进行编程,上述第二地址对应的数据区在编程之前的数据状态为无效态,系统的编程行为完成后,上述第二地址对应的数据区由无效态转换成数据有效态,系统再对第一地址对应的数据区进行擦除,上述第一地址对应的数据区在擦除前的状态为有效态,系统的擦除行为完成后,第一地址对应的数据区由数据有效态转换成无效态即擦除的工作状态,由此可知,在任意一个时刻,第一地址和第二地址对应的两个数据区总有一个数据区保持数据有效态。
可选的,步骤S401中检测任意一个擦写周期内第一地址和第二地址分别对应的数据区的数据状态的步骤可以包括:
步骤S601,进入第一个擦写周期,其中,在第一个擦写周期内,如果检测到第二地址对应的数据区的数据状态为数据无效态,则第二地址对应的数据区进入编程工作状态,在向第二地址对应的数据区编程数据完成之后,第二地址对应的数据区的数据状态转换为数据有效态,且第一地址对应的数据区进入擦除工作状态,擦除第一地址对应的数据区中已经保存的数据,此时,第一地址对应的数据区的数据状态从数据有效态转换为数据无效态;
步骤S602,进入与第一个擦写周期相邻的第二个擦写周期,其中,在进入第二个擦写周期之后,第一地址对应的数据区的数据状态为数据无效态,则第一地址对应的数据区进入编程工作状态,在向第一地址对应的数据区编程数据完成之后,第一地址对应的数据区的数据状态转换为数据有效态,且第二地址对应的数据区进入擦除工作状态,擦除第二地址对应的数据区中已经保存的数据,此时,第二地址对应的数据区的数据状态从数据有效态转换为数据无效态。
可选的,在进入任意一个擦写周期之前,本实施例提供的方法可以包含以下方案:
本实施例还提供了本申请正常应用和异常应用流程,其中正常应用流程为方案一,异常应用流程如方案二和方案三。
方案一:
具体的,如图5所示,在本申请提供的方法中,系统先扫描A和B两个地址对应的数据区,如果A地址对应的数据区完整且处于有效态,B地址对应的数据区处于数据无效态即擦除态,系统则先对B地址对应的数据区进行编程,再对A地址对应的数据区进行擦除。如果B对应的数据区完整且处于有效态,A地址对应的数据区处于数据无效态及擦除态,则系统对A地址对应的数据区进行编程,再对B地址对应的数据区进行擦除。
方案二:
系统扫描第一地址和第二地址对应的两个数据区中的数据是否完整,如果两个数据区中的数据都完整,则根据两个数据区的序号确定工作状态为擦除工作状态的数据区,对工作状态为擦除工作状态及无效数据区进行擦除操作。
具体的,结合图6,图6是本实施例提供的数据保存方法的异常处理流程图。可选的,在本实施例中,在数据区中有两个bit以上的序号,上述序号帮助辨识在备份过程中可能产生的两个有效数据,在数据中有数据完整性校验,以区别有效数据和不定态数据。
例如,地址A和地址B分别是上述第一地址和第二地址,在本方法中,系统先扫描上述地址A和地址B对应的数据区中的数据,如果上述两个数据区的内容都完整,系统则通过两个数据区的序号来判断出有效状态的数据区和无效的数据区即工作状态为擦除工作状态的数据区,并对上述无效的数据区进行擦除。
方案三:
系统扫描第一地址和第二地址对应的两个数据区中的数据是否完整,如果上述两个数据区其中一个数据区中的数据完整,另一个数据区中的数据不完整且数据不完整的数据区的工作状态为编程工作状态,系统则对数据不完整的数据区进行擦除操作。
具体的,方案二的流程如图6所示,上述编程工作状态可以是非擦除状态,A地址对应的数据区和B地址对应的数据区分别是上述第一地址和第二地址对应的数据区,在本方案中,系统先扫描上述A地址对应的数据区和B地址对应的数据区中的数据,如果A地址对应的数据区中的数据完整且B地址对应的数据区中的数据不完整而且B地址对应的数据区处于非擦除状态,系统则对B地址对应的数据区中的内容进行擦除。如果B地址对应数据区中的数据完整且A地址对应的数据区中的数据不完整而且A地址对应的数据处于非擦除状态,系统则对A地址对应的数据区中的内容进行擦除.
可选的,上述数据无效态可以包括:擦除态或不定态。
实施例2
本发明实施例还提供了一种电可擦编程只读存储器,结合图3和图4所示,该可擦编程只读存储器可以包括:
两个互为备份的第一地址和第二地址的数据区,上述两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态。
具体的,结合图4所示,上述第一地址可以为A地址,上述第二地址可以为B地址,上述A地址和B地址分别对应EEPROM内两个数据区,上述电可擦编程只读存储器EEPROM在工作时先将A地址进行编程,将数据写入A地址对应的数据区,之后,再将B地址对应的数据区中的数据擦除。在进行下一次擦写操作的时候,系统先对B地址对应的数据区进行编程,将数据写入B地址对应的数据区,然后上述系统再对A地址对应的数据区的数据内容进行擦除,A地址和B地址对应的两个数据区互为备份。如图4所示,在任何一个擦写周期,如果A地址对应的数据区处于编程工作状态,则B地址对应的数据区则处于擦除的工作状态,如果A地址对应的数据区处于擦除工作状态,B地址对应的数据区则处于编程的工作状态,由此可知,上述两个数据区在时间轴内任何时刻内至少保留一个有效数据。本方法只需要1次编程和1次写入的时间就保证了实现了数据的更新,本方法可以确保在任一时刻,上述EEPROM内均至少有一个有效数据。
本申请上述实施例二提供的方案中,上述可擦编程只读存储器采用两个地址对应的数据区互为备份数据进而进行擦写和编程,解决了现有技术在数据保存的过程中,提供一种先将目标地址对应的数据区进行擦写,然后再备份地址对应的数据区中进行与目标地址对应的数据区相同的擦写过程,使得数据保存过程耗费时间长、资源浪费较大的问题。
可选的,在初始化电可擦编程只读存储器EEPROM之后,读取第一地址和第二地址对应的两个数据区中的数据可以包含如下方案:
方案一:在第一地址对应的数据区的初始化数据状态为数据无效态的情况下,第一地址对应的数据区中的数据完整,且第二地址对应的数据区的初始化数据状态为数据有效态,
方案二:在第一地址对应的数据区的初始化数据状态为数据有效态的情况下,第二地址对应的数据区中的数据完整,且第二地址对应的数据区的初始化数据状态为数据无效态。
从上述两个方案可知,初始化上述两个地址对应的数据区,在上述两个数据区任意一个数据区中,如果其中一个数据区中的数据完整,则该数据区的初始化数据为数据无效态,另一个数据区的数据则处于数据有效态。具体的,如图5所示,本申请提供的方法先扫描A和B两个地址对应的数据区,如果A地址对应的数据区完整且处于有效态,B地址对应的数据区处于数据无效态即擦除态,则先对B地址对应的数据区进行编程,再对A地址对应的数据区进行擦除。
可选的,本实施例提供的电可擦编程只读存储器还包括以下方案:
检测任意一个擦写周期内第一地址和第二地址分别对应的数据区的数据状态,其中,先对数据状态为数据无效态的数据区进行编程,然后,擦除数据状态为数据有效态的数据区的数据内容。
可选的,本实施提供的电可擦编程只读存储器还可以包括如下方案一:
第一步:进入第一个擦写周期,其中,在第一个擦写周期内,如果检测到第一地址对应的数据区的数据状态为数据无效态,则第一地址对应的数据区进入编程工作状态,在向第一地址对应的数据区编程数据完成之后,第一地址对应的数据区的数据状态转换为数据有效态,且第二地址对应的数据区进入擦除工作状态,擦除第二地址对应的数据区中已经保存的数据,此时,第二地址对应的数据区的数据状态从数据有效态转换为数据无效态;
具体的,在第一个擦写周期内,系统对第一地址对应的数据区进行编程,上述第一地址对应的数据区在编程之前的数据状态为无效态,系统的编程行为完成后,上述第一地址对应的数据区由无效态转换成数据有效态,系统再对第二地址对应的数据区进行擦除,上述第二地址对应的数据区在擦除前的状态为有效态,系统的擦除行为完成后,第二地址对应的数据区由数据有效态转换成无效态,由此可知,在任意一个时刻,第一地址和第二地址对应的两个数据区总有一个数据区保持数据有效态。
第二步:进入与第一个擦写周期相邻的第二个擦写周期,其中,在进入第二个擦写周期之后,第二地址对应的数据区的数据状态为数据无效态,则第二地址对应的数据区进入编程工作状态,在向第二地址对应的数据区编程数据完成之后,第二地址对应的数据区的数据状态转换为数据有效态,且第一地址对应的数据区进入擦除工作状态,擦除第一地址对应的数据区中已经保存的数据,此时,第一地址对应的数据区的数据状态从数据有效态转换为数据无效态。
具体的,在第二个擦写周期内,系统对第二地址对应的数据区进行编程,上述第二地址对应的数据区在编程之前的数据状态为无效态,系统的编程行为完成后,上述第二地址对应的数据区由无效态转换成数据有效态,系统再对第一地址对应的数据区进行擦除,上述第一地址对应的数据区在擦除前的状态为有效态,系统的擦除行为完成后,第一地址对应的数据区由数据有效态转换成无效态即擦除的工作状态,由此可知,在任意一个时刻,第一地址和第二地址对应的两个数据区总有一个数据区保持数据有效态。
可选的,本实施例提供的电可擦编程只读存储器还包括如下方案二:
第一步:进入第一个擦写周期,其中,在第一个擦写周期内,如果检测到第二地址对应的数据区的数据状态为数据无效态,则第二地址对应的数据区进入编程工作状态,在向第二地址对应的数据区编程数据完成之后,第二地址对应的数据区的数据状态转换为数据有效态,且第一地址对应的数据区进入擦除工作状态,擦除第一地址对应的数据区中已经保存的数据,此时,第一地址对应的数据区的数据状态从数据有效态转换为数据无效态;
第二步:进入与第一个擦写周期相邻的第二个擦写周期,其中,在进入第二个擦写周期之后,第一地址对应的数据区的数据状态为数据无效态,则第一地址对应的数据区进入编程工作状态,在向第一地址对应的数据区编程数据完成之后,第一地址对应的数据区的数据状态转换为数据有效态,且第二地址对应的数据区进入擦除工作状态,擦除第二地址对应的数据区中已经保存的数据,此时,第二地址对应的数据区的数据状态从数据有效态转换为数据无效态。
可选的,本实施例的电可擦编程只读存储器还可以包括如下方案:
本实施例提供了本申请正常应用和异常应用流程,其中正常应用流程为方案一,异常应用流程如方案二和方案三。
方案一:
具体的,如图5所示,在本申请提供的方法中,系统先扫描A和B两个地址对应的数据区,如果A地址对应的数据区完整且处于有效态,B地址对应的数据区处于数据无效态即擦除态,系统则先对B地址对应的数据区进行编程,再对A地址对应的数据区进行擦除。如果B对应的数据区完整且处于有效态,A地址对应的数据区处于数据无效态及擦除态,则系统对A地址对应的数据区进行编程,再对B地址对应的数据区进行擦除。
方案二:
系统扫描第一地址和第二地址对应的两个数据区中的数据是否完整,如果两个数据区中的数据都完整,则根据两个数据区的序号确定工作状态为擦除工作状态的数据区,对工作状态为擦除工作状态及无效数据区进行擦除操作。
具体的,结合图6,图6是本实施例提供的数据保存方法的异常处理流程图。可选的,在本实施例中,在数据区中有两个bit以上的序号,上述序号帮助辨识在备份过程中可能产生的两个有效数据,在数据中有数据完整性校验,以区别有效数据和不定态数据。
例如,地址A和地址B分别是上述第一地址和第二地址,在本方法中,系统先扫描上述地址A和地址B对应的数据区中的数据,如果上述两个数据区的内容都完整,系统则通过两个数据区的序号来判断出有效状态的数据区和无效的数据区即工作状态为擦除工作状态的数据区,并对上述无效的数据区进行擦除。
方案三:
系统扫描第一地址和第二地址对应的两个数据区中的数据是否完整,如果上述两个数据区其中一个数据区中的数据完整,另一个数据区中的数据不完整且数据不完整的数据区的工作状态为编程工作状态,系统则对数据不完整的数据区进行擦除操作。
具体的,方案二的流程如图6所示,上述编程工作状态可以是非擦除状态,A地址对应的数据区和B地址对应的数据区分别是上述第一地址和第二地址对应的数据区,在本方案中,系统先扫描上述A地址对应的数据区和B地址对应的数据区中的数据,如果A地址对应的数据区中的数据完整且B地址对应的数据区中的数据不完整而且B地址对应的数据区处于非擦除状态,系统则对B地址对应的数据区中的内容进行擦除。如果B地址对应数据区中的数据完整且A地址对应的数据区中的数据不完整而且A地址对应的数据处于非擦除状态,系统则对A地址对应的数据区中的内容进行擦除.
可选的,上述数据无效态可以包括:擦除态或不定态。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种数据的保存方法,其特征在于,包括:
预设两个互为备份地址的第一地址和第二地址在电可擦编程只读存储器EEPROM中,所述第一地址和所述第二地址分别对应一个数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态;
在预设两个互为备份地址的第一地址和第二地址之后,所述方法还包括:
初始化所述电可擦编程只读存储器EEPROM,读取所述第一地址和所述第二地址对应的所述两个数据区中的数据,
其中,在所述第一地址对应的数据区的初始化数据状态为数据无效态的情况下,所述第二地址对应的数据区中的数据完整,且所述第二地址对应的数据区的初始化数据状态为数据有效态,或者,在所述第一地址对应的数据区的初始化数据状态为数据有效态的情况下,所述第一地址对应的数据区中的数据完整,且所述第二地址对应的数据区的初始化数据状态为数据无效态;
其中,在初始化所述电可擦编程只读存储器EEPROM之后,所述方法还包括:
检测所述任意一个擦写周期内所述第一地址和所述第二地址分别对应的数据区的所述数据状态,其中,先对所述数据状态为所述数据无效态的数据区进行编程,然后,擦除所述数据状态为所述数据有效态的数据区的数据内容。
2.根据权利要求1所述的方法,其特征在于,检测所述任意一个擦写周期内所述第一地址和所述第二地址分别对应的数据区的所述数据状态的步骤包括:
进入第一个擦写周期,其中,在所述第一个擦写周期内,如果检测到所述第一地址对应的数据区的所述数据状态为所述数据无效态,则所述第一地址对应的数据区进入所述编程工作状态,在向所述第一地址对应的数据区编程数据完成之后,所述第一地址对应的数据区的数据状态转换为所述数据有效态,且所述第二地址对应的数据区进入所述擦除工作状态,擦除所述第二地址对应的数据区中已经保存的数据,此时,所述第二地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态;
进入与所述第一个擦写周期相邻的第二个擦写周期,其中,在进入所述第二个擦写周期之后,所述第二地址对应的数据区的数据状态为所述数据无效态,则所述第二地址对应的数据区进入所述编程工作状态,在向所述第二地址对应的数据区编程数据完成之后,所述第二地址对应的数据区的数据状态转换为所述数据有效态,且所述第一地址对应的数据区进入所述擦除工作状态,擦除所述第一地址对应的数据区中已经保存的数据,此时,所述第一地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态。
3.根据权利要求1所述的方法,其特征在于,检测所述任意一个擦写周期内所述第一地址和所述第二地址分别对应的数据区的所述数据状态的步骤包括:
进入第一个擦写周期,其中,在所述第一个擦写周期内,如果检测到所述第二地址对应的数据区的所述数据状态为所述数据无效态,则所述第二地址对应的数据区进入所述编程工作状态,在向所述第二地址对应的数据区编程数据完成之后,所述第二地址对应的数据区的数据状态转换为所述数据有效态,且所述第一地址对应的数据区进入所述擦除工作状态,擦除所述第一地址对应的数据区中已经保存的数据,此时,所述第一地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态;
进入与所述第一个擦写周期相邻的第二个擦写周期,其中,在进入所述第二个擦写周期之后,所述第一地址对应的数据区的数据状态为所述数据无效态,则所述第一地址对应的数据区进入所述编程工作状态,在向所述第一地址对应的数据区编程数据完成之后,所述第一地址对应的数据区的数据状态转换为所述数据有效态,且所述第二地址对应的数据区进入所述擦除工作状态,擦除所述第二地址对应的数据区中已经保存的数据,此时,所述第二地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态。
4.根据权利要求1所述的方法,其特征在于,在进入所述任意一个擦写周期之前,扫描所述第一地址和所述第二地址对应的所述两个数据区中的数据是否完整,如果所述两个数据区中的数据都完整,则根据所述两个数据区的序号确定所述工作状态为所述擦除工作状态的数据区,对所述工作状态为所述擦除工作状态的数据区进行擦除操作。
5.根据权利要求1所述的方法,其特征在于,在进入所述任意一个擦写周期之前,扫描所述第一地址和所述第二地址对应的所述两个数据区中的数据是否完整,如果其中一个数据区中的数据完整,另一个数据区中的数据不完整且所述数据不完整的数据区的所述工作状态为所述编程工作状态,则对所述数据不完整的数据区进行擦除操作。
6.根据权利要求2至5中任一项所述的方法,其特征在于,所述数据无效态包括:擦除态或不定态。
7.一种电可擦编程只读存储器,其特征在于,包括:两个互为备份的第一地址和第二地址的数据区,两个数据区中的数据互为备份数据,且两个数据区中至少有一个数据区的数据状态为数据有效态,在任意一个擦写周期内,每个地址对应的数据区的工作状态为编程工作状态或擦除工作状态;
在初始化所述电可擦编程只读存储器EEPROM之后,读取所述第一地址和所述第二地址对应的所述两个数据区中的数据,
其中,在所述第一地址对应的数据区的初始化数据状态为数据无效态的情况下,所述第二地址对应的数据区中的数据完整,且所述第二地址对应的数据区的初始化数据状态为数据有效态,或者,在所述第一地址对应的数据区的初始化数据状态为数据有效态的情况下,所述第一地址对应的数据区中的数据完整,且所述第二地址对应的数据区的初始化数据状态为数据无效态;
检测所述任意一个擦写周期内所述第一地址和所述第二地址分别对应的数据区的所述数据状态,其中,先对所述数据状态为所述数据无效态的数据区进行编程,然后,擦除所述数据状态为所述数据有效态的数据区的数据内容。
8.根据权利要求7所述的电可擦编程只读存储器,其特征在于,
进入第一个擦写周期,其中,在所述第一个擦写周期内,如果检测到所述第一地址对应的数据区的所述数据状态为所述数据无效态,则所述第一地址对应的数据区进入所述编程工作状态,在向所述第一地址对应的数据区编程数据完成之后,所述第一地址对应的数据区的数据状态转换为所述数据有效态,且所述第二地址对应的数据区进入所述擦除工作状态,擦除所述第二地址对应的数据区中已经保存的数据,此时,所述第二地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态;
进入与所述第一个擦写周期相邻的第二个擦写周期,其中,在进入所述第二个擦写周期之后,所述第二地址对应的数据区的数据状态为所述数据无效态,则所述第二地址对应的数据区进入所述编程工作状态,在向所述第二地址对应的数据区编程数据完成之后,所述第二地址对应的数据区的数据状态转换为所述数据有效态,且所述第一地址对应的数据区进入所述擦除工作状态,擦除所述第一地址对应的数据区中已经保存的数据,此时,所述第一地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态。
9.根据权利要求7所述的电可擦编程只读存储器,其特征在于,
进入第一个擦写周期,其中,在所述第一个擦写周期内,如果检测到所述第二地址对应的数据区的所述数据状态为所述数据无效态,则所述第二地址对应的数据区进入所述编程工作状态,在向所述第二地址对应的数据区编程数据完成之后,所述第二地址对应的数据区的数据状态转换为所述数据有效态,且所述第一地址对应的数据区进入所述擦除工作状态,擦除所述第一地址对应的数据区中已经保存的数据,此时,所述第一地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态;
进入与所述第一个擦写周期相邻的第二个擦写周期,其中,在进入所述第二个擦写周期之后,所述第一地址对应的数据区的数据状态为所述数据无效态,则所述第一地址对应的数据区进入所述编程工作状态,在向所述第一地址对应的数据区编程数据完成之后,所述第一地址对应的数据区的数据状态转换为所述数据有效态,且所述第二地址对应的数据区进入所述擦除工作状态,擦除所述第二地址对应的数据区中已经保存的数据,此时,所述第二地址对应的数据区的数据状态从所述数据有效态转换为所述数据无效态。
10.根据权利要求7所述的电可擦编程只读存储器,其特征在于,在进入所述任意一个擦写周期之前,扫描所述第一地址和所述第二地址对应的所述两个数据区中的数据是否完整,如果所述两个数据区中的数据都完整,则根据所述两个数据区的序号确定所述工作状态为所述擦除工作状态的数据区,对所述工作状态为所述擦除工作状态的数据区进行擦除操作。
11.根据权利要求7所述的电可擦编程只读存储器,其特征在于,在进入所述任意一个擦写周期之前,扫描所述第一地址和所述第二地址对应的所述两个数据区中的数据是否完整,如果其中一个数据区中的数据完整,另一个数据区中的数据不完整且所述数据不完整的数据区的所述工作状态为所述编程工作状态,则对所述数据不完整的数据区进行擦除操作。
12.根据权利要求8至11中任一项所述的电可擦编程只读存储器,其特征在于,所述数据无效态包括:擦除态或不定态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410539372.1A CN105573858B (zh) | 2014-10-13 | 2014-10-13 | 数据的保存方法和电可擦编程只读存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410539372.1A CN105573858B (zh) | 2014-10-13 | 2014-10-13 | 数据的保存方法和电可擦编程只读存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573858A CN105573858A (zh) | 2016-05-11 |
CN105573858B true CN105573858B (zh) | 2018-07-20 |
Family
ID=55884026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410539372.1A Active CN105573858B (zh) | 2014-10-13 | 2014-10-13 | 数据的保存方法和电可擦编程只读存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573858B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190470A (zh) * | 2021-05-21 | 2021-07-30 | 恒宝股份有限公司 | 一种flash芯片存储区及其高性能防掉电读写方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
CN101656106A (zh) * | 2009-08-27 | 2010-02-24 | 北京握奇数据系统有限公司 | 一种向eeprom写入数据的方法及装置 |
CN101944191A (zh) * | 2009-07-08 | 2011-01-12 | 上海华虹集成电路有限责任公司 | 非接触式逻辑加密卡的防拔处理方法 |
CN102763166A (zh) * | 2009-08-19 | 2012-10-31 | 桑迪士克技术有限公司 | 选择性的存储器单元编程和擦除 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
-
2014
- 2014-10-13 CN CN201410539372.1A patent/CN105573858B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369616A (en) * | 1992-10-30 | 1994-11-29 | Intel Corporation | Method for assuring that an erase process for a memory array has been properly completed |
CN101944191A (zh) * | 2009-07-08 | 2011-01-12 | 上海华虹集成电路有限责任公司 | 非接触式逻辑加密卡的防拔处理方法 |
CN102763166A (zh) * | 2009-08-19 | 2012-10-31 | 桑迪士克技术有限公司 | 选择性的存储器单元编程和擦除 |
CN101656106A (zh) * | 2009-08-27 | 2010-02-24 | 北京握奇数据系统有限公司 | 一种向eeprom写入数据的方法及装置 |
CN103914393A (zh) * | 2014-04-11 | 2014-07-09 | 四川华拓光通信股份有限公司 | 一种基于mcu的flash不丢失更新存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105573858A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914702B2 (en) | Bit error repair method and information processing apparatus | |
EP2638466B1 (en) | Software updating process for an embedded device | |
US20170147266A1 (en) | Memory control method and memory control apparatus | |
CN101770809A (zh) | 非易失性存储器掉电后的恢复 | |
CN103914407B (zh) | 一种sd卡掉电保护、恢复方法以及带有掉电保护的sd卡 | |
CN101727981B (zh) | 带内置存储器单元恢复的非易失性存储器设备及操作方法 | |
CN105760165B (zh) | 一种mcu自我备份加载刷新的方法 | |
CN102541690A (zh) | 一种智能卡及其恢复数据方法 | |
CN104951249A (zh) | 存储器控制设备、信息处理设备及其控制方法 | |
CN107566169A (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN105339902A (zh) | 版本化存储器实现 | |
CN104751888A (zh) | 一种非易失性存储器的掉电保护方法和装置 | |
CN108132811A (zh) | 一种fpga程序数据的加载方法及装置 | |
US20170154681A1 (en) | Memory control method and apparatus | |
CN105573858B (zh) | 数据的保存方法和电可擦编程只读存储器 | |
CN107045888A (zh) | 数据擦除方法 | |
CN106484308B (zh) | 数据保护方法、存储器控制电路单元及存储器储存装置 | |
JP2006004367A (ja) | メモリカード及び半導体装置 | |
EP2357586A2 (en) | Single hardware platform with multiple software redundancy | |
CN104575605B (zh) | 存储器装置及使用非易失性存储器对系统进行开机的方法 | |
US20140025870A1 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CN104751889A (zh) | 一种非易失性存储器的复位方法 | |
CN106057246A (zh) | 一种非易失性存储器中坏点单元的替换方法 | |
CN107193485A (zh) | 储存装置、其控制单元、及可用于储存装置的数据储存方法 | |
CN102568571B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |