czlyw的笔记 https://bbs.21ic.com/?961 [收藏] [复制] [RSS]

日志

FLASH MCU工作一段时间后失常的原因分析

已有 772 次阅读2007-9-1 00:04 | FLASH, MCU

在电子工程师社区发了帖子:请教FLASH MCU工作一段时间后失常的原因 (1205字节)

这里整理一下.

 

第1帖:

我采用一款FALSH MCU设计了一个电池供电的消费类产品.
生产的批量已经达到50多万.可是好景不长,发出的产品在前几个月有少量的不良品返回,其中有一些产品不工作,将MCU拆下后重新烧写程序后就工作正常,看来是程序被搽除了或者是部分搽除了.随着时间的推移,返修的不良品越来越多,比率也越来越大.我的客户开始着急了,让我停止供货和整顿.经过检查,发现FALSH MCU更换后就工作正常的产品比率居然达到了5%以上.现在,每天还在不断地退货,
着急啊.

    请教各位大侠,这主要是FALSH MCU本身的质量问题引起,还是程序的抗干扰措施不到位引起. 需要说明的两点是,一点是:我的程序中有对FALSH ROM进行写的指令,而且这个FALSH MCU 允许写的地址是FALSH MCU的任意地址.FALSH MCU本身无自我程序代码的保护功能.还有一点是:该FALSH MCU内部无低压复位功能,如果外部无低压复位电路的话,产品很容易死机.

   自我分析:由于MCU本身无自我代码保护功能,所以,当程序乱飞的情况下,只要飞到写指令上,就有可能将程序代码搽除---写到了不该写的地址.
   是否有可能:烧写IC时,静电引起IC部分损坏.但是,奇怪的是,如果是烧写时静电局部损害IC,过了几个月才坏的话,那么IC拆下后重新烧录后99.9%以上的MCU都可以再重新工作.也就是说,程序丢失或错误的问题是主要的.

第2帖:

回复2楼:
1,IC型号暂时不便公开,如你能解决问题,或者给予好的建议,我可以在邮件里告诉你,也包括其他你想知道的资料.
2,电路图很简单,MCU,晶振和下拉电容,按键,输出电路,低压复位电路,就这么多.
采用电池供电,2节1.5V电池.电池正极直接接MCU的VCC.
3,MCU上电,初始化程序,自检程序,然后进入待机状态,等待按键.
自检程序耗电20MA,时间1秒多.现在已经改为:上电初始化后直接待机,上电后MCU不耗电.待机电流3-5UA.
4,程序中写FALSH的指令前已经做了很多设置条件.如不符合,则不会执行写FALSH的指令.我认为,程序PC乱飞,如果飞到判断条件前,这些动作是有用的,如果直接就飞到了写的这条指令,再怎么做处理也没有用啊?!
5,我不是原始设计人员,但是这个程序的流程我都清楚.如需要原始设计人员参与交流,没有任何问题.
6,你的估计是对的,事实也证明了这点.之所以会这样,是因为早期的产品基本上都是没有加低压复位电路的.退回的产品加了低压复位电路的产品再发出的退还比较少.之所以还有,我认为和自检程序耗电有很大关系.现在自检程序也去掉了,但是改好发出去的产品还未得到反馈.现在发出的新产品都加了低压复位电路,并且去掉了自检程序.
    自检程序的影响是:当电池用了几个月之后,电池能量不足了,产品工作时,耗电加大,电池电压瞬间下降,引起复位,还有如不足于供电的话,就会使得MCU程序乱飞而软件复位.复位后又自检耗电,再次使得MCU复位,如此一来,大大增加了MCU电压不稳和程序乱飞的次数和几率.这也就是,产品用了一段时间之后才容易出现问题的程序原因.
    现在把自检程序去掉了,这样的几率是小了,但是,如果客户不及时更换电池,产品使用频繁的话,导致程序乱飞的几率加大,程序丢失或被误搽除的几率也还是有的.但是,肯定是比以前的产品要少多了.
    现在,我是想请教各位,是否还有软件措施,可以进一步减小程序被误搽除的办法.

 

 

 

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)