CN112863582B - 一种数据掉电保持方法、装置、计算机设备和存储介质 - Google Patents
一种数据掉电保持方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112863582B CN112863582B CN202110201180.XA CN202110201180A CN112863582B CN 112863582 B CN112863582 B CN 112863582B CN 202110201180 A CN202110201180 A CN 202110201180A CN 112863582 B CN112863582 B CN 112863582B
- Authority
- CN
- China
- Prior art keywords
- data
- variable
- variable data
- storage area
- storage
- 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
Images
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/30—Power supply circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明适用于计算机领域,提供一种数据掉电保持方法、装置、计算机设备和存储介质,数据掉电保持方法包括:当掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,具体包括:对变量数据的结尾定义变量写入预设字符,并将变量数据的存储版本序号加1;获取变量数据的长度和占用扇区数;将变量数据写入第二存储单元。其中,第一存储单元为可以频繁读写但掉电数据不保持的存储区,第二存储单元为不可以频繁读写但掉电数据保持的存储区;本方案通过将需要掉电保持的变量数据存储在第一存储单元,并在掉电时将变量数据写入到第二存储单元中存储,可以实现对变量数据长久保存,且其保存时间不受电池寿命的影响,数据保存稳定。
Description
技术领域
本发明属于计算机领域,尤其涉及一种数据掉电保持方法、装置、计算机设备和存储介质。
背景技术
随着工业自动化的发展,人们对于产品的智能化要求也越来越高,例如,对于空调产品,在控制编程过程中存在一些功能变量或运行数据要支持掉电保存的功能,其掉电需要保存的数据一般可以分为两类,一类是需要反复修改的运行数据,另一类是需要偶尔修改的设置参数。常见的数据存储技术方案采用Flash存储器或者SRAM静态存储器;前者Flash方案有存储空间大、单位存储成本低,掉电后数据保持不变,但只能按扇区读写,读写速度慢,且不能频繁擦除的技术特点;后者SRAM方案有单位存储成本贵,读写速度快,支持数据频繁读写,只要保持有电,数据可以恒常保持。
目前工业可编程PLC一般采用是SRAM的存储方案,控制器上单独配置一个大容量续电电池,当控制器掉电后,电池可以保证SRAM区域内的运行数据在3个月内不丢失,实现数据掉电保持功能,此方案存在明显成本较高,增加电池的方案复杂化,数据不能做到长久保存。
可见需要提供一种数据掉电保持方法,来解决现有技术中控制器掉电后其数据不能做到长久保存的技术问题。
发明内容
本发明实施例的目的在于提供一种数据掉电保持方法、装置、计算机设备和存储介质,旨在解决现有技术中控制器掉电后其数据不能做到长久保存的技术问题。
本发明实施例是这样实现的,所述数据掉电保持方法包括:
当检测到掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,其中,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,所述第二存储单元为不可以频繁读写但掉电数据保持的存储区域,且需要掉电保持的变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中包括:
对所述变量数据的结尾定义变量写入预设字符,并将所述变量数据的存储版本序号加1;
根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
本发明实施例的另一目的在于提供一种数据掉电保持装置,所述数据掉电保持装置包括处理模块,所述处理模块包括第一读写单元、获取单元以及第二读写单元;
所述第一读写单元,用于对变量数据的结尾定义变量写入预设字符,并将变量数据的存储版本序号加1;所述变量数据为存储在第一存储单元中需要掉电保持的数据,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,且所述变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述获取单元,用于根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
所述第二读写单元,用于根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
本发明实施例的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述的一种数据掉电保持方法的步骤。
本发明实施例的另一目的在于提供一种计算机存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述的一种数据掉电保持方法的步骤。
本发明实施例提供的一种数据掉电保持方法,通过将需要掉电保持的变量数据存储在可以频繁读写但掉电不保持的第一存储单元,当检测到掉电时,将第一存储单元中的变量数据写入到不可以频繁读写但掉电数据保持的第二存储单元,其不需要另外设置电池来对数据的保存供电,节约成本,同时,其保存时间不用依赖于电池的使用寿命,从而在掉电时可以实现对变量数据的长久保存。且其通过存储版本序号变量,在上电后可以识别并获取最新版本的变量数据。
附图说明
图1为本发明实施例提供的将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中的流程图;
图2为本发明实施例提供的第一存储单元和第二存储单元中存储区的示意图;
图3为本发明实施例提供的另一种数据掉电保持方法的流程图;
图4为本发明实施例提供的一种当第二存储单元中包括第一存储和第二存储区时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中的流程图;
图5为本发明实施例提供的一种包括上电之后将变量数据还原至第一存储单元中的数据掉电保持方法;
图6为本发明实施例提供的一种读取所述第二存储单元中的所述变量数据还原至所述第一存储单元中的流程图;
图7为本发明实施例提供的一种数据掉电保持装置的结构框图;
图8为本发明实施例提供的一种包括掉电检测模块的数据掉电保持装置的结构示意图;
图9为一个实施例中计算机设备的内部结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一xx脚本称为第二xx脚本,且类似地,可将第二xx脚本称为第一xx脚本。
在本发明的一个实施例中,提供一种数据掉电保持方法,本实施例主要以该方法应用于空调产品的控制器为例说明,但不限于此,例如,可以应用于工业可编程PLC、PCB单片机控制板等。一种数据掉电保持方法,具体可以包括以下步骤:
步骤S202,当检测到掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,其中,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,所述第二存储单元为不可以频繁读写但掉电数据保持的存储区域,且需要掉电保持的变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据。
在本发明实施例中,其中变量数据在定义时,是由软件编译器在RAM存储空间内自动分配地址,一个文件的所有变量数据可以制定一个初始地址,由于不定长度的变量数据占用总空间大小是不确定的,所以在变量的尾部创建自定义变量数组,即结尾定义变量。根据编译器的编译规则,放置于无变量的最后尾部的数组时,编译时会自动把最后的结尾变量数组放置的RAM空间的尾部,在程序运行中,再通过获取结尾变量的绝对地址,利用绝对地址减去初始地址的大小即可获得存储空间大小,从而可以获得变量数据在第一存储单元的占用空间长度。根据初始地址以及占用的空间长度,从而可以确定第一存储的变数数据及其空间位置。
在本发明实施例中,其中,第一存储单元指在软件编译器内指定一个起始地址,可以是不定长度的RAM存储空间。其中需要掉电保持的变量数据也是不定长度的变量数据,其由软件客户自定义创建,在编译时会自动按分配规则存储至第一存储单元的空间内。
对掉电检测的具体方法不做限制,例如可以设计掉电检测电路,将掉电检测电路与空调控制器连接,从而空调控制器可以通过掉电检测电路获取掉电信息。空调控制器中包括主控芯片,本实施例对主控芯片的具体型号不做限制,可以在主控芯片上划分独立的第一存储单元和第二存储单元,例如第一存储单元可以为RAM存储区,第二存储单元可以为Flash存储区。可以设定RAM存储区的内部存储地址为从0x2001F000开始至0x20021000结束,总共占用8K字节空间,可存储8192字节的变量数据。结尾定义变量和存储版本序号变量存储在变量数据的尾部,变量数据、结尾定义变量EndFlag以及存储版本序号变量Version在RAM存储区域的存储位置如图2所示,其中存储版本序号变量Version和结尾定义变量EndFlag依次存储在变量数据的结尾处。
如图1所示,提供了一种将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中的流程图,所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中包括:
步骤S302,对所述变量数据的结尾定义变量写入预设字符,并将所述变量数据的存储版本序号加1。
在本发明实施例中,对结尾变量的预设字符不做限制,例如,可以将结尾变量定义为0xE0E0,通过设置结尾变量可以通过读取结尾变量的预设字符在第一存储单元中的地址,又已知第一存储单元的初始地址,从而可以计算出变量数据的总长度。存储版本序号变量Version是个依次递增的序号变量,例如,初次启动设备时变量数据的版本序号是0,当第一次检测到断电,此时变量数据的版本序号是1,依次类推。其中存储版本序号的字节长度可以是32位的,以避免数据溢出。
步骤S304,根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数。
在本发明实施例中,由于变量数据的存储版本序号变量和结尾变量依次存储在变量数据的结尾,用结尾变量的预设字符在第一存储单元中的地址减去第一存储的初始地址即可获知变量数据和版本序号变量的长度,又已知第二存储单元中每个扇区的大小为1K,从而可以获得变量数据在第二存储单元中的占用扇区数。
步骤S306,根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
在本发明实施例中,已知了变量数据的长度和其占用扇区数的大小,从而可以将变量数据连续写入到第二存储单元中存储。
本发明实施例提供的一种数据掉电保存方法,通过将需要掉电保持的变量数据存储在可以频繁读写但掉电不保持的第一存储单元,当检测到掉电时,将第一存储单元中的变量数据写入到不可以频繁读写但掉电数据保持的第二存储单元,其不需要另外设置电池来对数据的保存供电,节约成本,同时,其保存时间不用依赖于电池的使用寿命,从而在掉电时可以实现对变量数据的长久保存。
如图3所示,在本发明的另一个实施例中,在步骤S202之前,所述数据掉电保持方法还包括:
步骤S201,判断该次掉电距离上一次掉电的掉电时间间隔是否大于预设掉电时间间隔;
当所述掉电时间间隔大于所述预设掉电时间间隔,执行将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中。
在本发明实施例中,由于第二存储单元为不可以频繁读写的存储区域,当设备故障或者设备电源故障,使设备频繁断电启动的情况下,会对第二存储单元造成频繁读写,影响第二存储单元的读写性能,且该情况下用户也几乎不会对变量数据进行更改,第二存储单元多次存储的变量数据内容相同,这种情况下的断电数据保持是没有任何意义的,所以,可以在只有掉电时间间隔大于预设掉电时间间允许变量数据写入第二存储单元。其中,掉电时间间隔可以根据上一次的掉电时刻和该次的掉电时刻得出,或者根据上一次变量数据写入第二存储单元的时刻和此刻(也即该次掉电将变量数据写入第二存储单元的时刻)得出。本实施例对预设掉电时间间隔不做限制,例如,根据经验可以将预设掉电时间设置为3min,将掉电时间间隔与预设掉电时间间隔进行对比,当计算得到的掉电时间大于3min才允许将变量数据写入第二存储单元。
本发明实施例提供的一种数据掉电保持方法,通过在执行将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中之前,先判断掉电时间间隔是否大于预设掉电时间间隔,可以在只有掉电时间间隔大于预设掉电时间间允许变量数据写入第二存储单元,从而有效避免由于设备或者设备连接的电源故障造成第二存储单元的频繁读写,保障第二存储单元的使用寿命。
如图4所示,在本发明的另一实施例中,所述第二存储单元至少包括第一存储区和第二存储区;
所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中还包括:
步骤S301,根据数据存储区选择变量判断将所述变量数据存储到所述第一存储区或所述第二存储区;其中,所述存储区选择变量对应已提前擦除原有数据的存储区。
在本发明实施例中,以第二存储单元为Flash存储区为例说明,Flash存储区可以包括1区和2区,例如,1区对应第一存储区,2区对应第二存储区,其分别从Flash地址0x0807C000和0x0807E000开始,占用8字节空间,可存储8192字节的变量数据。例如存储区选择变量为i,当i为1则将变量数据写入到1区,当i为2则将变量数据写入2区。存储区选择变量对应已提前擦除原有数据的存储区是指:例如,设备初始启动时i为1,第一次掉电将变量数据写入1区,此时变量数据i为2,第二次掉电将变量数据写入2区,此时可以擦除1区的历史变量数据以待下一次断电存储,即存储区选择变量总是对应空白的或者已提前擦除原有数据的存储区。优选地,可以使存储区选择变量交替对应第一存储区和第二存储区,即,第一次掉电变量数据写入1区,此时存储版本序号为1,第二次掉电变量数据写入2区,此时存储版本序号为2,然后擦除1区存储版本为1的变量数据,第三次掉电变量数据再写入1区,此时存储版本序号为3,然后擦除2区存储版本序号为2的变量数据,以此类推,但第二存储单元不限于包括两个存储区。
本发明实施例提供的一种数据掉电保持方法,通过使第二存储单元至少包括两个存储区,并创建存储区选择变量,在将变量数据写入第二存储单元之前,可以根据存储区选择变量判断变量数据需要写入的存储区,这样设置两个存储区,并使两个存储区交替使用存储,一方面数据擦除需要时间,第二存储单元的数据存储效率,另一方面当将存储版本序号为3的变量数据存储在1区,此时,2区存储的是存储版本序号为2的变量数据,在得电将变量数据还原至第一存储单元之前,且擦除2区的变量数据之前,此时第二存储单元中存储有两个版本的变量数据,可以在将变量数据还原至第一存储单元之后再对2区的变量数据进行擦除,这样在还原之前保存有两个版本的变量数据,避免最新版本的变量数据在断电时保存不完整,有效保障了数据保存的稳定性。
如图5所示,在本发明的另一个实施例中,所述数据掉电保持方法还包括:
步骤S204,当检测到上电时,读取所述第二存储单元中的所述变量数据还原至所述第一存储单元中。
在本发明实施例中,对上电检测的具体方式不做限制,例如可以使用上述的掉电检测方法。如图6所示,其中读取所述第二存储单元中的所述变量数据还原至所述第一存储单元中,包括:
步骤S402,获取所述第一存储区和所述第二存储区中所述变量数据对应的结尾定义变量;
在本发明实施例中,在上电将变量数据还原之前,先不对第一存储区和第二存储区的变量数据进行擦除,则在第二次断电及以后,再得电时,第一存储区和第二存储区可以分别存储有变量数据最新版本以及最新版本的前一个版本,为避免在掉电时数据保存不完整出现无效,可以通过看其保存的变量数据的尾部是否存在结尾定义变量判断。可以分别从第一存储区中存储的数据中和第二存储区中存储的数据中读取结尾定义变量位置处对应的字符,从而获取第一存储区和第二存储中变量数据对应的结尾定义变量。
步骤S404,根据所述预设字符判断所述结尾定义变量对应的变量数据是否有效;
在本发明实施例中,例如,当结尾定义变量定义为0xE0E0,当获取的第一存储区或第二存储区的结尾定义变量对应的结尾定义变量对应的字符与定义的字符0xE0E0一致则判断该变量数据有效,否则无效。
步骤S406,当所述第一存储区和所述第二存储区中的所述变量数据均有效,获取所述第一存储区和所述第二存储区中所述变量数据分别对应的存储版本序号,并比较其大小。
在本发明实施例中,在掉电保存不出问题的情况下,第一存储区和第二存储区中的变量数据应该均为有效数据,其不同点应该在于其存储版本序号不同。存储版本序号变量和结尾定义变量是依次存储在变量数据的结尾的,当已知结尾定义变量对应的地址很容易获知存储版本序号变量,从而获取第一存储区和第二存储区中变量数据分别对应的存储版本序号。通过比较存储版本序号的大小可以获知那个存储版本序号对应的变量数据为最新的数据。
步骤S408,当所述第一存储区中所述变量数据对应的存储版本序号大于所述第二存储区中所述变量数据对应的存储版本序号,读取所述第一存储区中的所述变量数据还原至所述第一存储单元中,擦除所述第二存储区中的所述变量数据,并使所述存储区选择变量对应所述第二存储区。
步骤S410,否,则读取所述第二存储区中的所述变量数据还原至所述第一存储单元中,擦除所述第一存储区中的所述变量数据,并使所述存储区选择变量对应所述第一存储区;
在本发明实施例中,上电后需要将最新版本的变量数据还原至第一存储单元中,所以通过比较版本序号大小后,将版本序号较大的对应的变量数据还原至第一存储单元,然后将版本序号较小的存储区的数据擦除以备下一次掉电存储。
步骤S412,当所述第一存储区和所述第二存储区中的所述变量数据存在无效,判断所述第一存储区和所述第二存储区中的所述变量数据是否均无效。
在本发明实施例中,当获取的结尾定义变量对应的字符并不都是0xE0E0,则存在无效数据。当两个存储区的变量数据均为无效数据,则第二存储单元没有可以还原的变量数据,当两个存储区的变量数据一个为有效数据一个为无效数据,则不用再对比其存储版本序号的大小,直接将有效的变量数据还原至第一存储单元。
步骤S414,当所述第一存储区和所述第二存储区中的所述变量数据均无效,擦除所述第一存储区和所述第二存储区中的所述变量数据,并使所述存储区选择变量对应所述第一存储区;
步骤S416,否,则读取存储有效数据的存储区中所述变量数据还原至所述第一存储单元中,擦除存储无效数据的存储区中的所述变量数据,并使所述存储区选择变量对应存储无效数据的存储区。
在本发明实施例中,当两个存储区的数据均为无效数据,则需要将两个存储区的数据均擦除以备后续断电存储,此时,存储区选择变量可以默认第一存储区。当两个存储区中的数据一个为有效数据一个为无效数据,将有效数据存储区的变量数据还原至第一存储单元,将无效数据存储区的数据擦除以备后续掉电存储,从而此时,存储区选择变量对应擦除数据的这个存储区。
本发明实施例提供的一种数据掉电保持方法,通过检测到上电时可以将第二存储单元中的变量数据还原至第一存储单元中。且可以通过将第一存储区和第二存储区中变量数据对应的结尾定义变量与预设的结尾定义变量字符进行对比可以判断两存储区中的变量数据的有效性,避免将无效数据还原至第一存储区中,影响设备的正常运行。且可以通过对比版本号的大小判断最新版本的数据从而将最新版本的数据还原至第一存储单元。
如图7所示,在本发明的另一个实施例中,提供了一种数据掉电保持装置,所述数据掉电保持装置包括处理模块510,所述处理模块510包括第一读写单元610、获取单元620以及第二读写单元630;
所述第一读写单元610,用于对变量数据的结尾定义变量写入预设字符,并将变量数据的存储版本序号加1;所述变量数据为存储在第一存储单元中需要掉电保持的数据,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,且所述变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述获取单元620,用于根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
所述第二读写单元630,用于根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
在本发明实施例中,第一读写单元610、获取单元620以及第二读写单元630的功能分别对应上文中的步骤S302、步骤S304以及步骤S306,再此对各单元的功能不再赘述。
在发明实施例中,优选地,所述掉电保持装置还包括掉电检测模块520,所述掉电检测模块520用于检测电源电压是否掉电;
如图8所示,所述掉电检测模块包括第一电阻R1、第二电阻R2、第三电阻R3、第一电容C1、第二电容C2、以及第一降压转换器DC/DC1和第二降压转换器DC/DC2;
所述第一电阻R1和所述第二电阻R2串联,所述第一电阻R1的另一端连接电源电压,所述第二电阻R2的另一端接地,所述第一电容C1与所述第一分阻R1和所述第二分压电阻R2的串联电路并联,所述第二电容C2与所述第二电阻R2并联,所述第三电阻R3的一端接入所述第一电阻R1和所述第二电阻R2之间,所述第三电阻R3的另一段连接所述处理模块;
所述第一降压转换器DC/DC1和所述第二降压转换器DC/DC2串联,所述第一降压转换器DC/DC1的另一端连接电源电压,所述第二降压转换器DC/DC2的另一端连接所述处理模块。
在本发明实施例中,以处理模块510为MCU主控芯片为例说明,掉电检测模块中由R1,R2电阻进行分压,通过R3接入至MCU主控芯片的Adc引脚上,检测电路接在供电电源最前端的电路上,非后端3.3Vdc来进行判断;从而能够检测到掉电的异常电压;电源前端通过增加C1大电容(2000uF),保证掉电后C1放电,能够仍有超过50ms保持对控制板MCU芯片的续流能力;当电源电压掉电后,电压由额定24V迅速掉至19V,通过R1和R2的分压,MCU上的PowerCheck检测引脚的电压掉至2.9V掉至2.5V,持续3ms后,MCU即执行上述数据掉电保持方法中的步骤。此外,检测是否掉电时可以连续多次检测电源电压值,例如可以每隔1ms采集一次电源电压值,当主控芯片连续三次采集的电压值均低于19V,则认为此时掉电,然后执行上述数据掉电保持方法中的数据。
本发明实施例提供的一种数据掉电保持装置,通过使处理模块包括第一读写单元、获取单元以及第二读写单元。将需要掉电保持的变量数据存储在可以频繁读写但掉电不保持的第一存储单元,当检测到掉电时,第二读写单元将第一存储单元中的变量数据写入到不可以频繁读写但掉电数据保持的第二存储单元,其不需要另外设置电池来对数据的保存供电,节约成本,同时,其保存时间不用依赖于电池的使用寿命,从而在掉电时可以实现对变量数据的长久保存。
图9示出了一个实施例中计算机设备的内部结构图。如图9所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述数据掉电保持方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述数据掉电保持方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的一种数据掉电保持装置可以实现为一种计算机程序的形式,计算机程序可在如图9所示的计算机设备上运行。计算机设备的存储器中可存储组成该数据掉电保持装置的各个程序单元,比如,图7所示的第一读写单元、获取单元和第二读写单元。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的数据掉电保持方法中的步骤。
例如,图9所示的计算机设备可以通过如图7所示的掉电保持装置中的
第一读写单元执行步骤S302。计算机设备可通过获取单元执行步骤S304。计算机设备可通过第二读写单元执行步骤S306。
在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当检测到掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,其中,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,所述第二存储单元为不可以频繁读写但掉电数据保持的存储区域,且需要掉电保持的变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中包括:
对所述变量数据的结尾定义变量写入预设字符,并将所述变量数据的存储版本序号加1;
根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
在一个实施例中,提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:当检测到掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,其中,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,所述第二存储单元为不可以频繁读写但掉电数据保持的存储区域,且需要掉电保持的变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中包括:
对所述变量数据的结尾定义变量写入预设字符,并将所述变量数据的存储版本序号加1;
根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种数据掉电保持方法,其特征在于,所述数据掉电保持方法包括:
当检测到掉电时,将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中,其中,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,所述第二存储单元为不可以频繁读写但掉电数据保持的存储区域,且需要掉电保持的变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时,用于获取最新版本的变量数据;
所述第一存储单元的空间,是指在软件编译器内指定一个起始地址,不定长度的RAM存储空间;
所述掉电保持的变量数据是不定长度的变量数据,由软件客户自定义创建的,在编译时会自动按分配规则放至第一存储单元的存储空间内;所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中包括:
在所述变量数据的结尾定义变量并写入预设字符,并将所述变量数据的存储版本序号加1;
所述存储版本序号的字节长度是32位,保证数据不会溢出;
根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元;
所述第二存储单元至少包括第一存储区和第二存储区;
所述将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中还包括:
根据数据存储区选择变量判断将所述变量数据存储到所述第一存储区或所述第二存储区;其中,所述存储区选择变量对应已提前擦除原有数据的存储区;
所述数据掉电保持方法还包括:
当检测到上电时,读取所述第二存储单元中的所述变量数据还原至所述第一存储单元中;
读取所述第二存储单元中的所述变量数据还原至所述第一存储单元中,包括:
获取所述第一存储区和所述第二存储区中所述变量数据对应的结尾定义变量;
根据所述预设字符判断所述结尾定义变量对应的变量数据是否有效;
当所述第一存储区和所述第二存储区中的所述变量数据均有效,获取所述第一存储区和所述第二存储区中所述变量数据分别对应的存储版本序号,并比较其大小:
当所述第一存储区中所述变量数据对应的存储版本序号大于所述第二存储区中所述变量数据对应的存储版本序号时,读取所述第一存储区中的所述变量数据还原至所述第一存储单元中,擦除所述第二存储区中的所述变量数据,并使所述存储区选择变量对应所述第二存储区;
否则,读取所述第二存储区中的所述变量数据还原至所述第一存储单元中,擦除所述第一存储区中的所述变量数据,并使所述存储区选择变量对应所述第一存储区;
当所述第一存储区和所述第二存储区中的所述变量数据存在无效,判断所述第一存储区和所述第二存储区中的所述变量数据是否均无效:
当所述第一存储区和所述第二存储区中的所述变量数据均无效时,擦除所述第一存储区和所述第二存储区中的所述变量数据,并使所述存储区选择变量对应所述第一存储区;
否则,读取存储有效数据的存储区中所述变量数据还原至所述第一存储单元中,擦除存储无效数据的存储区中的所述变量数据,并使所述存储区选择变量对应存储无效数据的存储区。
2.根据权利要求1所述的数据掉电保持方法,其特征在于,在将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中之前,所述数据掉电保持方法还包括:
判断该次掉电距离上一次掉电的掉电时间间隔是否大于预设掉电时间间隔;
当所述掉电时间间隔大于所述预设掉电时间间隔,执行将第一存储单元中需要掉电保持的变量数据连续写入到第二存储单元中。
3.根据权利要求1所述的数据掉电保持方法,其特征在于,所述存储区选择变量交替对应所述第一存储区和所述第二存储区。
4.一种数据掉电保持装置,用于实现权利要求1所述的数据掉电保持方法,其特征在于,所述数据掉电保持装置包括处理模块,所述处理模块包括第一读写单元、获取单元以及第二读写单元;
所述第一读写单元,用于对变量数据的结尾定义变量写入预设字符,并将变量数据的存储版本序号加1;所述变量数据为存储在第一存储单元中需要掉电保持的数据,所述第一存储单元为可以频繁读写但掉电数据不保持的存储区域,且所述变量数据尾部创建有结尾定义变量和存储版本序号变量,所述存储版本序号变量用于在上电时获取最新版本的变量数据;
所述获取单元,用于根据所述结尾定义变量在所述第一存储单元中的地址获取所述变量数据的长度和占用扇区数;
所述第二读写单元,用于根据所述变量数据的长度和占用扇区数将所述变量数据写入所述第二存储单元。
5. 根据权利要求4 所述的数据掉电保持装置,其特征在于,所述数据掉电保持装置还包括掉电检测模块,所述掉电检测模块用于检测电源电压是否掉电;
所述掉电检测模块包括第一电阻R1、第二电阻R2、第三电阻R3、第一电容C1、第二电容C2、以及第一降压转换器DC/DC1和第二降压转换器DC/DC2;
所述第一电阻R1和所述第二电阻R2串联,所述第一电阻R1的另一端连接电源电压,所述第二电阻R2的另一端接地,所述第一电容C1与所述第一电阻R1和所述第二电阻R2的串联电路并联,所述第二电容C2与所述第二电阻R2并联,所述第三电阻R3的一端接入所述第一电阻R1和所述第二电阻R2之间,所述第三电阻R3的另一段连接所述处理模块;
所述第一降压转换器DC/DC1和所述第二降压转换器DC/DC2串联,所述第一降压转换器DC/DC1的另一端连接电源电压,所述第二降压转换器DC/DC2的另一端连接所述处理模块。
6.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1至3中任一项所述的数据掉电保持方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至3中任一项所述的数据掉电保持方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201180.XA CN112863582B (zh) | 2021-02-23 | 2021-02-23 | 一种数据掉电保持方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201180.XA CN112863582B (zh) | 2021-02-23 | 2021-02-23 | 一种数据掉电保持方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112863582A CN112863582A (zh) | 2021-05-28 |
CN112863582B true CN112863582B (zh) | 2022-10-11 |
Family
ID=75990049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110201180.XA Active CN112863582B (zh) | 2021-02-23 | 2021-02-23 | 一种数据掉电保持方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112863582B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113345497B (zh) * | 2021-08-04 | 2021-11-02 | 杭州禾迈电力电子股份有限公司 | 一种微型逆变器的eeprom数据存储方法及系统 |
CN114443095A (zh) * | 2022-01-21 | 2022-05-06 | 佛山市钒音科技有限公司 | 空调器升级方法、空调器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344868A (zh) * | 2008-08-28 | 2009-01-14 | 北京握奇数据系统有限公司 | 数据备份和获取的方法和装置 |
CN106815092A (zh) * | 2015-11-27 | 2017-06-09 | 宇瞻科技股份有限公司 | 具挥发性的数据还原装置、数据储存装置及其控制方法 |
CN106919474A (zh) * | 2015-12-28 | 2017-07-04 | 中移(苏州)软件技术有限公司 | 一种缓存数据保护方法和装置 |
CN108122594A (zh) * | 2017-12-19 | 2018-06-05 | 宁波三星医疗电气股份有限公司 | 一种高效的智能电能表数据存储方法及其智能电能表 |
CN108509298A (zh) * | 2018-03-22 | 2018-09-07 | 中国银联股份有限公司 | 一种数据处理的方法、装置及存储介质 |
CN112134349A (zh) * | 2020-11-26 | 2020-12-25 | 苏州伟创电气科技股份有限公司 | 掉电控制方法、控制器及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101658479B1 (ko) * | 2010-02-09 | 2016-09-21 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 |
KR101802815B1 (ko) * | 2011-06-08 | 2017-12-29 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 프로그램 방법 |
KR102533016B1 (ko) * | 2016-07-28 | 2023-05-17 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이의 동작 방법 |
-
2021
- 2021-02-23 CN CN202110201180.XA patent/CN112863582B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344868A (zh) * | 2008-08-28 | 2009-01-14 | 北京握奇数据系统有限公司 | 数据备份和获取的方法和装置 |
CN106815092A (zh) * | 2015-11-27 | 2017-06-09 | 宇瞻科技股份有限公司 | 具挥发性的数据还原装置、数据储存装置及其控制方法 |
CN106919474A (zh) * | 2015-12-28 | 2017-07-04 | 中移(苏州)软件技术有限公司 | 一种缓存数据保护方法和装置 |
CN108122594A (zh) * | 2017-12-19 | 2018-06-05 | 宁波三星医疗电气股份有限公司 | 一种高效的智能电能表数据存储方法及其智能电能表 |
CN108509298A (zh) * | 2018-03-22 | 2018-09-07 | 中国银联股份有限公司 | 一种数据处理的方法、装置及存储介质 |
CN112134349A (zh) * | 2020-11-26 | 2020-12-25 | 苏州伟创电气科技股份有限公司 | 掉电控制方法、控制器及系统 |
Non-Patent Citations (1)
Title |
---|
基于文件管理的高速存储系统的设计与实现;张敏 等;《电子器件》;20200229;第43卷(第1期);第147页-第151页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112863582A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8566561B2 (en) | Method to separate and persist static and dynamic portions of a control application | |
CN112863582B (zh) | 一种数据掉电保持方法、装置、计算机设备和存储介质 | |
US8402204B2 (en) | Methods for measuring usable lifespan and replacing an in-system programming code of a memory device, and data storage system using the same | |
US6883060B1 (en) | Microcomputer provided with flash memory and method of storing program into flash memory | |
CN101901189B (zh) | 更新用户数据的方法以及恢复用户数据的方法 | |
CN109683983B (zh) | 一种镜像文件的生成及加载方法、设备 | |
CN110781026A (zh) | 嵌入式设备数据存储与修复方法、装置和嵌入式设备 | |
US20080269918A1 (en) | System and method for managing the restarting of automatic control equipment | |
CN103473182B (zh) | 非挥发性存储器存取方法及非挥发性存储器控制器 | |
CN110688141B (zh) | 固件更新方法 | |
US10042712B2 (en) | Numerical controller | |
JP2018028830A (ja) | 電子制御装置およびその情報記憶方法 | |
CN105095101A (zh) | 向存储器写入数据的方法及装置、智能卡 | |
JP2008117299A (ja) | 記憶媒体制御装置 | |
JP5447532B2 (ja) | 情報処理装置 | |
CN106293531B (zh) | 一种基于flash写保护的防止SD使用过程中flash被意外篡改的方法 | |
CN109558274B (zh) | 一种信息处理方法、装置及计算机可读存储介质 | |
JP7380016B2 (ja) | 空調コントローラ | |
JP4031693B2 (ja) | 不揮発性メモリおよびこれを有したデータ記憶装置 | |
US20170010827A1 (en) | File system of controller | |
US9773562B2 (en) | Storage apparatus, flash memory control apparatus, and program | |
CN116701041B (zh) | 一种内存数据保留方法、保留装置和相关设备 | |
CN117170753B (zh) | 程序处理方法、程序处理装置、车辆和存储介质 | |
JP3019346B2 (ja) | データ処理装置 | |
CN101464817B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |