打印

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

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

同意36楼救火车 说的情况

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

使用特权

评论回复
42
happystar| | 2007-11-27 19:47 | 只看该作者

re

今天发现一个问题:C8051F340在电池供电的时候,VDD在2。9V~3。1V之间都不能进行写FLASH操作。这个问题搞了我整整一天。开始的时候我电池电压3。0V 以为电压够了,谁知道。。。
还以为别的地方问题呢

使用特权

评论回复
43
mapleyang| | 2007-11-27 23:25 | 只看该作者

re

LS的,写flash是需要电源电压满足条件的,至于多少可以查你用的单片机的datasheet。

使用特权

评论回复
44
救火车|  楼主 | 2007-11-29 13:47 | 只看该作者

说点具体的。

下面是我对使用MEGA16L的防丢程序措施。5V电压8M晶振。
1.使用带电压监测的706硬件看门狗。即保证可靠复位,又防止CPU低电压工作。
2.不使用IAP自编程。熔丝位BOOTRST=1。以前我是用过自编程,但是为了安全起见,还是把它禁止了吧。
3.晶振选择高幅度振荡输出. CHOPT=0 工作电流会增加1个多毫安,但是稳定多了。
4.打开BOD  BODEN=0  BODLEVEL=0  一旦VCC下降到触发电平4.0v以下,MUC不工作;当VCC电平大于触发电平后,重新开始工作。
5.设置复位启动时间稍长。SUT 1=1  SUT0=0 上电复位时让CPU等待65个毫秒,使电源缓慢上升。
6.禁止JTAG。JTAGEN=1 OCDEN=1 因为JTAG有改写FALSH的能力。我在产品阶段用不着它,还是把它禁止了吧。
最后的熔丝位变成了 C9 2F 下面是使用双龙下载软件的抓图。

使用特权

评论回复
45
huangqi412| | 2007-11-29 14:32 | 只看该作者

关注

使用特权

评论回复
46
jjg| | 2007-11-30 11:32 | 只看该作者

AT89S系列用到现在也有几K了吧,怎么没发现程序被冲掉?

使用特权

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

请楼上介绍下工作环境和系统设计

是否使用了看门狗?

使用特权

评论回复
48
sharks| | 2007-12-1 15:34 | 只看该作者

我仔细研究过这个问题

   我发现Flash/EEP存储器的本质机理其实是一个电容储存电荷(在MOS的浮栅中)。其实从原理上说这种结构不是可靠的。
   1.如果外电场很强,强于浮栅电容的场强,数据就错了。
   2.如果存储的时候,给Flash充电时间不够,保存期并不长。这是最常见的问题,我遇到过多次。我用430单片机,如果Flash时钟配置的太快,导致充电时间不够,可能在数分钟到数月之内丢失Flash数据(发现这个问题是TI的Flash代码范例有误!!它忘了判忙延迟等待,造成Flash充电时序严重不够,当时是没问题的,一个月之内100%丢失!)。由此推论,某些标称高速的Flsah烧写设备,要慎用,因为他很可能卡在或少于芯片标称极限时间,造成数据保持时间到达不了手册给出的10-100年
   3.Flash供电电压不足经常造成数据不可靠。例如430单片机标称工作电压1.8-3.7,但Flash写入必须2.7V以上。我试验过2.3V仍能写入,但电压越低,数据越维持时间越短。2V以下断电重起两三次就没了。

   所以,需要可靠的场合尽量低速写入(Flsah写入时序中,电荷注入时间那一段加长,并不一定是编成设备的接口速度),把工作加到芯片上限 (一搬5V芯片用5.5V,3V芯片到3.6V),能明显提高数据可靠性。

使用特权

评论回复
49
平常人| | 2007-12-1 15:53 | 只看该作者

顶48楼!!!

建议版主送条裤子

使用特权

评论回复
50
yewuyi| | 2007-12-1 16:34 | 只看该作者

48楼的发言真是知音啊……

~~,基本上讲到正题上了啊……


严重赞同啊……


还有一个问题就是厂家的FLASH工艺不过关,电荷自漏的速度太快,就如同家的自来水龙头卡不死老是在那‘跑、冒、滴’……,

你想这样的FLASH能长时间工作吗?

还有一些FLASH的温度特性不好,在常温下自漏的速度还是比较慢的,但温度高了,自漏的速度大大加快,可能是厂家测试不完整,只做了常规温度测试,没做极限温度测试的原因,所以,有很多FLASH在高温环境下里面的内容丢失了。



::以上内容仅代表本人个人观点,是否不妥,请自行判断予以采纳……

使用特权

评论回复
51
hq_y| | 2007-12-1 16:42 | 只看该作者

关于温度湿度~~~~~~~可以看出来在温湿度条件比较恶劣情况下

存储未必是那么可靠;

我觉得象使用eeprom或者flash的存储参数,可以多写几个地方;
然后根据3选2这样的规则判断数据是否正确;
然后还可以根据正确的判断,把无论正确或者错误的地方,都重新写一遍;

使用特权

评论回复
52
dai_weis| | 2007-12-1 19:57 | 只看该作者

数据倒是可以,但是程序代码不行

程序代码没有办法实现三选二的方式运行
当然多个MCU相互调度,就像飞机中的FMC一样也行,三套系统各自独立,如果有一套出现异常则告警,改为手动操作了。

使用特权

评论回复
53
huangqi412| | 2007-12-1 20:10 | 只看该作者

顶48楼

使用特权

评论回复
54
gyt| | 2007-12-2 12:28 | 只看该作者

48楼说的是

不能迷信手册,有些数据是为了竞争需要

使用特权

评论回复
55
dld2| | 2007-12-2 12:32 | 只看该作者

48楼振聋发聩

使用特权

评论回复
56
ilymy| | 2007-12-2 14:32 | 只看该作者

记得用凌阳的061a

贴片的,调试的时候用电烙铁换个元件,或接个线什么的,程序立即丢失,重新下载就好了,但是用凌阳出的那个120元的开发板(plcc的)就没这种情况,

使用特权

评论回复
57
救火车|  楼主 | 2007-12-3 09:07 | 只看该作者

狂顶48楼

48楼sharks说得太好了。
小车学习了。
接下来的问题是,慢速烧写还可以,使用上限电压的方法在工艺中不容易实现。
要么准备另一套电源,要么只能用转接座烧芯片了。

使用特权

评论回复
58
hotpower| | 2007-12-3 09:14 | 只看该作者

救火车应该在44楼自己穿红色三角裤头---这个不腐败~~~

使用特权

评论回复
59
hkap| | 2007-12-3 09:38 | 只看该作者

48F说到根上了

使用特权

评论回复
60
kissyozi| | 2007-12-3 22:32 | 只看该作者

学习了

受教了.

使用特权

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

本版积分规则