OpenEdv-开源电子网

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

怎么保证FLASH中的程序能够有效运行20年或更长?

[复制链接]

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
发表于 2018-8-15 22:48:52 | 显示全部楼层 |阅读模式
1金钱
将程序烧录进stm32的FLASH,设备一直处于开机工作状态。想让设备在日常环境下持续工作很长时间,比如10年、20年。在这期间FLASH中的数据应该有错误的风险吧?这怎么处理呢?不考虑硬件的措施,单单从软件方面怎么加强?或者是否需要软件加强?谢谢。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-8-15 22:55:32 | 显示全部楼层
你真要较这个真的话,就模块化, 搬到RAM去跑
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-16 01:31:24 | 显示全部楼层
flash寿命一般都有这么长啊
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-8-16 07:05:01 | 显示全部楼层
好像不经常写FLASH的话, 在只读情况下,FLASH的寿命很长!
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-16 08:14:00 | 显示全部楼层
个人觉得楼主说的问题与Flash的写寿命无关。Flash芯片一般标称的数据存储时间是十年左右,因为组成Flash芯片最基本的MOS管结构本质上还是一个锁电子的结构,不可避免地会出现漏电现象,时间一长,电平不够就可能出现难以预料的位翻转。之前我买过一个质量不是特好的U盘,大约是15年10月份掉床底了,然后17年5月份重新找到了,之前存的文件就有些出乱码了。后来格式化还能正常使用,预计就是类似的问题。

如果可以从外部FLASH运行程序的话倒是有个软硬结合的方法,设置多片(三片及以上)Flash冗余存储程序。每隔一定时间(例如一个月)就自动对比所有flash芯片中存储的数据,如果其中有一个和其他几片的数据都不同,那么说明这个flash芯片内部MOS管漏电差不多了,就借用其他FLASH芯片的数据重新烧写一遍。然后再校验一遍,确认无误后从最近烧写的芯片(因为这个出问题的概率最小)中执行程序。

对于片内flash部分……我没有什么好办法,等待其他大神的好点子。

十六进制带我飞。
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2018-8-16 09:05:54 | 显示全部楼层
做的产品能用10年就不错了
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-16 14:30:36 | 显示全部楼层
谢谢各位的回答。5楼朋友说的就是我真正要表达的意思。片子寿命哪怕100年,在这器件数据也有错误的可能。
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-16 14:37:45 | 显示全部楼层
DreamWaterPro 发表于 2018-8-16 08:14
个人觉得楼主说的问题与Flash的写寿命无关。Flash芯片一般标称的数据存储时间是十年左右,因为组成Flash芯 ...

参考您的思路,对于片上FLASH,我下面的思路是否可行:
1、将FLASH分为3个区,第1和第2号区域都烧录相同的程序,第0号区域烧录一个对后2个区域校验的程序;
2、程序正常执行第1号区域的程序,每隔一段时间(比如一个月)跳转到第0号区域。该区域的程序对第1号区域和第2号区域分别进行CRC校验,若校验通过则继续执行。否则,用正确区域的程序覆盖错误的。若都错误,就不管了。。。。

不知道这样是否可以?求大神指点。

感觉这应该是个能解决的问题,东方红卫星在天上飞多长时间了??
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-8-16 23:13:15 | 显示全部楼层
hnxyxiaomeng 发表于 2018-8-16 14:37
参考您的思路,对于片上FLASH,我下面的思路是否可行:
1、将FLASH分为3个区,第1和第2号区域都烧录相同 ...

我觉得是可以的~

东方红卫星那个时候单片机价格昂贵,flash器件技术还基本都是被国外垄断的,嗯我猜那个时候要么是像8031这种不带片内ROM的单片机+一次性可编程的那种掩模ROM,要么就是用纯数字逻辑电路搭建的吧。。。
十六进制带我飞。
回复

使用道具 举报

13

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2012-12-12
在线时间
273 小时
发表于 2018-8-16 23:34:41 来自手机 | 显示全部楼层
DreamWaterPro 发表于 2018-8-16 23:13
我觉得是可以的~

东方红卫星那个时候单片机价格昂贵,flash器件技术还基本都是被国外垄断的,嗯我猜那 ...

4004  1971年才出现,你咋又扯到东方红了
回复

使用道具 举报

20

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
605
金钱
605
注册时间
2017-7-14
在线时间
116 小时
发表于 2018-8-16 23:40:18 | 显示全部楼层
持续关注   
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-17 01:53:00 | 显示全部楼层
搞2个flash,做备份。
每个存储5年,然后交替的互相拷贝。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-8-17 11:19:19 | 显示全部楼层
什么电子产品能用20年
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-28
在线时间
5 小时
发表于 2018-8-17 11:37:44 | 显示全部楼层
用一个光盘,定期读取覆盖呗
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-17 11:54:57 | 显示全部楼层
正点原子 发表于 2018-8-17 01:53
搞2个flash,做备份。
每个存储5年,然后交替的互相拷贝。

原子哥,我现在想的是用片上flash
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-17 11:55:26 | 显示全部楼层
哆啦A萌 发表于 2018-8-17 11:19
什么电子产品能用20年

这就是要解决的问题啊。。。
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-17 11:55:44 | 显示全部楼层
二哥 发表于 2018-8-17 11:37
用一个光盘,定期读取覆盖呗

很小的产品,光盘不合适
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2018-8-17 12:28:28 | 显示全部楼层
目测楼主想造星空探测器
回复

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-8-17 16:32:46 | 显示全部楼层
hnxyxiaomeng 发表于 2018-8-17 11:55
这就是要解决的问题啊。。。

我说的是当代社会没有一样电子产品的实用性能保持20年,要么被新技术替代,要么被价格碾压
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-18 01:38:41 | 显示全部楼层
hnxyxiaomeng 发表于 2018-8-17 11:54
原子哥,我现在想的是用片上flash

片上flash要是坏了,我也没办法哦。你重新发明一个不会坏的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2017-7-2
在线时间
12 小时
 楼主| 发表于 2018-8-20 10:23:25 | 显示全部楼层
感谢各位大神的回复。可能我之前的表述不准确,我的意思如下:
1、承认FLASH是有寿命的,但是在寿命达到之前FLASH可能彻底坏掉,也可能个别bit会因电荷流失造成失效(但重刷程序可以恢复);
2、当然,硬件可以通过筛选拿到可靠性高的片子;
3、但是,我考虑的是在软件方面是否能够加强下,检测到在长期使用过程中个别Bit失效的问题,如果能够检测到,我就更新下程序;
4、5楼的回答我觉得基本可以,但有点复杂,现在我还在查资料。

谢谢
回复

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1669
金钱
1669
注册时间
2018-1-29
在线时间
160 小时
发表于 2018-8-21 07:23:05 | 显示全部楼层
d1z1y2 发表于 2018-8-17 12:28
目测楼主想造星空探测器

估计是火星探测器!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 17:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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