打印

求助:关于掉电保存数据的问题

[复制链接]
2615|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
iiset|  楼主 | 2009-6-28 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我要测一个产品数据,完整的一组大概200个数据吧,为了防止掉电后数据丢失,每测一个用flash存储器存一次,有可能意外没测完,要求有下次开机接着测试的功能,问题是我怎么得到关机前一个数据的信息? 
我想的是把当前刚测的数据信息(在flash中的存储地址,及本次测试的数据序号)保存到flash的另一个地址中,但问题是测完200条数据,它的地址已重复擦写了200次,不久就会坏了,有什么好的想法,希望大家指点一二,感激不尽啊 

MCU是51系列,flash是AT45DB系列 

相关帖子

沙发
iiset|  楼主 | 2009-6-28 22:26 | 只看该作者

在线等,自己顶上来

使用特权

评论回复
板凳
yunding| | 2009-6-28 22:38 | 只看该作者

备用电源

使用特权

评论回复
地板
iiset|  楼主 | 2009-6-28 23:03 | 只看该作者

谢谢楼上

我们产品用的是蓄电池,硬件上基本定了。
我主要任务是在原有的基础上增强产品的功能,使其更人性化,傻瓜化。

使用特权

评论回复
5
McuPlayer| | 2009-6-28 23:30 | 只看该作者

这个就是保证数据完整性的问题了

处理方法类似于OS的critical section的问题
比如,在Flash的某个区域做起始标志和结束标志
flash擦后是0xFF,测试开始前把起始标志写个0x55
开始测试,并把测试数据写入对应的位置
测试结束后,把结束标志写个0xAA

下次上电,或者WDT叫你回来的时候,如果我们预定的
0x55和0xAA都在,数据是完整的,可以使用
如果只有0x55,而0xAA的位置是0xFF表示测试中途被break了,数据不完整,丢弃之

其实,还有更好的方法,自己想去吧,但思路基本是这个了

使用特权

评论回复
6
tage| | 2009-6-29 13:07 | 只看该作者

铁电

使用特权

评论回复
7
chunyang| | 2009-6-29 17:05 | 只看该作者

不可用FLASH

应该用铁电存储器配合后备电源或法拉电容实现,数据完整性用标识字节实现,基本思路如5楼,但标识字节用循环码+累加和共同实现可靠性更佳。

使用特权

评论回复
8
iiset|  楼主 | 2009-6-29 18:39 | 只看该作者

谢谢楼上几位了

我想的是在每条数据前加本组数据的序列号,也算是累加吧,
至于循环码不太清楚。今晚补习一下。


使用特权

评论回复
9
lanmp| | 2009-6-30 10:09 | 只看该作者

空间换次数

数据从上向下写,序号从下往上写。写满了擦。

使用特权

评论回复
10
linqing171| | 2009-6-30 12:53 | 只看该作者

回楼上,你的序号是0~254的么?

使用特权

评论回复
11
lanmp| | 2009-6-30 13:03 | 只看该作者

随便

长度固定就行了。

使用特权

评论回复
12
guang309| | 2010-4-7 16:43 | 只看该作者
高手们小第问个问题,那个FLASH里边有程序代码!在进行其它数据写入的时候怎么知道哪个地址是不是程序代码啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

37

帖子

0

粉丝