NVM区数据备份机制

上一篇主要说明NVM区操作注意事项,本文针对上篇提到的NVM区数据备份方法进行补充讲解。
NVM区主要特性是写入数据掉电不丢失,可以永久的保存数据,一般用作存放不经常修改的数据,此功能类似FLASH。向NVM区写入数据可分为3步:第一步,将目标扇区内原有数据读出到RAM中;第二步,擦除NVM目标扇区内数据;第三步,将新数据和RAM中的旧数据写入到该扇区中。基于以上写操作的特点可以看出,若执行写NVM区操作的第二步或第三步时芯片断电了,就会造成NVM区内原有数据丢失,而新数据写入失败,表现出NVM区内数据错乱的现象。虽然这只是小概率事件,但出于稳定性和产品健壮性考虑也要加入数据备份机制。
数据备份有两套基本方案,分别适用于小数据量和大数据量的应用场景。本期介绍小数据量备份方案,即要求每次更新数据量小于一个扇区大小减1,本例扇区大小256字节,因此更新数据量最大255字节。(注意:不同型号芯片NVM扇区大小会有差异,可以联系凌科技术确认)。实现思路是:从NVM区选取两块区域,每个区域的最后一字节记录该区域的操作次数。以该标志决定更新数据应选用哪个区域。依次循环操作两个区域,操作区域1的时候,区域2就充当了备份作用,反之同理。
第一次写入数据
第一步:将NVM区地址0x0000~0x00FF定义为Block1,将0x0200~0x02FF定义为Block2。
#define Block1 0x0000
#define Block2 0x0200
第二步:定义一个256字节的数组databuf和一个标志位变量cnt,并将cnt赋值0。
unsigned char databuf[256];
Unsigned char cnt = 0;
第三步:将目标数据(待写入数据)拷贝到databuf数组中,并将cnt+1拷贝到databuf+255的位置。
databuf[255] = cnt+1;
第四步:调用WriteNVM函数向Block1写入数据databuf,写入长度256字节。调用WriteNVM函数向Block2+255位置写入cnt,写入长度1字节;
WriteNVM(Block1,databuf,256);
WriteNVM(Block2+255,&cnt,1);
更新数据
第一步:调用ReadNVM函数分别读取Block1和Block2的标志位(最后一字节)。
unsigned char flag1,flag2;
ReadNVM(Block1+255,&flag1,1);
ReadNVM(Block2+255,&flag2,1);
第二步:判断两个Block的标志位大小,选取标志位数值小的Block进行更新。将目标数据(待写入数据)拷贝到databuf数组中,并将标志位加2后拷贝到databuf+255的位置。
if(flag1 > flag2)
{
cnt = flag2 + 2;
databuf[255] = cnt;
WriteNVM(Block2,databuf,256);
}else{
cnt = flag1 +2;
databuf[255] = cnt;
WriteNVM(Block1,databuf,256);
}
读取数据
第一步:读取Block1和Block2的标志位数据。
ReadNVM(Block1+255,&flag1,1);
ReadNVM(Block2+255,&flag2,1);
第二步:判断标志位大小,数值大的Block内为新数据,数值小的Block内为旧数据。
if(flag1 > flag2)
{
ReadNVM(Block1,databuf,255);
}else{
ReadNVM(Block2,databuf,255);
}

原文地址:https://blog.51cto.com/13520299/2427963

时间: 2024-08-30 10:46:06

NVM区数据备份机制的相关文章

玉竹网络:教你数据备份你得"留几手"

玉竹网络:教你数据备份你得"留几手" "不要把所有鸡蛋放在一个篮子里'.这是投资界一句很好理解的至理名言.这个道理不仅在投资投资界经常被提及,对于所有和风险相关的事物都具有很广泛的适用性,比如企业的数据备份保护,在企业信息数据保护工作中,数据灾备是一个重要的前提,也是其重要组成部分之一.所谓数据灾备,简单而言就是将同样的信息 在其他地方另存一份或多份,这样即使其中一个地方发生意外导致数据受损,其他地方的数据也能持续使用,不会影响企业正常的运营,这就是数据的异地备份.但如果企业

Linux -- 服务器数据备份恢复策略

一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令,将一个文件复制到其他目录下,也可能是使用特定的程序将数据流写进一个特定的设备中的复杂过程.很多情况下是将要备份的数据写入到磁带机中,但有些情况也不是这样的.在Linux环境下,或其他Unix系统,备份可以是将文件拷贝到已存在的文件系统,可替换的文件系统,磁带机,远程文件系统,甚至是远程系统的上的磁带

Android数据备份(Android Data Backup)

最近我在阅读Android Developer上的文章,本文是对其中一篇Data Backup的翻译.希望可以通过翻译英文技术文章提高自己阅读英文文档的水平,如果有不妥的地方,希望指出,谢谢~因为这个涉及到google服务,可能目前在国内大家不怎么去使用它. Android的备份服务为了给我们的应用数据和配置提供还原的功能,它允许我们把我们的应用数据拷贝到远程的"云"存储上去.如果一个用户在他的手机上恢复了出厂设置或者换了一部新的Android设备,当开发者的应用被重新安装的时候,系统

rsync远程数据备份配置之再次总结

一.实验环境 主机名  网卡ip  默认网关 用途 nfs-server 10.0.0.11 10.0.0.254 rsync服务器端 web-client01 10.0.0.12 10.0.0.254 rsync客服端 web-client02 10.0.0.13 10.0.0.254 rsync客服端 二.实验步骤 1.什么是rsync?rsync是一款开源的,快速的,多功能的可实现全量及增量的数据备份同步的优秀工具,适用于多种操作系统之上.2.rsync特性1)支持拷贝链接文件特殊文件2)

开源服务专题之-------rsync数据备份

RSYNC是Remote Sync 远程同步的简称,与SCP的比较,SCP= 无法备份大量数据,类似windows的复制,而rsync=边复制 ,边统计,边比较,可以备份大量数据.可以镜像保存整个目录树和文件系统.可以很容易做到保持原来文件的权限.时间.软硬链接等等.无须特殊权限即可安装.快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件.压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽.安全:可以使用scp.ssh等方式来传输文

网络数据备份系统结构的几种类型分析

目前最常见的网络数据备份系统结构按其架构不同可以分为四种:基于网络附加存储(DAS-Base)结构,基于局域网(LAN-Base)结构,基于 SAN 结构的 LAN-Free 和Server-Free结构. 网络数据备份系统结构之DAS-Base 结构 基于网络附加存储系统的网络数据备份系统结构是最简单的一种数据保护方案,在大多数情况下,这种备份大多是采用服务器上自带的磁带机或备份硬盘,而备份操作往往也是通过手工操作的方式进行的.如图1所示,红色虚线表示数据流,下同.它适合下面的应用环境: 图1

全网服务器数据备份方案(模拟生产环境)+邮件告知

使用rsync实现全网数据备份(模拟生产环境)+邮件告知 项目要求来源于网络:http://oldboy.blog.51cto.com/2561410/1856048 假定3台服务器主机名分别为web01.backup.nfs01,主机信息如下表: 服务器说明 内网IP 主机名 nginx web服务器 192.168.1.222 WEB-01 NFS存储服务器 192.168.1.233 NFS-01 rsync备份服务器 192.168.1.244 BACKUP 要求:每天晚上00点整在We

多备份cloud 5技术:传统数据备份思路的完美移植

多备份是专注于业务数据云端备份.恢复.迁移.存储和归档的云平台(SaaS)应用提供商.其中,为了实现数据的足够安全,我们采用了自主研发的cloud 5技术. 问题的来源 2014年2月份,一位用户匆匆打电话来.提到了他的网站每天有大量的订单产生,他也用多备份备份了他的网站到网盘,但他还是比较担心,万一云盘有问题或停用了(百度云出现过这种情况),是不是他的数据就丢了?他告诉多备份工作人员,他之前的做法是,这些数据他手动备份了好几个地方,但是管理起来很麻烦,容易搞错,有一次甚至直接删除了. 这个用户

三种VMware数据备份和恢复方法

服务器虚拟化,尤其是VMware形式的服务器虚拟化使IT人员获益良多,这么说一点也不为过.据我们所见,服务器虚拟化能解决服务器扩张.资源消耗.服务器扩张.能源消耗.高可用性等相关问题.服务器虚拟化也使我们有更多的时间解决其它的迫切问题,如企业资源预案升级.存储项目再三迁移. 尽管VMware提供封装技术和抽象技术,使我们受益匪浅,但数据保护领域发生的基本变革也带来了各项挑战.即使出现了VMware虚拟化,备份人员依然是牢骚最多的IT人员.最大的挑战在于保证数据的一致性,解决VMware物理资源过