打印

由在强干扰下,CPU复位引发的思考 .......

[复制链接]
4443|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wxy8030|  楼主 | 2012-3-12 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由在强干扰下,CPU复位引发的思考:
1、强干扰下,CPU为啥会复位?一般的原因是程序“飞”了,由WDT拉了回来!由此带来问题2;
2、程序为啥会“飞”了?是因为指向当前程序地址的指针在干扰下没按套路出牌,乱出牌了,于是程序就飞了!由此带来问题3!
3、所谓的指针,无非是CPU里的一个RAM而已,这个RAM被干扰搞乱了 ...... 既然这个RAM会被干扰搞乱,毫无疑问,其他的RAM也会被搞乱(如...... 配置寄存器),而且目前没有证据说程序地址指针会比别的RAM更脆弱,一旦干扰,它先乱,由此带来问题4;
4、如果.......程序指针没乱(或者说没乱出WDT的控制范围),但其他RAM(如那些配置外设的寄存器,ARM的这些寄存器简直如大海一样让人站在面前有种无比渺小的感觉!)乱了 ...... 我的天,这些寄存器我就初始化时配置了一下,那么它们一旦乱了,某些外设很可能就从此不能用了,这个岂不是麻烦大了?或者又如果某些外设,本来没用它,但一不小心被干扰给“激活”了,那.......????
5、......如果遇到问题4,我们怎么办?
评分
参与人数 1威望 +8 收起 理由
谈的元 + 8 分析不错

相关帖子

沙发
yanwen217| | 2012-3-12 13:58 | 只看该作者
个人推测哈,不保证对:如果外部干扰强度已经到达可以导致RAM出错,那么MCU的Reset脚一定首先在强干扰面前起作用而使整个系统复位,从而使系统各设置数据重新执行写入。

使用特权

评论回复
板凳
HWM| | 2012-3-12 14:00 | 只看该作者
寄存器(PC指针通常就是一寄存器)或RAM确实容易受干扰,但程序一般放置在ROM中(或从ROM中复制)而ROM一般不太容易被干扰。系统出错后必须及时恢复(也就是所谓的“由WDT拉了回来”),而通常此过程会重新初始化相关的寄存器和RAM中的内容。

使用特权

评论回复
地板
EMP_| | 2012-3-12 16:06 | 只看该作者
这个,如果遇到确实难搞了,我觉得还是坐等老鸟来解答吧。

使用特权

评论回复
5
zjp8683463| | 2012-3-12 17:40 | 只看该作者
如果遇到四,把外部干扰找到

使用特权

评论回复
6
yewuyi| | 2012-3-12 18:05 | 只看该作者
先谈3,乱一般是PC指针乱了开始的,这可不是普通的RAM,而是特殊寄存器

使用特权

评论回复
7
yhf311| | 2012-3-12 19:26 | 只看该作者
楼主的这个问题不错,一般情况下,干扰引起单片机复位的原因大部分是电源和地中出现脉冲信号导致,所以要从根本上解决还是要找到源头,至于你所说的乱的情况,那就千奇百怪,很难分析的。

使用特权

评论回复
8
chunyang| | 2012-3-12 20:26 | 只看该作者
即使PC没乱,但程序代码是要先调入寄存器/累加器或RAM后才能被执行,此时代码被干扰发生改变后执行结果将不可知,事实上,绝大多数的程序跑飞并非由于PC值本身被干扰出错,而是程序或数据在被调入处理器执行的过程中出错。

使用特权

评论回复
9
Wxy8030|  楼主 | 2012-3-12 20:45 | 只看该作者
之所以提出该问题,是因为我在实际干扰测试中,偶尔发现有CPU没复位,程序绝大部分功能也还正运行,但某些外设(如AD、UART)出现了异常 ......

使用特权

评论回复
10
chunyang| | 2012-3-12 20:51 | 只看该作者
外设出问题而处理器正常也是常见的,特别是IO的闩扣效应。

使用特权

评论回复
11
Wxy8030|  楼主 | 2012-3-12 21:07 | 只看该作者
应该是配置寄存器出错了,因为在不断电复位CPU后恢复......

使用特权

评论回复
12
chunyang| | 2012-3-12 21:11 | 只看该作者
未必,实际情况是多样的,不能只说其中的一种。

使用特权

评论回复
13
nongfuxu| | 2012-3-13 08:54 | 只看该作者
偶尔发现有CPU没复位,程序绝大部分功能也还正运行,但某些外设(如AD、UART)出现了异常

某些外设(如AD、UART)是由对应的控制寄存器管理,估计当这些寄存器受干扰变味时就这样了。

使用特权

评论回复
14
Wxy8030|  楼主 | 2012-3-13 08:57 | 只看该作者
某些外设(如AD、UART)是由对应的控制寄存器管理,估计当这些寄存器受干扰变味时就这样了。
nongfuxu 发表于 2012-3-13 08:54


然也 .......

问题是,在遇到如类似问题时,该如何处理?总不能头疼医头、脚疼医脚吧?

使用特权

评论回复
15
nongfuxu| | 2012-3-13 09:22 | 只看该作者
在遇到如类似问题时,该如何处理?总不能头疼医头、脚疼医脚吧?

除了硬件上强化抗干扰,软件上只有当这些寄存器出问题时通过判断后重写入了。

使用特权

评论回复
16
jack_shine| | 2012-3-13 09:38 | 只看该作者
强干扰用抗干扰强的片子

使用特权

评论回复
17
EMP_| | 2012-3-13 10:16 | 只看该作者
不如平时CPU空闲的时候,定时把所有能检查的配置寄存器都检查一遍?

使用特权

评论回复
18
pa2792| | 2012-3-13 10:35 | 只看该作者
重点还是在电源,如果强干扰下还能保证电源的干净度和稳定度,死机会大大的减少。

使用特权

评论回复
19
Wxy8030|  楼主 | 2012-3-13 12:43 | 只看该作者
不如平时CPU空闲的时候,定时把所有能检查的配置寄存器都检查一遍?
EMP_ 发表于 2012-3-13 10:16


嘿嘿,ARM的寄存器我看的头都晕了 .........

再说了,就算寄存器检查了一遍,堆栈呢?启动文件里面那些寄存器呢?

使用特权

评论回复
20
O狂且O| | 2012-3-13 14:34 | 只看该作者
学习了! 加个金属罩? :shutup:

使用特权

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

本版积分规则

139

主题

2054

帖子

2

粉丝