一种嵌入式系统的片内外数据掉电防拔备份方法及系统与流程

文档序号:23554580发布日期:2021-01-05 21:16阅读:73来源:国知局
一种嵌入式系统的片内外数据掉电防拔备份方法及系统与流程

本申请涉及数据处理技术领域,尤其涉及一种嵌入式系统的片内外数据掉电防拔备份方法及系统。



背景技术:

现有的嵌入式系统中,对于数据处理的一致性要求较高,尤其是一些数据敏感和关键的行业,对于一次性数据写入的一致性要求更加高,所以,在业务层面需要的数据处理中,不能出现数据不一致或错误的情况,要保证数据处理之前和之后是一致的,尤其是系统在掉电的情况下,保证操作的数据不能因为掉电而出现数据不一致的现象。

现有的技术,一般是对于主芯片的flash掉电数据进行统一管理,防止数据不一致;但是,对于主芯片的外部flash有很多数据的写入处理操作,在掉电的情况下是没有保护的,所以,对于外部flash的数据写入处理,通常把不敏感和不关键的数据放到主芯片外部保存,但是随着业务功能的需求,内部flash的容量已经不能满足要求,必须使得外部flash和内部flash数据保证一致性才能保证业务的正常处理,当前技术并没有一个通用性的解决方法。



技术实现要素:

本申请的目的在于提供一种嵌入式系统的片内外数据掉电防拔备份方法及系统,该方法把片内写操作数据和片外写操作数据统一备份至防拔备份区管理,外部flash和内部flash数据保证一致,实现防拔备份安全写的操作。

为达到上述目的,本申请提供一种嵌入式系统的片内外数据掉电防拔备份方法,该方法包括如下步骤:备份初始化;备份初始化后,判断是否启动了防拔备份机制,若是,则判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写,否则继续判断是否启动了防拔备份机制;若当前写操作的保护类型为片内flash的防拔写,则从片内flash区读出写操作数据;若当前写操作的保护类型为片外flash的防拔写,则从片外flash读出写操作数据;对读出的写操作数据进行处理后写入到防拔备份区的空闲数据区内,并设置成功写入标志位;其中,防拔备份区位于片内flash区。

如上的,其中,备份初始化包括:将防拔备份区划分为第一标志页面区、第二标志页面区、地址页面区和备份数据区;其中,所述第一标志页面区和所述第二标志页面区用于记录当前备份的启动标志和备份数据区中写入备份数据的次数;所述地址页面区用于记录防拔备份过程所有写操作对应的逻辑地址;所述备份数据区用于循环备份写操作对应的数据如上的,其中,备份初始化还包括:建立片内写操作的物理地址与逻辑地址之间的第一映射关系和片外写操作的物理地址与逻辑地址之间的第二映射关系,所述第一映射关系和所述第二映射关系用于判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写。

如上的,其中,判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写的方法包括如下步骤:获取当前写操作对应的逻辑地址和物理地址;根据获取的当前写操作的逻辑地址和物理地址,得到当前写操作的逻辑地址和物理地址之间的关系;根据当前写操作的逻辑地址和物理地址之间的关系、预先建立的片内写操作的物理地址与逻辑地址之间的第一映射关系和片外写操作的物理地址与逻辑地址之间的第二映射关系,判断当前写操作的保护类型属于片内flash的防拔写还是片外flash的防拔写。

如上的,其中,对读出的写操作数据进行处理后写入到防拔备份区的空闲数据区内的方法包括如下步骤:将读出的写操作数据写入缓存区;在缓存区中将需要修改的数据进行修改;所有需要修改的数据修改完成后,将修改完成后的数据和无需修改的数据一同写入到的防拔备份区的空闲数据区内。

如上的,其中,将写操作的数据写入到防拔备份区后,将该写操作对应的逻辑地址缓存至第一缓存区中,并将第一缓存区中的实际逻辑地址写入防拔备份区的地址页面区。

如上的,其中,在需要恢复备份数据时,把备份数据从防拔备份区回写到片内flash区或片外flash区对应的逻辑地址处,将缓存区中与该读出的备份数据相关的数据清除。

如上的,其中,备份初始化还包括:在缓存区设置备份启动标志,通过判断备份启动标志的有效性来判断是否启动了防拔备份机制。

如上的,其中,预先设定片内需要管理的物理地址的大小和逻辑地址的范围、以及片外需要管理的物理地址的大小和逻辑地址的范围。

本申请还提供一种嵌入式系统的片内外数据掉电防拔备份系统,包括:初始化模块,用于备份初始化;判断模块,用于在备份初始化后,判断是否启动了防拔备份机制,若是,则执行判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写,否则继续判断是否启动了防拔备份机制;读取模块,用于当所述判断模块的判断结果为片内flash的防拔写,则从片内flash区读出写操作数据;若当所述判断模块的判断结果为片外flash的防拔写,则从片外flash读出写操作数据;数据备份写入模块,用于对读出的写操作数据进行处理后写入到防拔备份区的空闲数据区内,并设置成功写入标志位;其中,防拔备份区位于片内flash区。

本申请实现的有益效果如下:

(1)本申请将片外数据和片内数据统一备份至防拔备份区,防拔备份区位于片内,从而实现片内数据和片外数据的统一管理,在需要恢复备份数据时,将备份数据回写到原始位置,从而防止在掉电的情况下数据丢失。

(2)本申请将片内写操作的逻辑地址和片外写操作的逻辑地址统一记录在片内防拔备份区,实现两种写操作方式的逻辑地址的统一管理,由于逻辑地址的管理方式是统一的,因此,对于片内写操作和片外写操作的物理地址与统一管理的逻辑地址之间则对应有不同的映射关系,若已知需要防拔备份保护的写操作的实际物理地址和逻辑地址之间的关系,即可判断该需要防拔保护的写操作具体是片内写操作还是片外写操作,以从对应的位置准确读取需要备份的数据;并且由于片内flash区的安全性和稳定性比片外flash区强,因此,将片内地址和片外地址记录在片内防拔备份区安全性和稳定性较高。

(3)由于防拔备份区在片内flash区,所以对于需要保护的片外区域,都可以通过本申请备份机制,完成对于片外flash指定区域的保护处理。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本申请实施例的一种嵌入式系统的片内外数据掉电防拔备份方法的流程图。

图2为本申请实施例的判断当前写操作的保护类型的方法流程图。

图3为本申请实施例的将写操作数据写入防拔备份区的方法流程图。

图4为本申请实施例的将备份数据回写到原始位置的方法流程图。

图5为本申请实施例的一种嵌入式系统的片内外数据掉电防拔备份系统的结构示意图。

附图标记:10-初始化模块;20-判断模块;30-读取模块;40-数据备份写入模块;100-片内外数据掉电防拔备份系统。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

实施例一

如图1所示,本申请提供一种嵌入式系统的片内外数据掉电防拔备份方法,该方法包括如下步骤:

步骤s1,备份初始化。

其中,备份初始化包括对防拔备份区进行空间分配、设置备份启动标志和建立物理地址与逻辑地址之间的关系。

具体的,对防拔备份区进行空间分配包括:

步骤s110,在片内flash(闪存)区域中选取一个空闲区域作为防拔备份区。

步骤s120,对防拔备份区进行空间分配。

具体的,防拔备份区划分成第一标志页面区(标志页面a区)、第二标志页面区(标志页面b区)、地址页面区和备份数据区。标志页面a区占用一个页面用于记录当前备份的启动标志和在备份数据区中写入备份数据的次数。标志页面b区占用一个页面用于记录当前备份的启动标志和在备份数据区中写入备份数据的次数。地址页面区占用一个页面,用于记录在整个防拔备份过程中,写入备份数据区的数据的的所有逻辑地址;备份数据区用于循环备份写操作对应的数据占用的所有flash物理页面的数据,如果实际写入的数据地址跨页面,则需要备份两个页面的flash数据。其中,正常工作时,标志页面a区和标志页面b区记录的数据完全一致,在写操作过程中发生掉电的情况下,标志页面a区和标志页面b区记录的数据则不一致。

优选的,对防拔备份区的空间分配情况见表1。

表1

优选的,在缓存区设置备份启动标志,并清空缓存区中其他数据。

优选的,建立物理地址与逻辑地址之间的关系包括建立片内写操作的物理地址与逻辑地址之间的第一映射关系和建立片外写操作的物理地址与逻辑地址之间的第二映射关系。

具体的,物理地址与逻辑地址之间的对应关系如表2。

表2

步骤s2,备份初始化后,判断是否启动了防拔备份机制,若是,则执行下一步,否则继续执行当前步骤。

其中,判断是否启动了防拔备份机制的方法为:判断在缓存区设置备份启动标志是否有效,若有效,则启动了防拔备份机制;否则,未启动防拔备份机制。

步骤s3,判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写,若判断结果为片内flash的防拔写,则从片内flash区读出写操作数据;若判断结果为片外flash的防拔写,则从片外flash读出写操作数据。

如图2所示,步骤s3包括如下子步骤:

步骤s310,获取当前写操作对应的逻辑地址和物理地址。

步骤s320,根据获取的当前写操作的逻辑地址和物理地址,得到当前写操作的逻辑地址和物理地址之间的关系。

步骤s330,根据当前写操作的逻辑地址和物理地址之间的关系、预先建立的片内写操作的物理地址与逻辑地址之间的第一映射关系和片外写操作的物理地址与逻辑地址之间的第二映射关系,判断当前写操作的保护类型属于片内flash的防拔写还是片外flash的防拔写。

具体的,由于片内写操作(从主芯片内部读取数据)对应的物理地址和逻辑地址之间的第一映射关系与片外写操作(从主芯片外部读取数据)对应的物理地址和逻辑地址之间的第二映射关系是不同的,判断当前写操作的逻辑地址和物理地址之间的关系与预先建立的片内物理地址与逻辑地址之间的第一映射关系匹配还是与片外物理地址与逻辑地址之间的第二映射关系匹配,若与片内物理地址与逻辑地址之间的第一映射关系匹配,则当前写操作为片内写操作,当前写操作的保护类型属于片内flash的防拔写。若与片外物理地址与逻辑地址之间的第二映射关系匹配,则当前写操作为片外写操作,当前写操作的保护类型属于片外flash的防拔写。

步骤s340,若判断结果为片内flash的防拔写,则从片内(主芯片内部)flash区读出写操作数据。

步骤s350,若判断结果为片外flash的防拔写,则从片外(主芯片外部)flash读出写操作数据。

步骤s4,对读出的写操作数据进行处理后写入到防拔备份区的空闲数据区内,并设置成功写入标志位。

如图3所示,步骤s4包括如下子步骤:

步骤s410,将读出的写操作数据写入缓存区。

步骤s420,在缓存区中将需要修改的数据进行修改。

步骤s430,所有需要修改的数据修改完成后,将修改完成后的数据和无需修改的数据一同写入到的防拔备份区的空闲数据区内。

优选的,根据写操作要写入的数据长度确定其要占用的防拔备份区中物理页面的数量,选取防拔备份区的空闲数据区内相应数量的物理页面用于备份经过处理后的写操作数据。

优选的,根据确定的写操作要写入的数据所占用的物理页面数量或标志页面a区的位置的偏移量,得到要写入数据在防拔备份区中对应的页面地址,将修改完成后的数据和无需修改的数据一同写入到防拔备份区对应的页面地址中。

步骤s440,数据写入到防拔备份区后,设置成功写入标志位,并将当前写入到防拔备份区的数据的实际逻辑地址缓存至第一缓存区中。

步骤s440中设置成功写入标志位包括:在防拔备份区的标志页面a区和标志页面b区中写入数据写入防拔备份区完成标志。

步骤s450,将第一缓存区中缓存的实际逻辑地址写入到防拔备份区的地址页面区,并在防拔备份区的第一标志页面区和第二标志页面区记录写入防拔备份区的实际逻辑地址的个数。

防拔备份区记录的写入备份数据区的数据的的所有逻辑地址及其个数,逻辑地址用于在将防拔备份区中备份的数据回写到片内flash区或片外的原始位置,根据逻辑地址的个数,确定备份数据的数量。

步骤s5,结束防拔备份操作,,把备份数据从防拔备份区回写到片内flash区或片外flash区的实际逻辑地址处,将缓存区中与该读出的备份数据相关的数据清除,从而完成本次防拔写操作。如果是在掉电后重新上电过程中,对防拔备份标志进行判断,判断上一次防拔写操作是否没有完成,若确定上次防拔写操作没有完成,则需要把防拔备份区的数据按照地址页面记录的相关片内外的逻辑地址,把防拔备份区中对应的物理页面的数据回写到实际的片内或片外flash的地址页面处,并清除标志页面区和地址页面区的数据,从而完成本次防拔写的操作。

将数据备份至防拔备份区,在需要恢复备份数据时,将备份数据回写到原始位置,从而防止在掉电的情况下数据丢失。

如图4所示,步骤s5包括如下子步骤:

步骤s510,从防拔备份区的备份数据区依次读出备份数据,并获取读出备份数据的逻辑地址。

步骤s520,将读出的备份数据回写到其逻辑地址对应的片内flash区或片外flash区的地址页面内。

步骤s530,将防拔备份区的第一标志页面区(标志页面a区)和第二标志页面区(标志页面b区)中记录的标志数据修改成已完成的状态。

步骤s540,将缓存区中与该读出的备份数据相关的数据清除。

根据本发明的一个具体实施例,若发生了设备掉电的情况,则对设备重新开机上电,在设备重新开机上电时,判断上一次防拔备份写操作是否完成,若没有完成,则执行步骤s5,否则,终止流程。

具体的,在设备重新开机上电时,判断上一次防拔备份写操作是否完成包括如下子步骤:

步骤p1,判断防拔备份区中标志页面a区和标志页面b区的内容是否一致,若一致,则执行下一步,否则,判断结果为上一次防拔备份写操作未完成。

步骤p2,判断标志页面a区中的内容是否存在没有完成防拔备份过程的写操作,若存在,则判断结果为上一次防拔备份写操作未完成;否则,判断结果为上一次防拔备份写操作完成。

实施例二

如图5所示,本申请提供一种嵌入式系统的片内外数据掉电防拔备份系统100,该系统包括:

初始化模块10,用于备份初始化;

判断模块20,用于在备份初始化后,判断是否启动了防拔备份机制,若是,则执行判断当前写操作的保护类型是片内flash的防拔写还是片外flash的防拔写,否则继续判断是否启动了防拔备份机制;

读取模块30,用于当所述判断模块的判断结果为片内flash的防拔写,则从片内flash区读出写操作数据;若当所述判断模块的判断结果为片外flash的防拔写,则从片外flash读出写操作数据;

数据备份写入模块40,用于对读出的写操作数据进行处理后写入到防拔备份区的空闲数据区内,并设置成功写入标志位;

其中,防拔备份区位于片内flash区。

本申请实现的有益效果如下:

(1)本申请将片外数据和片内数据统一备份至防拔备份区,防拔备份区位于片内,从而实现片内数据和片外数据的统一管理,在需要恢复备份数据时,将备份数据回写到原始位置,从而防止在掉电的情况下数据丢失。

(2)本申请将片内写操作的逻辑地址和片外写操作的逻辑地址统一记录在片内防拔备份区,实现两种写操作方式的逻辑地址的统一管理,由于逻辑地址的管理方式是统一的,因此,对于片内写操作和片外写操作的物理地址与统一管理的逻辑地址之间则对应有不同的映射关系,若已知需要防拔备份保护的写操作的实际物理地址和逻辑地址之间的关系,即可判断该需要防拔保护的写操作具体是片内写操作还是片外写操作,以从对应的位置准确读取需要备份的数据;并且由于片内flash区的安全性和稳定性比片外flash区强,因此,将片内地址和片外地址记录在片内防拔备份区安全性和稳定性较高。

(3)由于防拔备份区在片内flash区,所以对于需要保护的片外区域,都可以通过本申请备份机制,完成对于片外flash指定区域的保护处理。

上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理的内所做的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1