一种简单的nor flash 备份恢复机制

本文探讨了NorFlash中一种有效的数据备份与恢复方案,针对断电等意外情况导致的数据丢失问题,通过双block机制确保数据的安全性。备份机制包括地址、长度、CRC校验及标记,以保证数据完整性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:nor flash在写数据前都需要先把整个section(64K block )擦除再写,但是在这个过程意外断电,那么这个section(64K block )数据将全部丢失,为了保证这种意外丢失,本文将采用另外一个section(64K block )进行备份后恢复。

数据恢复机制是采用一个block用于存放数据,一个block用于备份和恢复数据的数据管理方法,前提条件是保存的数据长度必须小于64K – 16byte;16byte用于备份数据的校验和恢复标记;机构如下:

备份地址(4Byte)

备份长度(4Byte)

备份数据CRC(4Byte)

备份标记(3Byte)+恢复标记(1Byte)

备份标记:0x3C4B5A

恢复标记:restore_flag,当标记为0x0F时,表示上次写数据没有完成,其他值忽略;当完成恢复数据或写数据后,标记为设置为0x00;

如果数据读写采用动态的地址增量写法,增量地址和长度的最后位置满足条件:最后地址+长度<64k-16才能应用恢复功能。

备份机制生效条件,数据保存采用两个block进行保存,当只有一个block时,备份功能失效。

数据备份有两种模式选择,一种是备份上次写前的fash数据,另一种是备份本次要写的数据;

数据区的扩展,写数据必须先把整个section的数据先读出来在把本次写的数据进行重新拼装。

数据恢复通过读写内部接口调用进行判断和恢复,读写数据前先调用恢复数据机制检验是否需要恢复数据,再读写数据,保证读取的数据是上次写的数据或意外写失败前备份的数据。

流程因为无法直接剪贴,所以暂时略。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值