打印

呵呵,可能是个定时炸*

[复制链接]
6987|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bg6nw|  楼主 | 2008-12-25 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
困扰了一年的EEPROM开机或关机改写的问题,无意中解决了。
一款产品,时而有24C04在开机瞬间被改写的BUG,不是太普遍,但很让人头痛,用加大上电复位电容延长复位时间的法子没有一丝改善。
有一个规律就是用KOREA的MCU没有出现过这样的毛病,只要插上CHINA的MCU,来几个迅速开关机,数据就被改写了。
前天猛然想到以前看到过程序匠人的一篇**,说到程序强壮性的问题,好像是语句冗余的方法。当即打开汇编工具,在关键跳转前面加了两个NOP,所有LCALL前面也加了两个NOP,烧个CHINA制造的片子一试,OK了。

相关帖子

沙发
E007| | 2008-12-25 22:12 | 只看该作者

MADE IN CHINA ~

    痛~

使用特权

评论回复
板凳
新闻局| | 2008-12-25 22:12 | 只看该作者

未必是你说的原因...

使用特权

评论回复
地板
linqing171| | 2008-12-25 22:15 | 只看该作者

这个够强

什么时候匠人在出来解释一下,似乎没有听说过加两个nop有什么用。

使用特权

评论回复
5
PowerAnts| | 2008-12-25 22:21 | 只看该作者

mark

使用特权

评论回复
6
谈的元| | 2008-12-25 22:24 | 只看该作者

cccccccccccccc

使用特权

评论回复
7
sz_kd| | 2008-12-25 22:46 | 只看该作者

呵呵,可能是个定时炸*

使用特权

评论回复
8
winloop| | 2008-12-26 13:40 | 只看该作者

还是没找到真正的原因

使用特权

评论回复
9
dcp| | 2008-12-26 14:06 | 只看该作者

你再试试慢上电

使用特权

评论回复
10
icecut| | 2008-12-26 15:28 | 只看该作者

感觉不太像啊

开关机几次,扑捉几个波形看看....

mips曾经要求跳转后要加nop

使用特权

评论回复
11
yewuyi| | 2008-12-26 16:20 | 只看该作者

匠人JJ简直是害人啊。。。

LZ是有中国特色的工程师。。。

使用特权

评论回复
12
hab2000| | 2008-12-26 16:28 | 只看该作者

没办法了,只好加NOP

有时候逼急了,所谓有病乱投医,试好了为原则,具体病因可能时间长了也就忘记还有这么回事。普遍工程师的态度。

使用特权

评论回复
13
奇门遁甲| | 2008-12-26 16:32 | 只看该作者

re

不信。

使用特权

评论回复
14
awey| | 2008-12-26 17:20 | 只看该作者

51的指令结构带来的毛病

程序跑飞,将数据当成是指令执行的结果。加两个nop可以纠正这种错误。

用单字的指令结构的单片机(比如PIC),可以避免。

使用特权

评论回复
15
耕在此行| | 2008-12-26 18:17 | 只看该作者

加两个NOP是有道理的

不过一般是加在跳转或调用之后。
加之前也有道理。

使用特权

评论回复
16
ljm810010| | 2008-12-26 18:24 | 只看该作者

从不相信加NOP这回事

跑飞了也就飞了,再跑回来也不会是什么好事,即使跑回了,还是会再被干扰。做好硬件抗干扰才是正道。

使用特权

评论回复
17
awey| | 2008-12-26 18:41 | 只看该作者

当然,能硬件解决更好

楼主这种情况大多发生在关机或受到干扰时,正常开机有复位电路,程序跑飞的可能性不大。
在适当的地方加两个NOP,能将跑飞的程序引到设计者可预知的程序跑道,不至于做出无法预料的事情。

51指令大多是多字节指令,由指令码和数据组成,当PC跑飞时,如果PC指向一条多字节指令的数据地址上,就会将数据当成是指令来译码,产生无法预料的结果。

使用特权

评论回复
18
ayb_ice| | 2008-12-26 19:39 | 只看该作者

加两个NOP可以挽救程序跑飞

除非你的程序跑飞,不过我认为你没有找到真正原因

使用特权

评论回复
19
wacke| | 2008-12-26 19:46 | 只看该作者

觉得不是真正的原因,多考虑考虑单片机上电的管脚状态。

对关键管脚用电阻上拉或下拉来保证上电过程电平正常。

使用特权

评论回复
20
mrainborn| | 2008-12-26 19:54 | 只看该作者

我们的机器有过这样的问题,是这样解决的

因为机器在出厂前对2402写好后,用户那里不再对2402进行写,就改成这样了

使用特权

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

本版积分规则

34

主题

511

帖子

0

粉丝