一种嵌入式系统中基于闪存存储器进行参数存储的方法技术方案

技术编号:14705842 阅读:127 留言:0更新日期:2017-02-25 11:40
一种嵌入式系统中基于闪存存储器进行参数存储的方法,包括参数区的划分、第一有效参数区的选择、参数变更和结果输出。本发明专利技术通过采用双参数区模式,数据写入的过程一旦产生系统重启,由于另一参数区的存在,可以使系统参数区内的参数恢复到上一次成功写入的时刻状态,避免了在参数变更过程中系统突然重启造成数据的丢失,尽量减少损失。同时内存消耗仅为需要变更参数的总大小字节数,减少了系统的内存消耗。

【技术实现步骤摘要】

本专利技术涉及嵌入式参数存储
,尤其涉及一种嵌入式系统中基于闪存存储器进行参数存储的方法
技术介绍
在嵌入式系统领域,一般要求所存储的参数具有掉电不丢失、可修改、可擦除的特性,由于受产品的空间大小、生产成本、功率消耗等因素的限制,一般都采用闪存(FLASH)存储器作为存储装置。目前,在嵌入式系统中一般都采用文件系统,将参数以文件的形式存储在闪存(FLASH)存储器上。由于文件系统一般需要占用闪存(FLASH)存储器多个块区,以保证系统的正常运行,但实际需要存储的参数仅占用几十K的空间,造成不必要的空间浪费。对于另外不用文件系统直接进行存储的方法,一般是在对参数进行修改时,先将数据备份到内存中,然后将相关参数区的闪存(FLASH)块进行擦除,再将需要修改的参数区和其它未变更的参数区重新写入闪存存储器。此种方法虽然可以避免空间浪费,但是当需要存储的参数比较多时,需要在内存中开辟的备份空间就会很大,对内存容量的要求比较高。同时,对于没有后备电池的系统而言,一旦系统发生突然停电,很容易造成参数的丢失。
技术实现思路
针对上述问题,本专利技术提供了一种嵌入式系统中基于闪存存储器进行参数存储的方法。为解决上述问题,本专利技术采取的技术方案为:一种嵌入式系统中基于闪存存储器进行参数存储的方法,包括以下步骤:步骤一、参数区的划分:将闪存存储器参数区划分为参数区1和参数区2,每个参数区又划分为有效数据存储区、CRC校验区和计数器区,所述的有效数据存储区存放各种有效参数值,并为每一参数类型分配固定的空间大小、固定的相对偏移量和相应的存储位置,使每一个参数类型都有一个确定的存储位置,以便后期修改变更和使用时查找;对有效数据存储区空间根据实际需求进行分配,计算出实际的所需存储空间大小,并预留出足够的预留空间,则有效数据存储区空间容量为实际所需存储空间与预留空间之和,即有效数据存储区空间容量=实际所需存储空间+预留空间;在有效数据存储区后留出n字节存放CRC值和m字节存放计数器值,所述的CRC校验区存放通过CRC算法计算出的有效数据存储区内所有数据的CRC校验值;所述的计数器区存放两个参数区每次操作后的操作次数累加值。步骤二、第一有效参数区的选择:在同一时刻只有一个有效参数区,在有效参数区选择时,分为系统复位后的参数区选择和系统正常运行周期内参数区发生参数变更的参数区选择两种情况。系统复位后的参数区选择,是指嵌入式系统由于复位造成系统重新开始运行,此时需要对两个参数区进行重新选择,确定出第一有效参数区,此种选择只有在系统复位后才会执行,在正常运行周期内不会再次执行;系统正常运行周期内参数区发生参数变更的参数区选择,是指在系统正常运行情况下,由于参数区内所存储的参数值发生变更、新增或擦除,需要重新确定第一有效参数区。对比两个参数区的计数器值大小,计数器值越大的参数区内的参数值越新,并选择计数器值大的参数区根据CRC算法计算有效数据存储区内所有数据的CRC校验值,并与已存储的CRC值进行对比,若一致则参数区完整,数据值未遭到破坏,采用该参数区作为有效参数区运行;若不一致则数据值遭到破坏,启用第二参数区进行再次对比,若一致则采用第二参数区作为有效参数区运行,若不一致则全部擦除后写入默认参数并运行。步骤三、参数变更:参数变更,是指对有效数据存储区内的一个或多个参数进行修改或擦除的操作。根据闪存存储器的特性,对于已经写入过数据值的存储空间,进行再次写入时,需要先执行擦除操作后才能进行再次写入。对新写入的数据回读后与原始数据进行对比,确保写入的数据值的正确性,对于写入不正确的数据,全部擦除后再次写入,对于多次写入后始终不正确的情况,及时产生告警信息,以示提醒。步骤四、结果输出:产生参数变更失败或参数变更成功提示信息。本专利技术通过采用双参数区模式,数据写入的过程一旦产生系统重启,由于另一参数区的存在,可以使系统参数区内的参数恢复到上一次成功写入的时刻状态,避免了在参数变更过程中系统突然重启造成数据的丢失,尽量减少损失。同时内存消耗仅为需要变更参数的总大小字节数,减少了系统的内存消耗。附图说明图1是本专利技术的参数区的划分图;图2是本专利技术的第一有效参数区的选择流程图;图3是本专利技术的参数变更流程图。具体实施方式下面结合附图对本专利技术的实施过程进行详细说明。一种嵌入式系统中基于闪存存储器进行参数存储的方法,包括以下步骤:步骤一、参数区的划分,如图1所述:将闪存存储器参数区划分为参数区1和参数区2,彼此平级、互为备份,每个参数区又划分为有效数据存储区、CRC校验区和计数器区,所述的有效数据存储区存放各种有效参数值,并为每一参数类型分配固定的空间大小、固定的相对偏移量和相应的存储位置;对有效数据存储区空间根据实际需求进行分配,计算出实际的所需存储空间大小,并预留出足够的预留空间,则有效数据存储区空间容量为实际所需存储空间与预留空间之和,即有效数据存储区空间容量=实际所需存储空间+预留空间;在有效数据存储区后留出n字节存放CRC值和m字节存放计数器值,所述的CRC校验区存放通过CRC算法计算出的有效数据存储区内所有数据的CRC校验值;所述的计数器区存放两个参数区每次操作后的操作次数累加值,即参数区1的计数器值=参数区2的计数器值+1,反之亦然。步骤二、第一有效参数区的选择,如图2所述:S1、判断是否是系统复位,若否则进入步骤三,若是则比较参数区1和参数区2的计数器值Count1和Count2,若Count1大于等于Count2,则进入S2,否则进入S4;S2、获取参数区1和参数区2存储的CRC值RecordCRC1和RecordCRC2,同时根据CRC算法对参数区1和参数区2的有效数据存储区进行CRC值计算,分别得出CountCRC1和CountCRC2,若RecordCRC1等于CountCRC1,则参数区1内数据值正常,选择此区为第一有效参数区,进入步骤三;否则判断RecordCRC2是否等于CountCRC2,若是则参数区2内数据值正常,选择此区为第一有效参数区,进入步骤三;若否则参数区1和参数区2均无效,进入S3;S3、擦除参数区1和参数区2并写入默认参数,分别计算出CRC值并写入CRC校验区,参数区1内的计数器值设置为1并写入参数区1计数器区,参数区2内的计数器值设置为2并写入参数区2计数器区,同时选择参数区2为第一有效参数区,进入步骤三;S4、获取参数区1和参数区2存储的CRC值RecordCRC1和RecordCRC2,同时根据CRC算法计算参数区1和参数区2有效数据存储区内所有数据的CRC校验值,分别得出CountCRC1和CountCRC2,若RecordCRC2等于CountCRC2,则参数区2内数据值正常,选择此区为第一有效参数区,进入步骤三;否则判断RecordCRC1是否等于CountCRC1,若是则参数区1内数据值正常,选择此区为第一有效参数区,进入步骤三;若否则参数区1和参数区2均无效,进入S3。步骤三、参数变更,如图3所述:S1、根据当前第一有效参数区选择并擦除参数变更后新存储的参数区,由于系统内存在参数区1和参数区2两个参数区,在进行参数变更时,首先根据当前第一有效参数区,选择参数变更后新存储的参数区,例如,当前第一有本文档来自技高网...
一种嵌入式系统中基于闪存存储器进行参数存储的方法

【技术保护点】
一种嵌入式系统中基于闪存存储器进行参数存储的方法,其特征在于包括以下步骤:步骤一、参数区的划分:将闪存存储器参数区划分为参数区1和参数区2,每个参数区又划分为有效数据存储区、CRC校验区和计数器区,所述的有效数据存储区存放各种有效参数值,并为每一参数类型分配固定的空间大小、固定的相对偏移量和相应的存储位置;所述的CRC校验区存放通过CRC算法计算出的有效数据存储区内所有数据的CRC校验值;所述的计数器区存放两个参数区每次操作后的操作次数累加值;步骤二、第一有效参数区的选择:对比两个参数区的计数器值大小,并选择计数器值大的参数区根据CRC算法计算有效数据存储区内所有数据的CRC校验值,并与已存储的CRC值进行对比,若一致则参数区完整,数据值未遭到破坏,采用该参数区作为有效参数区运行;若不一致则数据值遭到破坏,启用第二参数区进行再次对比,若一致则采用第二参数区作为有效参数区运行,若不一致则全部擦除后写入默认参数并运行;步骤三、参数变更:对新写入的数据回读后与原始数据进行对比,对于写入不正确的数据,全部擦除后再次写入,对于多次写入后始终不正确的情况,及时产生告警信息;步骤四、结果输出:产生参数变更失败或参数变更成功提示信息。...

【技术特征摘要】
1.一种嵌入式系统中基于闪存存储器进行参数存储的方法,其特征在于包括以下步骤:步骤一、参数区的划分:将闪存存储器参数区划分为参数区1和参数区2,每个参数区又划分为有效数据存储区、CRC校验区和计数器区,所述的有效数据存储区存放各种有效参数值,并为每一参数类型分配固定的空间大小、固定的相对偏移量和相应的存储位置;所述的CRC校验区存放通过CRC算法计算出的有效数据存储区内所有数据的CRC校验值;所述的计数器区存放两个参数区每次操作后的操作次数累加值;步骤二、第一有效参数区的选择:对比两个参数区的计数器值大小,并选择计数器值大的参数区根据CRC算法计算有效数据存储区内所有数据的CRC校验值,并与已存储的CRC值进行对比,若一致则参数区完整,数据值未遭到破坏,采用该参数区作为有效参数区运行;若不一致则数据值遭到破坏,启用第二参数区进行再次对比,若一致则采用第二参数区作为有效参数区运行,若不一致则全部擦除后写入默认参数并运行;步骤三、参数变更:对新写入的数据回读后与原始数据进行对比,对于写入不正确的数据,全部擦除后再次写入,对于多次写入后始终不正确的情况,及时产生告警信息;步骤四、结果输出:产生参数变更失败或参数变更成功提示信息。2.根据权利要求1所述的一种嵌入式系统中基于闪存存储器进行参数存储的方法,其特征在于所述的步骤二具体实现如下:S1、判断是否是系统复位,若否则进入步骤三,若是则比较参数区1和参数区2的计数器值Count1和Count2,若Count1大于等于Count2,则进入S2,否则进入S4;S2、获取参数区1和参数区2存储的CRC值RecordCRC1和RecordCRC2,同时根据CRC算法对参数区1和参数区2的有效数据存储区进行CRC值计算,分别得出CountCRC1和CountCRC2,若RecordCRC1等于CountCRC1,则参数区1内数据值正常,选择此区为第一有效参数区,进入步骤三;否则判断RecordCRC2是否等于CountCRC2,若是则参数区2内数据值正常,选择此区为第一有效参数区,进入步骤三;若否则参数区...

【专利技术属性】
技术研发人员:衡泽超赵辉宁晨光郑宝毅宋忠强刘亮贾凯薛坤赵长收王福斌王春城
申请(专利权)人:积成电子股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1