打印

2007年12月专题讨论----单片机程序丢失的原因与抑制方法

[复制链接]
楼主: 救火车
手机看帖
扫描二维码
随时随地手机跟帖
21
yewuyi| | 2007-11-24 14:49 | 只看该作者 回帖奖励 |倒序浏览

如果有写指令

那么一定要把低电压检测打开,而且要尽量把电平值设置高一点,并且每次写操作的字节数都尽量少点,为什么要这样推荐呢?

很简单,软件执行写FLASH的时候,如果不发生掉电则OK,如果发生掉电呢,因为低电压检测已经打开,并且设置了一个比较高的电压,例如5V系统设置为4.5V启动BOD,则掉到4.5V以后,已经发出的写指令继续执行写操作,未发出的写指令会被强制RST,4.5V的电压掉到FLASH完全不能写还要一定的时间,这个时间内,一般而言,已经发出的字节数比较少的写操作都能执行完。


这是对付这个问题一个非常好的方法……

使用特权

评论回复
22
iC921| | 2007-11-24 14:58 | 只看该作者

很有意义!

就是不知道能有多深入

使用特权

评论回复
23
zld351| | 2007-11-25 08:35 | 只看该作者

关注中。。。

使用特权

评论回复
24
古道热肠| | 2007-11-25 10:54 | 只看该作者

重要场合,电源低电压的保护是值得关注

  让单片机在低电压时运行在复位状态是一种最安全的状态,因为此时系统受控且状态可知。电压低时,程序运行容易出问题。
  最简单的解决办法就是复位电路加上低电压检测芯片,如MAX810L

使用特权

评论回复
25
qihao| | 2007-11-25 13:11 | 只看该作者

~~~

值得注意,写期间的掉电容错处理
1:加入数据校验
2:提供异常时恢复出厂设置

仅就配置文件而言

使用特权

评论回复
26
原野之狼| | 2007-11-25 17:23 | 只看该作者

我觉得供电不稳会带来很大的问题。。。。

我最近也用到这个问题,用的是C8051F,用电池来供电,电池接触不是很好,所以只要电池抖动了,程序很容易就丢失了,要么是没法启动,要么是有些功能紊乱,这个概率是相当大啊,我无语了。

使用特权

评论回复
27
dai_weis| | 2007-11-25 18:51 | 只看该作者

电源不稳定可能是造成数据丢失的原因

但是应该可以避免或者减少这种概率,复位引脚一定要按规矩做,有ISP等功能的和ISP有关的引脚最好作为输出处理,减少都最为输入IO的使用,可以最大避免电压不稳引起的时序巧合

使用特权

评论回复
28
ayb_ice| | 2007-11-26 08:22 | 只看该作者

如果程序中没有IAP,即使电源不稳也不会致程序丢失

使用特权

评论回复
29
xwj| | 2007-11-26 08:58 | 只看该作者

不赞成LS的观点

因为:
1.没用IAP的也一样会丢失
2.IAP只在设置时用一下,平时根本就没用到,而且是有写保护并随开随关的
3.IAP 地址有合法性检测,有逻辑锁的,就算跑飞也是不可能改到程序区的
4.有合理的外加看门狗和电源检测IC:MAX813,有正确的电源退耦和规范的布线
5.一模一样的条件,别的IC 从未出过类似问题

如果这都无法保证可靠性,那还能靠什么来保证可靠性???

为什么就不是IC 问题?

使用特权

评论回复
30
救火车|  楼主 | 2007-11-26 11:42 | 只看该作者

上电下电时的电源瞬间不稳,可能是个重要的原因

上电时电容有一个充电过程,从0V升到VCC,需要一个过程。也就是有一段时间,CPU电压不足,处于工作和不工作的两可之间,片内寄存器和内存也会不稳定。比如写1,但读出0.
以上都是我的个人猜测,毕竟谁也没钻进CPU里看过。下电过程同样也有电源不稳时候。

使用特权

评论回复
31
ayb_ice| | 2007-11-26 14:01 | 只看该作者

没有用IAP也会造成程序丢失,这也太恐怖了吧

那就是IC设计有问题了

使用特权

评论回复
32
qiushui007| | 2007-11-26 14:03 | 只看该作者

主要还是单片机本身的稳定

使用特权

评论回复
33
flash607| | 2007-11-26 14:13 | 只看该作者

沙发

呵呵,意法不会那么差吧?

使用特权

评论回复
34
xwj| | 2007-11-26 14:15 | 只看该作者

LS,谁说是意法的啊?意法的才没那么差呢

使用特权

评论回复
35
forthlab| | 2007-11-26 15:13 | 只看该作者

关于28楼ayb_ice说的没有IAP

“如果程序中没有IAP,即使电源不稳也不会致程序丢失”
-----------------------------
我认为完整的说法是“CPU内部没有IAP功能,即使电源不稳也不会致程序丢失。”
这在freescale的稳定的程序的10个法则里的。

如果程序还会丢失,那就是设计和工艺问题了,靠程序没有办法解决。

使用特权

评论回复
36
救火车|  楼主 | 2007-11-26 15:27 | 只看该作者

FALSE不会呆着呆着,就丢的。

我分析一定是单片机进入混乱状态,启动了编程的程序。
比如IAP、ISP、JTAG、写FALSH程序、并行编程。除了并行编程不太可能造成改写FALSH,其他的几种方式,都不能排除嫌疑。
假设单片机处于混乱状态,一旦进入上述状态,哪怕只破坏一个字节,结果可想而知。
为了防止单片机混乱。我总结出以下几条,请各位大侠补充。
1、尽量改善电源。这是老话了。并不是说单片机能工作就行,电源要设计好,加上104去耦电容改进电路布局等措施。
2、使用带电压监测的复位芯片。防止上电/下电时,单片机电压处于工作和不工作的临界时,单片机自己胡来。
3、保护编程的IO口,加些上拉或下拉电阻。如IAP、ISP、JTAG等。防止单片机复位之前的时间被处界杂波干扰,误入编程状态。这点是否有用,请大侠们讨论。
 

使用特权

评论回复
37
yewuyi| | 2007-11-26 20:23 | 只看该作者

LS的理解错误

救火车 发表于 2007-11-26 15:27 侃单片机 ←返回版面    

36楼: FALSE不会呆着呆着,就丢的。 




这句是错的……

FLASH会呆着呆着就丢的,都有个时间问题……

很多日系/韩系/台系的MCU等FLASH器件,都只能保证用10年,MCP很多却是40年,呵呵,这就叫区别……

使用特权

评论回复
38
jack.king| | 2007-11-27 08:52 | 只看该作者

与单片机本身的性能有点关系吧!

开始我用的是89S8252不会出现丢失现象.没有没有产生什么其他的问题.
  后来89S8252没有买的了
  现在用的89S8253不知道怎么近来出现了很多这个数据丢失问题.
   头痛~~~~~~~~~~~~~~~~~~~~~

使用特权

评论回复
39
救火车|  楼主 | 2007-11-27 09:52 | 只看该作者

36楼说的是另一个方面的问题了。

超过10年数据丢失,是芯片的参数之一,好像根本没办法改善,除非使用OTP的。
我们现在只能研究远远不到10年,数据就丢失的问题。我认为最大可能就是CPU自己胡来,造成的。

使用特权

评论回复
40
yewuyi| | 2007-11-27 14:27 | 只看该作者

呵呵,如果FLASH工艺不过关……

到不了10年就丢,这也是CPU胡来?

很多其实就是FLASH工艺不过关的原因……

另外OTP也有存储时间的限制,也不是可以‘永久’的……

使用特权

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

本版积分规则