发新帖我要提问
12
返回列表
打印
[MCU]

聊聊数据存储

[复制链接]
楼主: dj狂人
手机看帖
扫描二维码
随时随地手机跟帖
21
ayb_ice| | 2014-12-19 13:40 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 ayb_ice 于 2014-12-19 13:41 编辑
dj狂人 发表于 2014-12-19 13:10
哈哈   欢迎拍砖

“typedef struct

保存数组当然最好用结构体了,方便维护(增加需要保存的数据只需要修改结构体成员就可以了,非常简单),哪个数据修改保存哪个数据那会搞死人的,这样维护方便,效率其实也高,平时在RAM里操作,开机后读到RAM里,掉电或关机保存(当然没有改变的话不需要保存),20W次的擦写足够了

使用特权

评论回复
22
dj狂人|  楼主 | 2014-12-19 14:01 | 只看该作者
ayb_ice 发表于 2014-12-19 13:40
保存数组当然最好用结构体了,方便维护(增加需要保存的数据只需要修改结构体成员就可以了,非常简单), ...

“,哪个数据修改保存哪个数据那会搞死人的”这个不难的。当然楼上说的也有理,毕竟这些东西得看实际应用场合。就像20W次擦写,看着好像是够了,但如果在某种场合下程序运行的过程中需要频繁的进行数据修改,20W还是有点少,这个时候合理的利用Flash有限的空间还是不得不考虑的

使用特权

评论回复
23
sxhhhjicbb| | 2014-12-19 14:17 | 只看该作者
20w次,如果你的产品可以用10年,那么,每天可以写54次。

使用特权

评论回复
24
lxyppc| | 2014-12-19 14:20 | 只看该作者
dj狂人 发表于 2014-12-19 13:15
敢发表出来就不怕拍砖,如果觉得哪里不妥或不对的,也希望大伙给予指正,万分感谢 ...

确实没看懂你这个到底是要做什么
内部Flash一般用来存不经常改变的数据
比如一些运行参数什么的

你把经常改变的东西存在Flash里面
还弄了一堆方法来减少改写频率
想把战略性错误用战术来弥补,我个人觉得不大可行

使用特权

评论回复
25
ayb_ice| | 2014-12-19 14:27 | 只看该作者
lxyppc 发表于 2014-12-19 14:20
确实没看懂你这个到底是要做什么
内部Flash一般用来存不经常改变的数据
比如一些运行参数什么的

明白人

使用特权

评论回复
26
dj狂人|  楼主 | 2014-12-19 16:42 | 只看该作者
lxyppc 发表于 2014-12-19 14:20
确实没看懂你这个到底是要做什么
内部Flash一般用来存不经常改变的数据
比如一些运行参数什么的

“确实没看懂你这个到底是要做什么”  恩恩,这个说明我学的还不透彻,还不能把自己想说的东西简单明了的用文字表达出来
“内部Flash一般用来存不经常改变的数据,你把经常改变的东西存在Flash里面”
首先“你把经常改变的东西存在Flash里面”
这里放的是我已经明确的想要在程序运行的时候对发生改动的数据进行保存。

“内部Flash一般用来存不经常改变的数据”
数据有改动的时候进行保存基于有这个需求的情况下,而在数据有改动的时候比较实时的进行保存主要是我不知道什么时候会出现突然掉电。
再有“还弄了一堆方法来减少改写频率”我是想办法来减少对Flash进行整页擦除的次数,并没有说减少改写的次数,而且我帖子中比较认可的方法并不是改写,而是数据追加
建议楼上在看一遍这个帖子:)

使用特权

评论回复
27
dj狂人|  楼主 | 2014-12-19 16:46 | 只看该作者
lxyppc 发表于 2014-12-19 14:20
确实没看懂你这个到底是要做什么
内部Flash一般用来存不经常改变的数据
比如一些运行参数什么的

““还弄了一堆方法来减少改写频率””对这个我还想说一下,我文中说的合理利用Flash空间。摒弃了有数据改动的时候先把里面的数据取出到RAM中,进行修改之后对Flash整页擦除之后再重新写入这种方法。而是建议先把数据追加到Flash中还未写过数据的地方

使用特权

评论回复
28
dj狂人|  楼主 | 2014-12-19 16:47 | 只看该作者
sxhhhjicbb 发表于 2014-12-19 14:17
20w次,如果你的产品可以用10年,那么,每天可以写54次。

:)

使用特权

评论回复
29
苏山人家| | 2014-12-19 22:28 | 只看该作者
如果一次存取直接很多,正向追加数据,反向写入本页偏移(ox00,ox01,ox02...)反向查到oxff就知道正向偏移
单次数据字节大的话效率还行,直接少就没意义了。

使用特权

评论回复
30
科技猎人| | 2014-12-21 19:26 | 只看该作者
lxyppc 发表于 2014-12-19 14:20
确实没看懂你这个到底是要做什么
内部Flash一般用来存不经常改变的数据
比如一些运行参数什么的

明白人

使用特权

评论回复
31
sxhhhjicbb| | 2014-12-21 21:33 | 只看该作者
苏山人家 发表于 2014-12-19 22:28
如果一次存取直接很多,正向追加数据,反向写入本页偏移(ox00,ox01,ox02...)反向查到oxff就知道正向偏移
...

反向查,注间“当前主流spiflash或其它串行flash有增量读,但没有反向减量读”

使用特权

评论回复
32
w522930954| | 2014-12-22 09:29 | 只看该作者
想知道楼主的办法如果用来存储大小长度不一的多个变量的话,岂不是还要弄一个变量来记住这些数据长度?
增加存储寿命可以靠空间来换吧。
1个字节存储一个变量是10W次,2个字节存储一个变量不就有20W次了么。。

使用特权

评论回复
33
dj狂人|  楼主 | 2014-12-22 10:27 | 只看该作者
w522930954 发表于 2014-12-22 09:29
想知道楼主的办法如果用来存储大小长度不一的多个变量的话,岂不是还要弄一个变量来记住这些数据长度?
增 ...

为什么要记住长度呢

使用特权

评论回复
34
ALISWANG| | 2014-12-22 14:04 | 只看该作者
李富贵 发表于 2014-12-18 22:55
星宿派都有重点实验室了,星宿老仙自封的吗?

孤陋寡闻,求拍醒,星宿派是那门那派啊?

使用特权

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

本版积分规则