Icyan 发表于 2010-3-31 11:47:06

求助:关于数据的掉电保护

最近用430做了一个模块,其中有一个长整型的关键数据,在程序运行的时候,大概90秒左右更新一次(+1操作),我希望,这个数一直保持最后更新的状态,系统掉电,然后再上电运行,我希望这个数值是上次掉电前最后一次更新的数据,而不是程序初始化的值。请问有什么办法解决么?

1、听说可以采用擦写flash的方式,看了相关资料,感觉这个擦写比较麻烦,而且,我不是很清楚430的flash存储器是怎么划分的。了解的大虾方便给讲解下,或者留下点资料么?况且,我要做的只是保护这一个长整型,不是更新程序以及其他,擦写flash的方式是不是有点大材小用了?如何去找这个变量的地址?(是不是一个简单的指针就解决了)

2、另外似乎还有一种是用no_init,对某个变量进行保护,不过似乎还要一个什么xcl文件?这个从哪里弄阿?知道的大大能详细讲一下这个操作及其原理么?

3、最后,希望比较一下这两种方式,以及这两种方式的典型应用。谢谢

PS:不知道我表述的条理够不够清晰……问题太多了,请大家耐心
./emotion/em024.gif

bd2rae 发表于 2010-7-14 19:55:12

no_init的变量还是保存在RAM中,无法实现掉电保护。flash中只有128或256字节可供用户使用,你的长整型数居是4个字节,每个扇区的128个字节只能写32次,2个扇区256字节按照你的用法,每工作96分钟就要擦除一次,我不知你的系统的工作状态,如果经常连续工作的话,flash的寿命是最大的问题。430的flash是用来保存系统信息的,而不是用来保存工作变量的。我一般是外接一片DS1302保存数据。
页: [1]
查看完整版本: 求助:关于数据的掉电保护