CN114253758A - 一种数据处理方法及相关装置 - Google Patents
一种数据处理方法及相关装置 Download PDFInfo
- Publication number
- CN114253758A CN114253758A CN202010997523.3A CN202010997523A CN114253758A CN 114253758 A CN114253758 A CN 114253758A CN 202010997523 A CN202010997523 A CN 202010997523A CN 114253758 A CN114253758 A CN 114253758A
- Authority
- CN
- China
- Prior art keywords
- check code
- address interval
- interval
- terminal
- data
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Abstract
本申请公开了一种数据处理方法,应用于间歇性工作的终端,包括:执行第一程序段;计算第一地址区间对应的第一校验码,第一地址区间为执行第一程序段时所使用的地址区间;获取第二地址区间对应的第二校验码,第二地址区间为第三地址区间中除第一地址区间之外的地址区间,第三地址区间为执行第一程序段所属的程序时所使用的地址区间;根据第一校验码和第二校验码,确定第三校验码,并将第三校验码存储于非易失性存储器,以在恢复供电后校验易失性存储器中的数据。本方案无需对整个保存数据的地址区间进行校验码的计算,能够减少计算校验码的能耗和时间,使得终端能够持续运行,保证了终端的实时响应性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法及相关装置。
背景技术
随着物联网技术的发展,越来越多的物联网设备采用能量采集的方式来驱动,并且基于间歇性工作的方式来运行。物联网设备在运行的过程中,需要频繁地在非易失性存储器(Non-Volatile Memory,NVM)上备份运行状态,以便于在遭遇断电且恢复供电后,能够基于已备份的运行状态恢复运行。
目前,为避免频繁备份运行状态,相关技术中采用易失性存储器(VolatileMemory)来保存数据,以实现在短暂断电时不采用NVM备份运行状态。具体地,通过设定预警电压阈值,在物联网设备的电压低于预警电压阈值时,对易失性存储器中的全部数据进行校验,并将得到的校验码存储至NVM中,物联网设备再停止运行。在供电恢复后,基于NVM中的校验码,验证易失性存储器中的数据是否发生错误。
然而,由于计算易失性存储器中的全部数据的校验码需要花费较长的时间,为保证能够顺利计算得到校验码并且将该校验码存储至NVM中,预警电压阈值通常设定为较高的电压值,容易导致物联网设备在剩余较多电量时就停止了运行,影响了物联网设备的实时响应性能。
发明内容
本申请提供了一种数据处理方法及相关装置,在终端的运行过程中,终端执行完程序段之后,计算该程序段所使用的地址区间的校验码,并且基于该校验码以及整个程序所使用的地址区间中的其他地址区间的校验码,确定程序所使用的地址区间的总校验码,无需对整个保存数据的地址区间进行校验码的计算,从而减少计算校验码的能耗和时间,使得终端能够持续运行,保证了终端的实时响应性能。
本申请第一方面提供一种数据处理方法,该方法应用于间歇性工作的终端,即在频繁断电情况下间歇性地工作的终端。该方法可以包括:终端执行第一程序段,该第一程序段可以为一个应用程序的多个程序段中的一个。在终端执行第一程序段期间,终端需要使用并修改第一地址区间中的数据。终端在执行完第一程序段之后,计算第一地址区间对应的第一校验码,例如基于循环冗余校验(Cyclic Redundancy Check,CRC)运算来计算得到第一校验码。终端获取第二地址区间对应的第二校验码,该第二地址区间为第三地址区间中除第一地址区间之外的地址区间,该第三地址区间为执行第一程序段所属的程序时所使用的地址区间,该第二校验码可以是终端执行完其他程序段时,计算得到的。由于第三地址区间是由第一地址区间和第二地址区间所构成,终端根据第一校验码和第二校验码,可以确定第三地址区间对应的第三校验码。终端将第三校验码存储于非易失性存储器,该第三校验码用于在终端恢复供电后校验易失性存储器中的数据的正确性,该第三地址区间位于易失性存储器中。
本方案中,终端通过在执行完程序段之后,计算该程序段所使用的地址区间的校验码,并且基于该校验码以及整个程序所使用的地址区间中的其他地址区间的校验码,可以确定程序所使用的地址区间的总校验码。终端不再需要对整个保存数据的地址区间进行校验码的计算,从而减少计算校验码的能耗和时间,使得终端能够持续运行,保证了终端的实时响应性能。
在一些可能的实现方式中,该易失性存储器中还可以包括第四地址区间,该第四地址区间存储的数据与执行第一程序段前第三地址区间存储的数据相同,即第四地址区间用于备份第三地址区间中的数据。其中,第三地址区间被标记为工作区间,第四地址区间被标记为备份区间,工作区间为程序执行时所使用的区间,备份区间用于备份工作区间的数据。
也就是说,在执行第一程序段之前,终端可以将第三地址区间中的数据拷贝至第三地址区间中,以保证作为工作区间的第三地址区间中的数据与作为备份区间的第四地址区间中的数据相同,实现工作区间中的数据的备份。这样,如果终端在执行第一程序段的期间发生了断电,那么终端可以在恢复供电之后,将备份区间中的数据拷贝至工作区间,以恢复工作区间中的数据。
在一些可能的实现方式中,终端获取第二地址区间对应的第二校验码,包括:终端计算第四地址区间中与第一地址区间对应的地址区间的第四校验码;终端根据第四地址区间对应的校验码以及第四校验码,确定第二校验码。
简单来说,在第一程序段执行完毕之后,由于第三地址区间上的第一地址区间中的数据发生了改变,因此第四地址区间中与第三地址区间上的数据不相同的地址区间为第一地址区间所对应的地址区间。而第四地址区间中的其他地址区间实际上还是与第三地址区间中的第二地址区间上的数据相同。这样,终端可以通过计算第四地址区间中与第一地址区间对应的地址区间的校验码,并且基于校验运算的zero-padding性质以及第四地址区间的校验码,确定得到第四地址区间中的其他地址区间的校验码,即第二地址区间对应的第二校验码。
本方案中,通过基于备份区间上的数据来计算工作区间中的第二地址区间对应的第二校验码,可以在第一地址区间较小时,有效地降低进行CRC运算所消耗的时间和能耗,提高终端在执行完程序段后计算校验码的效率,从而能够节省终端的电能,延长终端有效运行的时间。
在一些可能的实现方式中,在第一程序段执行完毕之后,该方法还包括:终端将第四地址区间标记为工作区间,以及将第三地址区间标记为备份区间;终端将第三地址区间的数据拷贝至第四地址区间。
本方案中,在执行完程序段之后,通过更换地址区间的标记来实现工作区间和备份区间的快速互换,可以有效避免在数据拷贝过程中发生断电而出现数据错误的现象。
在一些可能的实现方式中,该方法还包括:终端将第一校验码和第二校验码存储于易失性存储器,第一校验码和第二校验码用于在终端恢复供电后与第三校验码进行比对,以验证易失性存储器中的数据的正确性。也就是说,在终端恢复供电之后,可以直接基于易失性存储器中的第一校验码和第二校验码计算新的校验码,并且将该新的校验码与存储于NVM中的第三校验码进行比对,来验证易失性存储器中的数据在断电期间是否发生错误。
本方案中,通过将第一校验码和第二校验码存储于易失性存储器中,来实现易失性存储器中的数据的正确性的验证,可以省去重新计算易失性存储器中数据的校验码的过程,节省了终端验证数据正确性的时间,延长终端有效运行的时间。
在一些可能的实现方式中,该方法还包括:在恢复供电后,终端获取终端的断电时长;若断电时长小于第一时长,则确定易失性存储器中的数据正确;若断电时长大于第一时长且小于第二时长,则确定需要校验易失性存储器中的数据的正确性;若断电时长大于第二时长,则确定易失性存储器中的数据不正确。其中,第一时长表示终端断电的时间足够短,易失性存储器上的数据保证不会出错,因此,在终端的断电时长小于第一时长时,终端可以跳过数据验证的步骤。类似地,第二时长表示终端的断电时间足够长,易失性存储器上的数据肯定已经发生错误。
本方案中,通过设定第一时长和第二时长,可以使得终端能够根据实际断电时长决定是否需要进行数据验证,避免了每次恢复供电后都进行数据验证,节省了终端进行数据验证的时间,延长终端有效运行的时间。
在一些可能的实现方式中,在终端执行第一程序段之前,该方法还包括:根据终端的电压高于阈值电压,执行一个或多个第二程序段。第二程序段可以是指第一程序段所属的程序中的任意一个其他的程序段,该程序中可以包括有一个或多个第二程序段。终端标记执行一个或多个第二程序段时所使用的地址区间。根据当前电压低于阈值电压,终端计算被标记的地址区间对应的校验码。
换句话说,在终端处于高电量水平时,终端在执行完程序段之后只标记已修改的地址区间;在终端处于低电量水平时,终端再统一对已标记的地址区间进行校验码计算,以尽可能减少计算校验码的次数。
在一些可能的实现方式中,在终端执行第一程序段之前,该方法还包括:终端确定第一程序段对应的第一地址区间;终端获取第一地址区间对应的校验码,第一地址区间对应的校验码存储于易失性存储器中;终端根据第一地址区间对应的校验码确定第一地址区间中的数据正确;基于第一地址区间中的数据正确,终端确定可以执行第一程序段。
本方案中,基于易失性存储器中的数据是随机性发生变化的特性,在确定校验码无误的情况下,基于校验码确定程序段要使用的数据是否正确,能够进一步确保数据的正确性,保证终端的正常运行。
在一些可能的实现方式中,方法还包括:终端周期性地将易失性存储器中的数据存储至非易失性存储器,从而实现定期在非易失性存储器中备份检测点。这样,在终端恢复供电后,确定易失性存储器中的数据验证有误时,可以恢复到最近一次存储在NVM中的检测点,避免终端频繁地重复执行程序。
本申请第二方面提供一种终端,该终端包括:处理单元和获取单元;处理单元,用于执行第一程序段;处理单元,还用于计算第一地址区间对应的第一校验码,第一地址区间为执行第一程序段时所使用的地址区间;获取单元,用于获取第二地址区间对应的第二校验码,第二地址区间为第三地址区间中除第一地址区间之外的地址区间,第三地址区间为执行第一程序段所属的程序时所使用的地址区间;处理单元,还用于根据第一校验码和第二校验码,确定第三校验码,第三校验码为第三地址区间对应的校验码;处理单元,还用于将第三校验码存储于非易失性存储器,第三校验码用于在终端恢复供电后校验易失性存储器中的数据的正确性,第三地址区间位于易失性存储器中。
在一些可能的实现方式中,易失性存储器中还包括第四地址区间,第四地址区间存储的数据与执行第一程序段前第三地址区间存储的数据相同;其中,第三地址区间被标记为工作区间,第四地址区间被标记为备份区间,工作区间为程序执行时所使用的区间,备份区间用于备份工作区间的数据。
在一些可能的实现方式中,处理单元具体用于:计算第四地址区间中与第一地址区间对应的地址区间的第四校验码;根据第四地址区间对应的校验码以及第四校验码,确定第二校验码。
在一些可能的实现方式中,处理单元还用于:将第四地址区间标记为工作区间,以及将第三地址区间标记为备份区间;将第三地址区间的数据拷贝至第四地址区间。
在一些可能的实现方式中,处理单元还用于:将第一校验码和第二校验码存储于易失性存储器,第一校验码和第二校验码用于在终端恢复供电后与第三校验码进行比对,以验证易失性存储器中的数据的正确性。
在一些可能的实现方式中,处理单元还用于:在终端恢复供电后,获取终端的断电时长;若断电时长小于第一时长,则确定易失性存储器中的数据正确;若断电时长大于第一时长且小于第二时长,则确定需要校验易失性存储器中的数据的正确性;若断电时长大于第二时长,则确定易失性存储器中的数据不正确;其中,第一时长小于第二时长。
在一些可能的实现方式中,处理单元还用于:根据终端的电压高于阈值电压,执行一个或多个第二程序段;标记执行一个或多个第二程序段时所使用的地址区间;根据终端的电压低于阈值电压,计算被标记的地址区间对应的校验码。
在一些可能的实现方式中,处理单元还用于:确定第一程序段对应的第一地址区间;获取第一地址区间对应的校验码,第一地址区间对应的校验码存储于易失性存储器中;根据第一地址区间对应的校验码确定第一地址区间中的数据正确;基于第一地址区间中的数据正确,确定执行第一程序段。
在一些可能的实现方式中,处理单元还用于:将易失性存储器中的数据周期性地存储至非易失性存储器。
本申请第三方面提供一种终端,该终端包括:处理器、非易失性存储器和易失性存储器;其中,非易失性存储器或易失性存储器中存储有计算机可读指令;处理器读取所述计算机可读指令以使终端实现如第一方面任意一种实现方式所述的方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面任意一种实现方式所述的方法。
本申请第五方面提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行如第一方面任意一种实现方式所述的方法。
本申请第六方面提供一种芯片,包括一个或多个处理器。所述处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述任一方面任意可能的实现方式中的方法。可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。本申请提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
附图说明
图1为本申请实施例提供的一种物联网设备备份运行状态的示意图;
图2为本申请实施例提供的一种数据处理方法的流程示意图;
图3为本申请实施例提供的一种地址区间的分布示意图;
图4为本申请实施例提供的另一种地址区间的分布示意图;
图5为本申请实施例提供的一种终端的运行对比示意图;
图6a为本申请实施例提供的一种用于确定断电时长的电路的结构示意图;
图6b为本申请实施例提供的一种时间保持电路的电压变化曲线示意图;
图7为本申请实施例提供的一种执行程序段的流程示意图;
图8为本申请实施例提供的一种计算校验码的示意图;
图9为本申请实施例提供的一种终端运行的流程示意图;
图10a为本申请实施例提供的一种程序段与地址区间之间的关系示意图;
图10b为本申请实施例提供的一种终端在低电量水平下执行程序段的流程示意图;
图11为本申请实施例提供的一种终端在恢复供电后的运行示意图;
图12为本申请实施例提供的一种终端1200的结构示意图;
图13为本申请实施例提供的一种终端100的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
随着物联网技术的发展,以及物联网设备的普及,物联网设备的部署数量在不断攀升。面对规模庞大的物联网设备群体,物联网设备并不适合继续采用传统的电池供电方式。具体来说,传统的电池供电方式并不环保,给每一个物联网设备配备一块电池会产生大量的电子垃圾;此外,采用电池供电的物联网设备维护困难,在苛刻的部署环境下难以给电池充电或更换电池。
因此,基于电池供电方式的限制性,一种新型的供电方式应运而生。通过在物联网设备上配置能量采集装置,可以使得物联网设备能够从运行环境采集能量来实现供电,例如采集光能、无线电射频、压力或热能等能量并且将这些能量转换为电能。采用能量采集的方式来驱动物联网设备,可以使得物联网设备的部署灵活性很强,降低了使用场景的限制,具有很强的健壮性。
在采用能量采集的方式来驱动物联网设备的情况下,由于外界的能量源是不可预测且不稳定的,物联网设备可能会频繁地断电,导致物联网设备中的程序很难在一个供电周期内完成一次完整的执行。为了使得程序能够在频繁的断电过程中持续执行,间歇计算被提出,并被应用于物联网设备中。
为了保证物联网设备能够在频繁断电的情况下持续推进执行程序,物联网设备在运行过程中需要频繁地在NVM上备份运行状态,即将寄存器的值以及程序执行时要使用的变量等数据备份至NVM,以便于在遭遇断电且恢复供电后,能够基于已备份的运行状态恢复运行。
示例性地,可以参阅图1,图1为本申请实施例提供的一种物联网设备备份运行状态的示意图。如图1所示,程序的执行流程为依次执行程序段1至程序段4。在每个程序段开始执行之前,将当前时刻的运行状态备份至NVM。如果在任一程序段执行过程中发生断电,在物联网设备恢复供电后,从NVM上获取在最近的检测点所备份的运行状态,从而恢复程序的执行,保证了物联网设备在频繁断电情况下的持续推进。
由于NVM写入速度慢且有写入寿命,频繁地向NVM备份运行状态会迅速降低NVM的寿命,最终导致物联网设备不可用。因此,为避免频繁备份运行状态,相关技术中采用易失性存储器来保存数据,以实现在短暂断电时不采用NVM备份运行状态。
易失性存储器,例如SRAM,相比于NVM具有更快的读写速度、更低的能耗以及更长的使用寿命,并且具有数据保持特性。当处理器的供电电压低于某个阈值(通常为1.8V)时,处理器将停止工作,而SRAM依然能够保持存储的数据不出错误;随着供电电压继续降低,当SRAM的供电电压低于一个更低的阈值(通常为0.4V)后,SRAM上的数据将会陆续出错。
由于物联网设备在大部分时间下,断电时间并不是很长。因此,可以利用SRAM的数据保持特性,在短断电的时候不向NVM备份状态,从而减少系统的状态备份开销。但是,由于SRAM保持数据不出错的时长是不确定的,因此需要在恢复供电后检测SRAM上的数据是否出错。
相关技术中,通过设定预警电压阈值,在物联网设备的电压低于预警电压阈值时,对SRAM中的全部数据进行校验,并将得到的校验码存储至NVM中,物联网设备再停止运行。在供电恢复后,对SRAM中的全部数据重新进行校验,并且得到的校验码与存储于NVM上的校验码进行比对。如果两个校验码相同,则认为断电期间SRAM中的数据没有发生错误,从中断点继续执行程序;如果两个校验码不相同,则认为断电期间SRAM中的数据发生了错误,需要重新开始执行程序。
然而,由于计算SRAM中的全部数据的校验码需要花费较长的时间,为保证能够顺利计算得到校验码并且将该校验码存储至非易失性存储器中,相关技术中通常将预警电压阈值设定为较高的电压值,容易导致物联网设备在剩余较多电量时就停止了运行,影响了物联网设备的实时响应性能。
有鉴于此,本申请实施例提供了一种数据处理方法,在终端的运行过程中,终端执行完程序段之后,计算该程序段所使用的地址区间的校验码,并且基于该校验码以及整个程序所使用的地址区间中的其他地址区间的校验码,确定易失性存储器中的数据的总校验码,无需对整个保存数据的地址区间进行校验码的计算,从而减少计算校验码的能耗和时间,使得终端能够持续运行,保证了终端的实时响应性能。
为了便于理解,以下将对本申请实施例所涉及一些技术术语做详细的介绍。
校验:对目标数据进行校验运算,例如循环冗余校验(Cyclic Redundancy Check,CRC)运算,得到该数据的校验码。
验证:对目标数据进行校验运算,将得到的新校验码和此前对目标数据进行校验运算获得的校验码比对,以确定目标数据是否发生变化的过程。
CRC:一种信道编码技术,能够根据网络数据包或计算机文件等数据产生固定位数的校验码,主要用于检测数据传输或者保存后可能出现的错误。CRC具备线性可加性和零填充(zero-padding)等数学性质。
CRC的线性可加性可以如公式1所示:
其中,A和B为两个独立数据,CRC的线性可加性是指A和B进行异或运算后的CRC结果,与分别对A和B进行CRC运算再进行异或运算的结果相等。
CRC的zero-padding性质可以如公式2所示:
其中,A0...0表示在数据A后增加n个0,即将数据A左移n位。CRC的zero-padding性质是指一个数据左移n位后的CRC结果可以由其乘以某个系数直接得出,而不必重新计算整个数据的CRC。
本申请以下实施例所涉及的终端是指安装有程序应用,且能够间歇性工作的设备,例如可以为物联网设备。该终端中可以设置有能量采集装置,能够从运行环境采集能量来实现终端的供电,例如采集光能、无线电射频、压力或热能等能量并且将这些能量转换为电能,以供该终端间歇性地工作。例如,终端可以是指物联网中具有传感器检测功能或智能功能的接入设备,可以应用于户外、仓库或者室内等环境中,比如支持温度检测的防火设备、光线检测设备、湿度检测设备等监测设备,智能开关、智能摄像头、智能水表、智能家电等智能家居设备。
可以参阅图2,图2为本申请实施例提供的一种数据处理方法的流程示意图。如图2所示,本申请实施例提供了一种数据处理方法,该方法应用于间歇性工作的终端,该方法可以包括以下的步骤。
步骤201,终端执行第一程序段。
本实施例中,在终端中可以安装有一个或多个应用程序,每个应用程序可以包括多个程序段。对于一个应用程序而言,应用程序具有其对应的应用程序代码,终端通过执行应用程序代码来实现应用程序的运行。
一个应用程序代码可以被分隔为多个不重复的子代码片段,子代码片段也可以称为程序段或原子执行片段(Atomic Execution Block,AEB)。将一个应用程序代码分隔为多个程序段的方式可以包括但不限于以下的方式:基于静态检测技术获取应用程序代码中的多个检测点,并且根据该多个检测点来分隔应用程序代码,即相邻的两个检测点之间的代码片段为一个程序段;或者,在应用程序代码是基于任务模型所编写的情况下,一个应用程序代码可以对应多个任务,应用程序代码中的每个程序段即为每个任务对应的子代码片段。
由一个应用程序代码分隔成的多个程序段具有固定的执行顺序,终端在运行期间,可以按照多个程序段的执行顺序依次执行该多个程序段。上述的第一程序段则可以为终端当前所执行的程序段。
步骤202,终端计算第一地址区间对应的第一校验码,该第一地址区间为执行第一程序段时所使用的地址区间。
应理解,在终端执行程序段的过程中,需要访问存储器中的数据,并且对这些数据进行修改,以实现程序段的执行。对于一个程序段而言,终端需要访问的数据通常位于存储器中固定的地址区间中,终端通过访问该地址区间,可以获得并修改该地址区间中的数据,该地址区间可以称为终端执行程序段时所使用的地址区间。
通常,对于同一个程序段,终端执行该程序段时所使用的地址区间是固定不变的,终端可以确定执行时每一个程序段时所使用的地址区间。例如,在程序开发者预先指定程序段对应的地址区间,或者基于相关技术中的分析工具捕获得到每一个程序段对应的地址区间的情况下,终端可以基于程序段与地址区间之间的映射关系,确定在执行每一个程序段时所使用的地址区间。
本实施例中,终端可以确定执行第一程序段时所使用的第一地址区间,并且在终端执行完第一程序段之后,计算该第一地址区间对应的第一校验码。终端例如可以是通过CRC运算来计算第一地址区间中的数据所对应的校验码,从而得到第一校验码。终端也可以是通过其他的校验运算方式来计算得到该第一校验码,只要该校验运算方式具备上述的线性可加性以及zero-padding性质即可,本实施例不对终端计算校验码的方式做具体限定。为便于描述,以下将以终端基于CRC运算得到校验码的方式为例,对以下的实施例进行描述。
步骤203,终端获取第二地址区间对应的第二校验码,第二地址区间为第三地址区间中除第一地址区间之外的地址区间,第三地址区间为执行第一程序段所属的程序时所使用的地址区间。
应理解,由于终端中的每个程序段都有固定对应的地址区间,同一个程序中的所有程序段所对应的多个地址区间可以构成该程序所对应的地址区间。
例如,程序A包括有程序段A1、程序段A2和程序段A3,三个程序段分别对应地址区间1、地址区间2和地址区间3;那么,由地址区间1、地址区间2和地址区间3所构成的地址区间4即为该程序A对应的地址区间。其中,地址区间1、地址区间2和地址区间3可以为三个分别独立的地址区间,例如地址区间1的范围为1-10,地址区间2的范围为11-15,地址区间3的范围为16-20,地址区间4的范围即为1-20。地址区间1、地址区间2和地址区间3之间也可以具有重合的地址范围,例如地址区间1的范围为1-10,地址区间2的范围为5-15,地址区间3的范围为10-20,地址区间4的范围同样为1-20。
也就是说,在本实施例中,终端可以确定执行第一程序段所属的程序时所使用的地址区间(即第三地址区间),并且根据该第三地址区间以及第一地址区间,确定第三地址区间中除第一地址区间之外的地址区间(即第二地址区间)。由于第二地址区间是终端执行该程序中的其他程序段时所使用的地址区间,在其他程序段执行完毕时,终端同样会计算得到其他程序段所使用的地址区间的校验码,因此终端可以获取到该第二地址区间对应的第二校验码。
步骤204,终端根据第一校验码和第二校验码,确定第三校验码,第三校验码为第三地址区间对应的校验码。
在终端获得第一校验码和第二校验码之后,终端可以基于校验运算的zero-padding性质,根据第一校验码和第二校验码确定第三地址区间对应的第三校验码。
示例性地,可以参阅图3,图3为本申请实施例提供的一种地址区间的分布示意图。如图3所示,假设第一地址区间的数据表示为1010,第二地址区间的数据表示为2020,则第一地址区间对应的第一校验码可以表示为CS1=CRC(1010),第二地址区间对应的第二校验码可以表示为CS2=CRC(2020),第三地址区间对应的第三校验码可以表示为CS3=CRC(1010,2020)。基于CRC的zero-padding性质可知,第三校验码CS3可以根据以下的公式3计算得到:
其中,公式3中的常数为给定的一个常数值。由公式3可知,基于两个地址区间分别对应的校验码,可以计算得到两个地址区间对应的总校验码。
应理解,以上公式3是以第二校验码为第二地址区间对应的一个校验码为例,描述了基于第一校验码和第二校验码计算得到第三校验码的过程。在实际情况中,第二地址区间也可以被分为多个地址区间,且构成第二地址区间的多个地址区间均有对应的校验码,则第二校验码也可以是指第二地址区间中的多个地址区间所对应的多个校验码。
示例性地,可以参阅图4,图4为本申请实施例提供的另一种地址区间的分布示意图。如图4所示,第一地址区间包括地址区间1,第一校验码可以是指地址区间1对应的校验码,即第一校验码为CRC(1010);第二地址区间则包括地址区间2以及地址区间3,第二校验码可以是指地址区间2以及地址区间3对应的校验码,第二校验码可以包括CRC(1010)和CRC(1010)。
类似地,在第二校验码是指第二地址区间对应的多个校验码的情况下,同样可以基于CRC的zero-padding性质,由第一校验码和第二校验码计算得到第三校验码,本实施例不再对具体的计算过程赘述。
步骤205,将第三校验码存储于NVM,第三校验码用于在终端恢复供电后校验易失性存储器中的数据的正确性,第三地址区间位于易失性存储器中。
终端在计算得到第三校验码之后,可以将第三校验码存储至NVM中,以保证第三校验码在终端断电之后的正确性。由于在终端断电之后,NVM中的数据也不会发生错误,因此,当终端经历断电并恢复供电之后,终端可以根据存储于NVM中的第三校验码,对第三地址区间中的数据进行验证。也就是说,在恢复供电之后,终端可以重新计算位于易失性存储器中的第三地址区间的校验码,并且将重新计算得到的校验码与存储于NVM中的第三校验码进行比对。如果两个校验码相同,则可以认为易失性存储器中的数据在断电期间没有发生错误,终端可以基于易失性存储器中的数据继续执行程序;如果两个校验码不相同,则可以认为易失性存储器中的数据在断电期间发生了错误,终端不能够再基于易失性存储器中的数据执行程序。
本实施例中,终端通过在执行完程序段之后,计算该程序段所使用的地址区间的校验码,并且基于该校验码以及整个程序所使用的地址区间中的其他地址区间的校验码,可以确定程序所使用的地址区间的总校验码。终端不再需要对整个保存数据的地址区间进行校验码的计算,从而减少计算校验码的能耗和时间,使得终端能够持续运行,保证了终端的实时响应性能。
可以参阅图5,图5为本申请实施例提供的一种终端的运行对比示意图。如图5所示,在相关技术中,终端在其电压达到预警电压之后则停止执行程序,而处理器实际上在一段时间之后才会真正断电。在终端停止执行程序直至处理器断电的时间内,终端处于待机状态,程序无法持续推进,导致终端的实时响应性较差。
在本实施例提供的方案中,终端在其电压达到预警电压之后,可以持续执行程序段,并且对程序段所使用的地址区间进行校验,以保证恢复供电后的数据正确性。这样一来,在处理器真正断电之前,终端一直在推进程序的执行,直至处理器断电停止运行。也就是说,在本方案中,终端能够尽可能地延长其执行程序的时间,保证了终端的实时响应性能。
在一个可能的实施例中,终端可以周期性地将易失性存储器中的数据存储至NVM。例如,终端可以每隔5分钟或10分钟,则将易失性存储器中的数据拷贝至NVM中,从而实现定期在NVM中备份检测点。这样,在终端恢复供电后,确定易失性存储器中的数据验证有误时,可以恢复到最近一次存储在NVM中的检测点,避免终端频繁地重复执行程序。
在一个可能的实施例中,终端还可以是将第一校验码和第二校验码存储于易失性存储器,将第三校验码存储于NVM。这样,终端在发生断电且恢复供电之后,可以直接基于易失性存储器中的第一校验码和第二校验码计算新的校验码,并且将该新的校验码与存储于NVM中的第三校验码进行比对。如果新的校验码与第三校验码相同,则可以确定易失性存储器中的第一校验码和第二校验码没有发生错误,即可以认为易失性存储器中的数据在断电期间没有发生错误;如果新的校验码与第三校验码不相同,则可以确定易失性存储器中的第一校验码或第二校验码发生了错误,即可以认为易失性存储器中的数据在断电期间已经发生错误。
通过将第一校验码和第二校验码存储于易失性存储器中,来实现易失性存储器中的数据的正确性的验证,可以省去重新计算易失性存储器中数据的校验码的过程,节省了终端验证数据正确性的时间,延长终端有效运行的时间。
在一个可能的实施例中,在终端通过存储于易失性存储器中的校验码以及存储于NVM中的校验码,来验证断电后易失性存储器中的数据的正确性时,终端还可以在执行每个程序段之前,基于易失性存储器中的校验码对程序段进行验证,以进一步确保数据的正确性。
示例性地,终端在执行第一程序段之前,可以确定第一程序段对应的第一地址区间,并且获取第一地址区间对应的校验码,第一地址区间对应的校验码存储于易失性存储器中。如果终端根据第一地址区间对应的校验码确定第一地址区间中的数据正确之后,则确定可以执行第一程序段。如果第一地址区间的数据不正确,则终端可以重新启动系统或恢复至NVM上存储的最近的一个检测点。
应理解,由于易失性存储器中的数据是随机性发生变化的,在确定校验码无误的情况下,在执行程序段之前,基于校验码确定该程序段对应的地址区间中的数据是否正确,能够进一步确保数据的正确性,保证终端的正常运行。
由于易失性存储器具有数据保持特性,在终端断电时间较短的情况下,即便是不验证易失性存储器中的数据,也可以确定易失性存储器没有发生错误。而在终端断电时间较长的情况下,即便是不验证易失性存储器中的数据,也可以确定易失性存储器已经发生了错误。
基于此,在一个可能的实施例中,终端在恢复供电后,可以获取自身的断电时长。若终端的断电时长小于第一时长,则确定易失性存储器中的数据正确;若终端的断电时长大于第一时长且小于第二时长,则确定需要校验易失性存储器中的数据的正确性;若终端的断电时长大于第二时长,则确定易失性存储器中的数据不正确;其中,第一时长小于第二时长。
应理解,尽管易失性存储器的数据保持特性会因其工作环境、自身材质等因素产生一定的波动,终端的设计者仍然确定出两个能够保证准确的时长,即上述的第一时长和第二时长。其中,第一时长表示终端断电的时间足够短,易失性存储器上的数据保证不会出错,因此,在终端的断电时长小于第一时长时,终端可以跳过数据验证的步骤。类似地,第二时长表示终端的断电时间足够长,易失性存储器上的数据肯定已经发生错误,因此,在终端的断电时长大于第二时长时,终端可以重新启动系统或恢复至NVM上存储的最近的一个检测点。
通过设定第一时长和第二时长,可以使得终端能够根据实际断电时长决定是否需要进行数据验证,避免了每次恢复供电后都进行数据验证,节省了终端进行数据验证的时间,延长终端有效运行的时间。
作为一种可能的示例,可以参阅图6a,图6a为本申请实施例提供的一种用于确定断电时长的电路的结构示意图。如图6a所示,该电路包括左边虚线框所示的间歇供电电路以及右边虚线框所示的时间保持电路。该时间保持电路由开关S1、开关S2、电容C2以及电阻构成。该时间保持电路的工作模式为:
1、终端的处理器断电时,断开开关S1和S2,使得电容C2为电阻供电。
2、当电容C1充电达到处理器的启动阈值后,检测电容C2的两端电压,从而推测计算断电时长Toff与第一时长TLB和第二时长TUB之间的大小关系。
3、闭合开关S1和开关S2,给电容C2充电,以便下次测量断电时长。
具体地,电容C2的两端电压在断电后的变化曲线可以参阅图6b,图6b为本申请实施例提供的一种时间保持电路的电压变化曲线示意图。
在一个可能的实施例中,终端中的易失性存储器中还可以包括第四地址区间,并且该第四地址区间存储的数据与执行第一程序段前该第三地址区间所存储的数据相同。其中,该第三地址区间被标记为工作区间(working buffer),工作区间是指程序执行时所使用的区间,即程序中在执行过程中是在工作区间访问并且修改相应的数据。该第四地址区间被标记为备份区间(backup buffer),备份区间则是用于备份工作区间的数据。
也就是说,在执行第一程序段之前,终端可以将第三地址区间中的数据拷贝至第三地址区间中,以保证作为工作区间的第三地址区间中的数据与作为备份区间的第四地址区间中的数据相同,实现工作区间中的数据的备份。这样,如果终端在执行第一程序段的期间发生了断电,那么终端可以在恢复供电之后,将备份区间中的数据拷贝至工作区间,以恢复工作区间中的数据。
示例性地,可以参阅图7,图7为本申请实施例提供的一种执行程序段的流程示意图。如图7所示,终端在断电前后执行程序段的流程包括以下的步骤。
在步骤701中,终端执行程序段1。
其中,该程序段1包括对变量x进行加操作。因此,终端对工作区间中的变量x进行加操作,从而将变量x的值从0修改为1。此外,在终端执行程序段1的过程中,即终端执行了对变量x进行加操作之后,终端发生了断电,并且在短暂断电之后,终端恢复了供电。
在步骤702中,在终端恢复供电之后,终端将备份区间中的数据拷贝至工作区间。
由于终端在断电之前对工作区间中的变量x执行了加操作,因此,在恢复供电之后,工作区间中的变量x的值为1,而备份区间中的变量x的值仍然为0。终端可以将备份区间中的数据拷贝至工作区间,从而使得工作区间中的变量x的值仍然为0。
在步骤703中,终端重新执行程序段1。
在终端恢复了工作区间中的数据之后,终端继续运行,即重新执行程序段1,并且对工作区间中的变量x执行加操作,从而将变量x的值从0修改为1。
由图7以及上述的步骤可知,如果终端中没有设置备份区间,那么在终端恢复供电之后,工作区间中的变量x的值为1。这样一来,终端在重新执行程序段1时,变量x的初始值不是0,终端会将变量x的值从1修改为2,从而导致数据出现错误,影响了终端的正常运行。
本实施例中,通过设置备份区间,在终端执行程序段之前,保证备份区间能够备份有工作区间中的数据,确保了在终端断电且恢复供电之后,工作区间中的数据能够得以恢复,以避免终端出现数据错误的现象,保证了数据的正确性。
应理解,为了保证备份区间能够起到数据备份的有效作用,终端在每次执行完程序段之后,需要进行数据拷贝,以保证备份区间和工作区间的数据相同。
在一个可能的实施例中,终端执行数据拷贝的过程可以包括:在第一程序段执行完毕之后,终端将第四地址区间标记为工作区间,以及将第三地址区间标记为备份区间;然后,终端再将第三地址区间的数据拷贝至第四地址区间。
也就是说,在执行完第一程序段之后,终端通过执行交换指针的操作,将原先作为工作区间的第三地址区间标记为备份区间,而将原先作为备份区间的第四地址区间标记为工作区间,以实现工作区间和备份区间的交换。然后,终端再将第四地址区间的数据拷贝至第三地址区间,保证数据的一致性。例如,在执行第一程序段之前,终端通过指针“0”标记第三地址区间为工作区间,以及通过指针“1”标记第四地址区间为备份区间;在执行完第一程序段之后,终端通过交换指针,以实现通过指针“1”标记第三地址区间为备份区间,以及通过指针“0”标记第四地址区间为工作区间。
本实施例中,在执行完程序段之后,通过交换指针来实现工作区间和备份区间的快速互换,可以有效避免在数据拷贝过程中发生断电而出现数据错误的现象。
示例性地,如果在执行完第一程序段之后,直接将第三地址区间中的数据拷贝至第四地址区间中。那么,如果终端在数据拷贝过程中断电,在终端恢复供电后,终端仍然需要将备份区间(即第四地址区间)的数据拷贝至工作区间(即第三地址区间)。然而,由于此时备份区间在断电之前已经拷贝有部分工作区间中的数据,因此备份区间中的数据实际上已经受到污染,是错误的数据。这样一来,将备份区间中的数据恢复至工作区间,同样会导致工作区间中的数据是错误的数据,从而影响了终端的正常运行。
对于本实施例中交换指针的方案而言,即便终端在将第三地址区间中的数据拷贝至第四地址区间的过程中发生了断电,由于第三地址区间已经被标记为备份区间,在数据拷贝过程中,备份区间中的数据并不会被污染。终端恢复供电后,仍然可以保证备份区间中的数据是正确的,从而保证终端的正常运行。
在一个可能的实施例中,在终端设置有工作区间以及备份区间的情况下,终端还可以基于备份区间中的数据来获取第二地址区间对应的第二校验码。
具体地,终端获取第二地址区间对应的第二校验码的过程,可以包括:终端计算第四地址区间中与第一地址区间对应的地址区间的第四校验码;根据第四地址区间对应的校验码以及第四校验码,确定第二校验码。
可以理解的是,由于第四地址区间为第三地址区间对应的备份区间,第四地址区间的地址范围与第三地址区间的地址范围是相同的且固定不变的。例如,第三地址区间的地址范围可以为1-100,第四地址区间的地址范围则可以为101-200。那么,在执行第一程序段之前,对于第三地址区间中的任意一段地址区间,在第四地址区间中均有对应的地址区间,以使得这两段地址区间上的数据是相同的。例如,第三地址区间中地址范围为50-60的地址区间与第四地址区间中地址范围为150-160的地址区间对应,且地址范围为50-60的地址区间与地址范围为150-160的地址区间上的数据相同。
也就是说,在第一程序段执行完毕之后,由于第三地址区间上的第一地址区间中的数据发生了改变,因此第四地址区间中与第三地址区间上的数据不相同的地址区间则为:第一地址区间对应的地址区间。而第四地址区间中的其他地址区间实际上还是与第三地址区间中的第二地址区间上的数据相同。这样一来,终端可以通过计算第四地址区间中与第一地址区间对应的地址区间的校验码,并且基于上述的zero-padding性质以及第四地址区间的校验码,确定得到第四地址区间中的其他地址区间的校验码,即第二地址区间对应的第二校验码。
示例性地,可以参阅图8,图8为本申请实施例提供的一种计算校验码的示意图。如图8所示,在执行程序段之前,备份区间与工作区间中的数据相同,备份区间中的地址区间S0、地址区间S1分别与工作区间中的地址区间S0'、地址区间S1'对应,且地址区间S0以及地址区间S1对应的校验码均是在执行其他的程序段之后计算得到的。在执行程序段1之后,程序段1访问并修改了工作区间中的地址区间S2',从而使得工作区间划分成为S01'、S2'、S11'三个地址区间。对应的,备份区间同样可以划分为三个之对应的地址区间:S01、S02+S12、S11。
由图8可知,执行程序段1之后的工作区间所对应的校验码实际上可以基于地址区间S01'、地址区间S2'以及地址区间S11'分别对应的校验码计算得到。其中,地址区间S2'的子校验码可以直接对地址区间S2'上的数据进行校验码计算得到。对于地址区间S01'、以及地址区间S11'对应的校验码,则可以通过计算备份区间中的地址区间S01以及地址区间S11对应的校验码得到。通过直接计算备份区间中的地址区间S02的校验码,并且基于已知的地址区间S0的校验码,则可以计算得到地址区间S01的校验码,即CS(S01')=CS(S01)=CS(S0)-CS(S02)。类似地,通过直接计算备份区间中的地址区间S12的校验码,并且基于已知的地址区间S1的校验码,则可以计算得到地址区间S11的校验码,即CS(S11')=CS(S11)=CS(S1)-CS(S12)。
通过基于备份区间上的数据来计算工作区间中的第二地址区间对应的第二校验码,可以在第一地址区间较小时,有效地降低进行CRC运算所消耗的时间和能耗,提高终端在执行完程序段后计算校验码的效率,从而能够节省终端的电能,延长终端有效运行的时间。
可以理解的是,在运行环境的能量源充足的情况下,终端中的电量可以保持较高的水平,从而确保终端在接下来较长的一段时间内不会发生断电。在这种情况下,终端并不需要在每次执行完程序段之后都计算一次校验码,以节省终端的能耗。
示例性地,在终端执行第一程序段之前,终端根据终端的电压高于阈值电压,执行一个或多个第二程序段。第二程序段可以是指第一程序段所属的程序中的任意一个其他的程序段,该程序中可以包括有一个或多个第二程序段。终端标记执行一个或多个第二程序段时所使用的地址区间。根据当前电压低于阈值电压,终端计算被标记的地址区间对应的校验码。该阈值电压用于表示终端处于低电量水平,即终端随时可能面临断电。阈值电压的取值可以根据终端实际的能量采集能力而定,本实施例不做具体限定。
其中,终端可以是在每执行完一个程序段之后,则标记执行该程序段时所使用的地址区间;终端也可以是在执行完多个程序段之后,再标记执行该多个程序段时所使用的地址区间。
此外,终端在每执行完一个程序段之后,可以检测一次终端当前的电压,以确定当前的电压是否低于阈值电压。这样,在终端确定当前电压低于阈值电压时,终端统一对已标记的地址区间进行校验码计算,以尽可能减少计算校验码的次数。
为便于理解,以下将结合具体例子对本申请实施例提供的数据处理方法进行详细描述。可以参阅图9,图9为本申请实施例提供的一种终端运行的流程示意图。
如图9所示,终端上电后的运行过程包括以下的步骤。
步骤S1、终端每次恢复供电后,首先确定上一次断电的时间长度。如果断电时间过长,即Toff>TUB,终端重启或恢复至NVM上存储的最近一个检测点。其中,Toff表示终端的断电时长,TUB表示上述的第二时长,即易失性存储器上的数据一定出错的时间上限。
步骤S2、如果断电时间足够短,即Toff<TLB,则将易失性存储器上的数据的标记位(flag)置为0,即置flag=0。其中,flag用于标记易失性存储器上的数据的正确性,在flag为0的情况下,表示数据正确,可以跳过对数据的验证操作。
步骤S3、如果断电时长介于TUB和TLB之间,即TLB<Toff<TUB,则将易失性存储器上的数据的flag置为1,即置flag=1,表示数据不一定正确,需要对数据进行验证。
步骤S4、在TLB<Toff<TUB的情况下,终端执行程序段之前,需要验证易失性存储器上的数据对应的校验码是否正确。即终端通过比对易失性存储器上所存储的校验码与NVM上所存储的校验码是否相同,来验证易失性存储器上的数据对应的校验码是否正确。如果验证不通过(即校验码不相同),则代表易失性存储器上的数据发生错误,终端重启或恢复至NVM上存储的最近一个检测点。
步骤S5、终端判断当前的电压V是否大于阈值电压VT。
步骤S6、当电压V高于阈值电压VT时,表示终端当前处于高电量水平,可以执行高电量水平工作模式,即不需要在每次执行完程序段之后都计算校验码。
终端确定准备执行的程序段需要使用的数据的flag,如果flag=1,则终端需要验证该程序段要使用的数据,且这部分数据验证不通过时终端重启或恢复至NVM上存储的最近一个检测点。如果flag=0,则终端不需要验证该程序段要使用的数据。
步骤S7、如果程序段要使用的数据验证通过或不需要验证该程序段要使用的数据,则终端将备份区间中的数据拷贝至工作区间。
步骤S8、终端执行该程序段。
步骤S9、在该程序段执行完毕后,终端标记已修改的地址区间(即标记该程序段使用的数据所在的地址区间),然后调度下一个就绪的程序段,重复执行步骤S6至S9。
步骤S10、当电压V低于阈值电压VT时,表示终端当前处于低电量水平,需要执行低电量水平工作模式,即在每次执行完程序段之后都计算校验码。终端计算已标记的地址区间的校验码,以及计算得到整个程序所使用的地址区间的总校验码并将该总校验码存储至NVM。
步骤S11、可选的,终端可以将易失性存储器上的所有数据拷贝至NVM中作为一个检测点。
步骤S12、终端交换备份区间和工作区间的指针,即将易失性存储器中原先的备份区间标记为工作区间并将原先的工作区间标记为备份区间,并且将交换指针后的备份区间中的数据拷贝至工作区间。
步骤S13、终端确定准备执行的程序段需要使用的数据的flag,如果flag=1,则终端需要验证该程序段要使用的数据,且这部分数据验证不通过时终端重启或恢复至NVM上存储的最近一个检测点。如果flag=0,则终端不需要验证该程序段要使用的数据。
步骤S14、终端验证工作区间中下一个程序段要使用的数据,即通过保存在易失性存储器中的校验码验证程序段要使用的数据。
步骤S15、终端确定该程序段要使用的数据是否验证通过,如果验证不通过,则终端重启或恢复至NVM上存储的最近一个检测点。
步骤S16、如果验证通过,终端执行该程序段。
步骤S17、在执行完程序段之后,终端交换备份区间和工作区间的指针。
步骤S18、终端计算备份区间中执行该程序段所使用的地址区间对应的校验码,以及根据该校验码计算程序所使用的地址区间对应的总校验码,并将该总校验码存储至NVM中。
步骤S19、终端将备份区间的数据拷贝至工作区间,然后调度下一个就绪的程序段,重复执行步骤S13至S19,直至断电。
以上对终端上电后的运行过程进行了详细的描述,以下将结合附图详细描述终端运行过程中易失性存储区中的数据的变化过程。
可以参阅图10a,图10a为本申请实施例提供的一种程序段与地址区间之间的关系示意图。
如图10a所示,应用程序的代码中包括程序段1、程序段2和程序段3,程序段1、程序段2和程序段3分别会使用地址区间DB1、DB2和DB3。
可以参阅图10b,图10b为本申请实施例提供的一种终端在低电量水平下执行程序段的流程示意图。如图10b所示,终端在低电量水平下执行程序段的过程包括以下的步骤。
在t0时刻,终端成功执行程序段1。工作区间中的DB1更新为DB1’。并且,终端检测发现当前电压值已低于阈值电压,终端进入低电量水平工作模式。
在t1时刻,终端计算已修改的地址区间的校验码,即计算DB1’的校验码,得到CS1。另外,在执行之前的程序段时,终端还计算得到工作区间中其他地址区间的校验码,分别为CS0、CS_delta以及CSn。这样,终端可以根据工作区间对应的多个子校验码计算出工作区间对应的总校验码CS_total,并且将CS_total存储至NVM。此外,终端还将工作区间的数据拷贝至备份区间。
在t2时刻,终端准备调度执行程序段2,程序段2会用到工作区间中的地址区间DB2。由于DB2的数据正确性在本上电周期内未被校验过,终端可以通过校验码CS_delta验证数据区间DB2、DB3和DB4的正确性。如果验证结果为数据未发生错误,终端可以执行程序段2。
在t3时刻,终端调度执行程序段2,且执行程序段2期间对DB2的修改均发生在工作区间上。
在t4时刻,终端成功执行程序段2,工作区间中的DB2更新至DB2’。终端通过交换指针,将DB2’快速更新至备份区间。
在t5时刻,终端计算已修改的地址区间的校验码,即计算DB2’的校验码,得到CS2。对于DB3至DB4的校验码,终端可以通过DB2至DB4的校验码CS_delta以及DB2的校验码CS(DB2)计算得到,即CS_delta-CS(DB2)。这样,终端可以根据工作区间对应的多个子校验码CS0、CS1、CS2、CS_delta-CS(DB2)以及CSn计算出总校验码CS_total,并且将CS_total存储至NVM。
在t6时刻,终端将备份区间中的DB2’拷贝至工作区间中,并且验证DB3的数据正确性。由于DB2已在t2时刻通过CS_delta一并验证了,因此终端可以确定调度执行程序段3。
在t7时刻,终端调度执行程序段3,程序段3执行期间对DB3的修改均发生在工作区间上。
在t8时刻,终端执行程序段3的期间发生断电。工作区间上的数据可能存在问题,因此工作区间上的数据已不可用。
可以参阅图11,图11为本申请实施例提供的一种终端在恢复供电后的运行示意图。如图11所示,终端在恢复供电后执行以下的步骤。
步骤1101,终端通过NVM上的总校验码CS_total,验证易失性存储器上的校验码是否正确。即终端基于易失性存储器上的校验码(即CS0、CS1、CS2、CS_delta以及CSn),重新计算一个新的总校验码,并且将新的总校验码与存储于NVM上的总校验码进行比对,如果两者相同,则代表易失性存储器上的校验码正确,如果两者不相同,则代表易失性存储器上的数据发生了错误。
步骤1102,在易失性存储器上的校验码验证正确的情况下,终端基于校验码CS_delta验证程序段3要使用的数据(即DB3)是否正确。
步骤1103,在程序段3要使用的数据验证正确的情况下,终端将备份区间的数据拷贝至工作区间。
步骤1104,终端调度执行程序段3。
在图1至图11所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体可以参阅图12,图12为本申请实施例提供的一种终端1200的结构示意图,该终端1200包括:处理单元1201和获取单元1202;处理单元1201,用于执行第一程序段;处理单元1201,还用于计算第一地址区间对应的第一校验码,第一地址区间为执行第一程序段时所使用的地址区间;获取单元1202,用于获取第二地址区间对应的第二校验码,第二地址区间为第三地址区间中除第一地址区间之外的地址区间,第三地址区间为执行第一程序段所属的程序时所使用的地址区间;处理单元1201,还用于根据第一校验码和第二校验码,确定第三校验码,第三校验码为第三地址区间对应的校验码;处理单元1201,还用于将第三校验码存储于非易失性存储器,第三校验码用于在终端恢复供电后校验易失性存储器中的数据的正确性,第三地址区间位于易失性存储器中。
在一些可能的实现方式中,易失性存储器中还包括第四地址区间,第四地址区间存储的数据与执行第一程序段前第三地址区间存储的数据相同;其中,第三地址区间被标记为工作区间,第四地址区间被标记为备份区间,工作区间为程序执行时所使用的区间,备份区间用于备份工作区间的数据。
在一些可能的实现方式中,处理单元1201具体用于:计算第四地址区间中与第一地址区间对应的地址区间的第四校验码;根据第四地址区间对应的校验码以及第四校验码,确定第二校验码。
在一些可能的实现方式中,处理单元1201还用于:将第四地址区间标记为工作区间,以及将第三地址区间标记为备份区间;将第三地址区间的数据拷贝至第四地址区间。
在一些可能的实现方式中,处理单元1201还用于:将第一校验码和第二校验码存储于易失性存储器,第一校验码和第二校验码用于在终端恢复供电后与第三校验码进行比对,以验证易失性存储器中的数据的正确性。
在一些可能的实现方式中,处理单元1201还用于:在终端恢复供电后,获取终端的断电时长;若断电时长小于第一时长,则确定易失性存储器中的数据正确;若断电时长大于第一时长且小于第二时长,则确定需要校验易失性存储器中的数据的正确性;若断电时长大于第二时长,则确定易失性存储器中的数据不正确;其中,第一时长小于第二时长。
在一些可能的实现方式中,处理单元1201还用于:根据终端的电压高于阈值电压,执行一个或多个第二程序段;标记执行一个或多个第二程序段时所使用的地址区间;根据终端的电压低于阈值电压,计算被标记的地址区间对应的校验码。
在一些可能的实现方式中,处理单元1201还用于:确定第一程序段对应的第一地址区间;获取第一地址区间对应的校验码,第一地址区间对应的校验码存储于易失性存储器中;根据第一地址区间对应的校验码确定第一地址区间中的数据正确;基于第一地址区间中的数据正确,确定执行第一程序段。
在一些可能的实现方式中,处理单元1201还用于:将易失性存储器中的数据周期性地存储至非易失性存储器。
可以参阅图13,图13为本申请实施例提供的一种终端100的结构示意图。
如图13所示,终端100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,能源采集模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,传感器模块170等。其中,传感器模块170可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本申请实施例示意的结构并不构成对终端100的具体限定。在本申请另一些实施例中,终端100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
压力传感器用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器可以用于确定终端100的运动姿态。气压传感器用于测量气压。
加速度传感器可检测终端100在各个方向上(包括三轴或六轴)加速度的大小。当终端100静止时可检测出重力的大小及方向。
距离传感器,用于测量距离。
环境光传感器用于感知环境光亮度。
指纹传感器用于采集指纹。
温度传感器用于检测温度。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是终端100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I1C)接口,集成电路内置音频(inter-integrated circuitsound,I1S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端100的结构限定。在本申请另一些实施例中,终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
能源采集模块140用于从运行环境获取能源输入,例如获取光能、无线电射频、压力或热能等能量,并将这些能量转化为电能储存于电池142。
电源管理模块141用于连接电池142,能源采集模块140以及处理器110。电源管理模块141接收电池142和/或能源采集模块140的输入,为处理器110,内部存储器121,外部存储器和无线通信模块160等供电。
终端100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在终端100上的包括1G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线2转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在终端100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线1接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端100的各种功能应用以及数据处理。内部存储器121可以包括易失性存储器121A和非易失性存储器121B,易失性存储器121A用于存储执行程序过程中所使用的数据,非易失性存储器121B用于保存易失性存储器121A中的数据对应的校验码以及备份易失性存储器121A中的数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法应用于间歇性工作的终端,包括:
执行第一程序段;
计算第一地址区间对应的第一校验码,所述第一地址区间为执行所述第一程序段时所使用的地址区间;
获取第二地址区间对应的第二校验码,所述第二地址区间为第三地址区间中除所述第一地址区间之外的地址区间,所述第三地址区间为执行所述第一程序段所属的程序时所使用的地址区间;
根据所述第一校验码和所述第二校验码,确定第三校验码,所述第三校验码为所述第三地址区间对应的校验码;
将所述第三校验码存储于非易失性存储器,所述第三校验码用于在所述终端恢复供电后校验易失性存储器中的数据的正确性,所述第三地址区间位于所述易失性存储器中。
2.根据权利要求1所述的数据处理方法,其特征在于,所述易失性存储器中还包括第四地址区间,所述第四地址区间存储的数据与执行所述第一程序段前所述第三地址区间存储的数据相同;
其中,所述第三地址区间被标记为工作区间,所述第四地址区间被标记为备份区间,所述工作区间为程序执行时所使用的区间,所述备份区间用于备份所述工作区间的数据。
3.根据权利要求2所述的数据处理方法,其特征在于,所述获取第二地址区间对应的第二校验码,包括:
计算所述第四地址区间中与所述第一地址区间对应的地址区间的第四校验码;
根据所述第四地址区间对应的校验码以及所述第四校验码,确定所述第二校验码。
4.根据权利要求2或3所述的数据处理方法,其特征在于,在所述第一程序段执行完毕之后,所述方法还包括:
将所述第四地址区间标记为工作区间,以及将所述第三地址区间标记为备份区间;
将所述第三地址区间的数据拷贝至所述第四地址区间。
5.根据权利要求1至4任意一项所述的数据处理方法,其特征在于,所述方法还包括:
将所述第一校验码和所述第二校验码存储于所述易失性存储器,所述第一校验码和所述第二校验码用于在所述终端恢复供电后与所述第三校验码进行比对,以验证所述易失性存储器中的数据的正确性。
6.根据权利要求1至5任意一项所述的数据处理方法,其特征在于,所述方法还包括:
在所述终端恢复供电后,获取所述终端的断电时长;
若所述断电时长小于第一时长,则确定所述易失性存储器中的数据正确;
若所述断电时长大于所述第一时长且小于第二时长,则确定需要校验所述易失性存储器中的数据的正确性;
若所述断电时长大于所述第二时长,则确定所述易失性存储器中的数据不正确;
其中,所述第一时长小于所述第二时长。
7.根据权利要求1至6任意一项所述的数据处理方法,其特征在于,所述执行第一程序段之前,所述方法还包括:
根据所述终端的电压高于阈值电压,执行一个或多个第二程序段;
标记执行所述一个或多个第二程序段时所使用的地址区间;
根据所述终端的电压低于所述阈值电压,计算被标记的地址区间对应的校验码。
8.根据权利要求1至7任意一项所述的数据处理方法,其特征在于,所述执行第一程序段之前,所述方法还包括:
确定所述第一程序段对应的第一地址区间;
获取所述第一地址区间对应的校验码,所述第一地址区间对应的校验码存储于所述易失性存储器中;
根据所述第一地址区间对应的校验码确定所述第一地址区间中的数据正确;
基于所述第一地址区间中的数据正确,确定执行所述第一程序段。
9.根据权利要求1至8任意一项所述的数据处理方法,其特征在于,所述方法还包括:
将所述易失性存储器中的数据周期性地存储至所述非易失性存储器。
10.一种终端,其特征在于,所述终端包括:处理器、非易失性存储器和易失性存储器;所述处理器用于:
执行第一程序段;
计算第一地址区间对应的第一校验码,所述第一地址区间为执行所述第一程序段时所使用的地址区间;
获取第二地址区间对应的第二校验码,所述第二地址区间为第三地址区间中除所述第一地址区间之外的地址区间,所述第三地址区间为执行所述第一程序段所属的程序时所使用的地址区间;
根据所述第一校验码和所述第二校验码,确定第三校验码,所述第三校验码为所述第三地址区间对应的校验码;
将所述第三校验码存储于所述非易失性存储器,所述第三校验码用于在所述终端恢复供电后校验所述易失性存储器中的数据的正确性,所述第三地址区间位于所述易失性存储器中。
11.根据权利要求10所述的终端,其特征在于,所述易失性存储器中还包括第四地址区间,所述第四地址区间存储的数据与执行所述第一程序段前所述第三地址区间存储的数据相同;
其中,所述第三地址区间被标记为工作区间,所述第四地址区间被标记为备份区间,所述工作区间为程序执行时所使用的区间,所述备份区间用于备份所述工作区间的数据。
12.根据权利要求11所述的终端,其特征在于,所述处理器具体用于:
计算所述第四地址区间中与所述第一地址区间对应的地址区间的第四校验码;
根据所述第四地址区间对应的校验码以及所述第四校验码,确定所述第二校验码。
13.根据权利要求11或12所述的终端,其特征在于,所述处理器还用于:
将所述第四地址区间标记为工作区间,以及将所述第三地址区间标记为备份区间;
将所述第三地址区间的数据拷贝至所述第四地址区间。
14.根据权利要求10至13任意一项所述的终端,其特征在于,所述处理器还用于:
将所述第一校验码和所述第二校验码存储于所述易失性存储器,所述第一校验码和所述第二校验码用于在所述终端恢复供电后与所述第三校验码进行比对,以验证所述易失性存储器中的数据的正确性。
15.根据权利要求10至14任意一项所述的终端,其特征在于,所述处理器还用于:
在所述终端恢复供电后,获取所述终端的断电时长;
若所述断电时长小于第一时长,则确定所述易失性存储器中的数据正确;
若所述断电时长大于所述第一时长且小于第二时长,则确定需要校验所述易失性存储器中的数据的正确性;
若所述断电时长大于所述第二时长,则确定所述易失性存储器中的数据不正确;
其中,所述第一时长小于所述第二时长。
16.根据权利要求10至15任意一项所述的终端,其特征在于,所述处理器还用于:
根据所述终端的电压高于阈值电压,执行一个或多个第二程序段;
标记执行所述一个或多个第二程序段时所使用的地址区间;
根据所述终端的电压低于所述阈值电压,计算被标记的地址区间对应的校验码。
17.根据权利要求10至16任意一项所述的终端,其特征在于,所述处理器还用于:
确定所述第一程序段对应的第一地址区间;
获取所述第一地址区间对应的校验码,所述第一地址区间对应的校验码存储于所述易失性存储器中;
根据所述第一地址区间对应的校验码确定所述第一地址区间中的数据正确;
基于所述第一地址区间中的数据正确,确定执行所述第一程序段。
18.根据权利要求10至17任意一项所述的终端,其特征在于,所述处理器还用于:
将所述易失性存储器中的数据周期性地存储至所述非易失性存储器。
19.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。
20.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述包括计算机可读指令,在计算机上运行时,使得所述计算机执行如权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010997523.3A CN114253758A (zh) | 2020-09-21 | 2020-09-21 | 一种数据处理方法及相关装置 |
PCT/CN2021/118918 WO2022057872A1 (zh) | 2020-09-21 | 2021-09-17 | 一种数据处理方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010997523.3A CN114253758A (zh) | 2020-09-21 | 2020-09-21 | 一种数据处理方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114253758A true CN114253758A (zh) | 2022-03-29 |
Family
ID=80776443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010997523.3A Pending CN114253758A (zh) | 2020-09-21 | 2020-09-21 | 一种数据处理方法及相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114253758A (zh) |
WO (1) | WO2022057872A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115480835A (zh) * | 2021-05-31 | 2022-12-16 | 合肥杰发科技有限公司 | 程序启动方法和设备、存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140519A (zh) * | 2006-09-04 | 2008-03-12 | 广达电脑股份有限公司 | 嵌入式系统及其开机程序码自动备份方法 |
CN101710253B (zh) * | 2009-11-25 | 2012-06-13 | 安凯(广州)微电子技术有限公司 | 嵌入式系统的深度休眠方法 |
CN103763064A (zh) * | 2014-01-26 | 2014-04-30 | 中国电子科技集团公司第五十八研究所 | 适用于超高速通讯系统的循环冗余校验码生成方法与电路 |
CN109426579A (zh) * | 2017-08-28 | 2019-03-05 | 西门子公司 | 机床加工文件的中断恢复方法及适用该方法的机床 |
CN108038021B (zh) * | 2017-11-13 | 2021-03-02 | 北京全路通信信号研究设计院集团有限公司 | 一种计算机程序运行阶段代码内存校验方法 |
KR102406571B1 (ko) * | 2017-12-28 | 2022-06-08 | 삼성전자주식회사 | 디스플레이 장치 및 그 동작방법 |
CN111552590B (zh) * | 2020-04-16 | 2022-09-30 | 国电南瑞科技股份有限公司 | 一种电力二次设备内存位翻转的检测恢复方法及系统 |
-
2020
- 2020-09-21 CN CN202010997523.3A patent/CN114253758A/zh active Pending
-
2021
- 2021-09-17 WO PCT/CN2021/118918 patent/WO2022057872A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022057872A1 (zh) | 2022-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10592126B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
US20070174579A1 (en) | Apparatus for collecting garbage block of nonvolatile memory according to power state and method of collecting the same | |
US10089182B2 (en) | Energy-efficient nonvolatile microprocessor | |
CN102103596B (zh) | 在嵌入式系统中实现文件系统的方法 | |
CN103677869A (zh) | 无线传感器网络节点远程代码更新系统及方法 | |
CN112817527A (zh) | 掉电数据存储方法、单片机及计算机可读存储介质 | |
CN102567054B (zh) | 双塔放大器的控制方法及相应的装置 | |
EP4031971A1 (en) | Incrementally updating recovery map data for a memory system | |
US20230127512A1 (en) | Memory performance optimization method, memory control circuit unit and memory storage device | |
WO2022057872A1 (zh) | 一种数据处理方法及相关装置 | |
CN103049713A (zh) | 对存储设备中数据进行巡检的方法、设备及系统 | |
US20130179715A1 (en) | Systems and methods for reducing energy consumption in sensor networks | |
CN115687174A (zh) | 一种固态硬盘动态垃圾回收的方法及固态硬盘 | |
TW201312573A (zh) | 快閃記憶體儲存裝置及其不良儲存區域的判定方法 | |
CN107943415B (zh) | 基于fat文件系统的查找空闲簇的方法和系统 | |
CN114356218A (zh) | Flash存储器的数据纠错方法、设备以及介质 | |
CN108132857B (zh) | 一种fpga断电状态精确恢复方法 | |
CN113238499A (zh) | 对称信道下全双工窄带物联网泛用数据采集装置及方法 | |
CN112527202A (zh) | 闪存存储器的管理方法、系统、终端设备及存储介质 | |
US20060181948A1 (en) | System and method for detecting and reducing data corruption in a storage device | |
CN109388217B (zh) | 确定硬盘未上电时长的方法、装置及系统 | |
CN114253764A (zh) | 一种运行应用程序的方法、装置及计算机设备 | |
CN116414618A (zh) | 一种数据备份方法以及装置 | |
CN101295273B (zh) | 看门狗设计方法及看门狗装置 | |
CN111445598A (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 |