OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3917|回复: 9

flash存储问题

[复制链接]

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-11
在线时间
28 小时
发表于 2016-2-18 08:34:07 | 显示全部楼层 |阅读模式
2金钱
小弟刚接触flash的底层驱动开发,有个问题不清楚,还望给为帮忙解答一下,谢谢!
问题是:flash可以作为数据存储器使用,那么当板子断电,重新上电后怎么实现在断电之前的位置继续进行flash写操作,也就说怎么实现flash的多次连续存储?

最佳答案

查看完整内容[请看2#楼]

建议:加铁电,比较好. 每写一次,就往铁电里面更新一次数据.这样可以保证任何时候都知道当前位置(包括突然断电重启), 其次,还可以用加附加电源的方法.断电后,通过附加电源继续供电,完成剩余操作/现场保护. 下次供电,就可以正常运行.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-2-18 08:34:08 | 显示全部楼层
建议:加铁电,比较好. 每写一次,就往铁电里面更新一次数据.这样可以保证任何时候都知道当前位置(包括突然断电重启), 其次,还可以用加附加电源的方法.断电后,通过附加电源继续供电,完成剩余操作/现场保护. 下次供电,就可以正常运行.
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-2-18 08:37:44 | 显示全部楼层
1、首先你不知道你上次写到哪 2、你上次写的资料是否还存在都不知道。。。。
回复

使用道具 举报

0

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-6-5
在线时间
37 小时
发表于 2016-2-18 08:48:24 | 显示全部楼层
本帖最后由 zhanghan4310 于 2016-2-18 08:50 编辑

说点看法,如果错误请莫见怪。你描述的情况类似于这种:板子正常工作,正在写入FLASH,当然数据很多,突然断电。然后要求下一次上电时接着断电前的位置继续写。  这个也可以实现,你需要维护一个地址的数据,写入一个数据就记录一个地址。所以断电后根据这个地址继续写入即可。
    那么地址怎么处理?比如你指定0x08008000作为记录的地址。那么每次读这个就知道写到什么地方了。然而这并不是一个很好的办法,因为FLASH它不像EEPROM可以单字节读写,如果你要写入的地方已经存在数据了,为了数据的正确性,那么就需要在写入新数据前擦除当前的一页。原子的例程里面已经提供了相应的代码。这样的一个弊病是即使写入很少的数据有时也需要擦除一整页,即使大部分数据是不需要改动的,最后你还是需要把这部分不需要改动的数据再写入回去。这会导致FLASH擦写频率增多,FLASH也是有寿命的。  还有别的方案是你用外置的存储芯片处理,一是容量大,二是操作方法和单片机内置的FLASH操作方法基本一致。 或者采用EEPROM芯片,这样的芯片操作起来更加方面,直接单字节擦写,而且擦写次数更多,不过容量稍小。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-2-18 08:51:17 | 显示全部楼层
zhanghan4310 发表于 2016-2-18 08:48
说点看法,如果错误请莫见怪。你描述的情况类似于这种:板子正常工作,正在写入FLASH,当然数据很多,突然 ...

大哥,你光说在写,你得注意资料还在不在啊。。。。资料都不在了,说别的都是多余
学无止境
回复

使用道具 举报

0

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2014-6-5
在线时间
37 小时
发表于 2016-2-18 13:18:17 | 显示全部楼层
jermy_z 发表于 2016-2-18 08:51
大哥,你光说在写,你得注意资料还在不在啊。。。。资料都不在了,说别的都是多余

楼主没写这方面的问题,我也就没说了。断电之后直接给覆盖了,接着上次的写更加麻烦。
回复

使用道具 举报

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-11
在线时间
28 小时
 楼主| 发表于 2016-2-19 10:20:50 | 显示全部楼层
jermy_z 发表于 2016-2-18 08:37
1、首先你不知道你上次写到哪 2、你上次写的资料是否还存在都不知道。。。。

我就是想知道上次写到哪里啦,至于上次写的资料还在不在没关系。感谢你的答复!谢啦!
回复

使用道具 举报

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-11
在线时间
28 小时
 楼主| 发表于 2016-2-19 10:23:52 | 显示全部楼层
zhanghan4310 发表于 2016-2-18 08:48
说点看法,如果错误请莫见怪。你描述的情况类似于这种:板子正常工作,正在写入FLASH,当然数据很多,突然 ...

你的看法和我的一样,我的疑问也就是不通过每次在flash上记录写入的地址,有没有其它方法下次能继续写数据。
感谢你的回复,谢啦!
回复

使用道具 举报

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-11
在线时间
28 小时
 楼主| 发表于 2016-2-19 10:24:29 | 显示全部楼层
正点原子 发表于 2016-2-18 08:34
建议:加铁电,比较好. 每写一次,就往铁电里面更新一次数据.这样可以保证任何时候都知道当前位置(包括突然断 ...

这个方案不太适合我现在做的东西,谢啦!
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2016-2-19 11:08:10 | 显示全部楼层
XIN随你而动 发表于 2016-2-19 10:20
我就是想知道上次写到哪里啦,至于上次写的资料还在不在没关系。感谢你的答复!谢啦!

资料都不在了,讨论别的没有意义
学无止境
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 02:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表