一种抗异常断电的多分区循环数据存储方法及可读存储介质与流程
本发明涉及非易失性存储器数据存储,尤其是指一种抗异常断电的多分区循环数据存储方法及可读存储介质。
背景技术:
1、设备控制器通常需要对设备运行时长、怠速、加速、减速等工况参数以及其他关键运行数据进行实时采集和周期性保存,以便进行运行状态监测、参数统计以及故障追溯。传统设备控制器可采用钥匙关断后延时断电的方式完成下电前数据保存,该方式能够满足正常下电场景,但当出现钥匙非正常关断、蓄电池意外断开、供电线束突然脱落等突发异常断电情形时,控制器可能在数据写入过程中失去供电,从而造成数据丢失或记录失真。
2、现有突发掉电保护方案中,一类方案采用eeprom或者增加备用电源,通过硬件冗余延长可写入时间,但会增加硬件成本;一类方案采用单分区循环覆盖方式,在flash擦除过程中发生断电时存在整个分区数据丢失的风险;还有一类方案采用页级写入优化并依赖较复杂的页索引管理,异常断电时可能产生索引与数据不一致,进而造成数据链断裂。
技术实现思路
1、为此,本发明所要解决的技术问题在于克服现有技术中现有存储系统在突发异常断电时存在数据存储不可靠、擦除过程风险集中以及恢复过程易出现数据不一致的问题。本发明能够在不增加硬件成本的前提下,利用控制器芯片自带 flash 存储资源,减小控制器实时存储数据的误差;确保设备任意运行工况、各类异常操作场景下,控制器实时采集与存储的数据能够完整、可靠保存,避免因供电异常造成数据丢失、记录失真问题。
2、为解决上述技术问题,本发明提供一种抗异常断电的多分区循环数据存储方法,包括:
3、将所述片内flash的非易失性存储区划分为至少两个相互独立的物理存储分区,在各物理存储分区的存储起始位置配置身份标志位,根据所述身份标志位将各物理存储分区动态区分为当前主分区、第一备用分区和次级备用分区,并建立分区优先级队列;
4、基于所确定的当前主分区完成数据初始化,并在数据初始化完成后,以预设时长为周期形成数据帧并写入当前主分区;其中,所述数据帧依次包括数据头、设备运行数据体和末尾校验值,所述数据头包括固定标识和递增的记录次数;
5、基于所述记录次数判断所述当前主分区是否达到预设存储上限,当所述记录次数达到预设最大值时,获取所述当前主分区中的最后一条有效数据,将用于表征主分区身份的分区标志和所述最后一条有效数据写入所述第一备用分区,以使原第一备用分区转换为新的当前主分区;擦除原当前主分区,并将用于表征第一备用分区身份的分区标志和所述最后一条有效数据写入擦除后的原当前主分区,以使所述原当前主分区转换为新的第一备用分区;基于转换后的新的当前主分区和新的第一备用分区,将所述记录次数重置为0,并以所述最后一条有效数据为基础继续执行所述数据帧的周期性写入,以进行下一轮循环存储;
6、当系统在所述循环存储过程中断电并重新上电时,读取各所述物理存储分区的身份标志位,基于读取的身份标志位重新确定当前主分区、第一备用分区和次级备用分区,并按照所述分区优先级队列依次对各所述物理存储分区进行硬件状态检测和数据校验,根据所述硬件状态检测结果和数据校验结果,从当前主分区、第一备用分区或次级备用分区中确定最后一条有效数据,将确定的最后一条有效数据加载至ram,并将所述最后一条有效数据同步至重新确定的当前主分区和第一备用分区,以使重新上电后的循环存储基于所述最后一条有效数据继续执行。
7、在本发明的一种实施方式中,所述数据初始化包括:
8、读取各所述物理存储分区的身份标志位,根据所述身份标志位识别当前主分区、第一备用分区和次级备用分区;
9、依次对当前主分区、第一备用分区和次级备用分区进行硬件状态检测以及数据帧校验,确定各所述物理存储分区的分区状态;
10、根据各所述物理存储分区的分区状态确定用于加载至ram的有效数据,并根据所述有效数据完成当前主分区和第一备用分区的数据同步。
11、在本发明的一种实施方式中,当所述当前主分区和所述第一备用分区均处于正常状态时,读取所述当前主分区中的最后一条有效数据,将所述最后一条有效数据加载至ram,并将所述最后一条有效数据同步至所述第一备用分区,使所述次级备用分区保持休眠待命状态。
12、在本发明的一种实施方式中,当所述当前主分区处于正常状态且所述第一备用分区处于异常状态时,读取所述当前主分区中的最后一条有效数据,从所述分区优先级队列中的次级备用分区中确定优先级最高的正常分区,将用于表征第一备用分区身份的分区标志和所述最后一条有效数据写入所确定的正常分区,以使所确定的正常分区转换为新的第一备用分区,并擦除处于异常状态的原第一备用分区。
13、在本发明的一种实施方式中,当所述当前主分区处于异常状态且所述第一备用分区处于正常状态时,读取所述第一备用分区中的最后一条有效数据,从所述分区优先级队列中的次级备用分区中确定优先级最高的正常分区,将用于表征主分区身份的分区标志和所述最后一条有效数据写入所确定的正常分区,以使所确定的正常分区转换为新的当前主分区,并擦除处于异常状态的原当前主分区。
14、在本发明的一种实施方式中,当所述当前主分区和所述第一备用分区均处于异常状态时,按照所述分区优先级队列依次遍历所述次级备用分区,从处于正常状态的次级备用分区中确定两个物理存储分区,并将所确定的两个物理存储分区分别配置为新的当前主分区和新的第一备用分区;
15、将ram中的初始业务数据作为循环存储的起始数据,并将所述记录次数重置为0,擦除处于异常状态的原当前主分区和原第一备用分区。
16、在本发明的一种实施方式中,当系统在向所述当前主分区写入所述数据帧的过程中发生异常断电时,系统重新上电后,根据所述数据帧的数据头和末尾校验值对所述数据帧进行校验,根据校验结果识别异常断电前未完成写入的数据帧,并获取所述第一备用分区中异常断电前最后一次成功写入的有效数据,将所述有效数据作为异常断电后的恢复数据。
17、在本发明的一种实施方式中,在获得所述恢复数据后,将所述恢复数据加载至ram,并将所述恢复数据同步至重新确定的当前主分区,以使当前主分区和第一备用分区中的有效数据一致,并基于所述恢复数据继续执行所述数据帧的周期性写入。
18、在本发明的一种实施方式中,当系统正常下电后重新上电时,在确定各所述物理存储分区不存在硬件故障且所述数据帧校验通过后,解析所述当前主分区中各数据帧的数据头,根据所述数据头中的记录次数确定所述当前主分区中的最后一条有效数据,将所述最后一条有效数据同步至所述第一备用分区并加载至ram,并基于所述最后一条有效数据对应的记录次数继续递增所述记录次数。
19、本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的抗异常断电的多分区循环数据存储方法。
20、本发明的上述技术方案相比现有技术具有以下优点:
21、本发明所述的一种抗异常断电的多分区循环数据存储方法及可读存储介质,针对现有存储系统突发异常断电易出现数据丢失、记录失真的缺陷,通过优化掉电检测机制与数据存储策略,显著提升控制器实时存储数据的可靠性与准确性,有效降低数据误差。无论设备处于怠速、加速、减速等任意运行工况,或是钥匙非正常关断、蓄电池意外断开、线束突然脱落等异常操作、突发掉电场景,均可保障控制器运行关键数据完整保存,避免供电中断造成关键参数遗失。本方案实现简洁,无需大幅增加硬件成本,通用性强,具备良好工程应用价值。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com