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

[复制链接]
6280|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 | 显示全部楼层
这个,如果遇到确实难搞了,我觉得还是坐等老鸟来解答吧。
zjp8683463 发表于 2012-3-12 17:40 | 显示全部楼层
如果遇到四,把外部干扰找到
yewuyi 发表于 2012-3-12 18:05 | 显示全部楼层
先谈3,乱一般是PC指针乱了开始的,这可不是普通的RAM,而是特殊寄存器
yhf311 发表于 2012-3-12 19:26 | 显示全部楼层
楼主的这个问题不错,一般情况下,干扰引起单片机复位的原因大部分是电源和地中出现脉冲信号导致,所以要从根本上解决还是要找到源头,至于你所说的乱的情况,那就千奇百怪,很难分析的。
chunyang 发表于 2012-3-12 20:26 | 显示全部楼层
即使PC没乱,但程序代码是要先调入寄存器/累加器或RAM后才能被执行,此时代码被干扰发生改变后执行结果将不可知,事实上,绝大多数的程序跑飞并非由于PC值本身被干扰出错,而是程序或数据在被调入处理器执行的过程中出错。
 楼主| Wxy8030 发表于 2012-3-12 20:45 | 显示全部楼层
之所以提出该问题,是因为我在实际干扰测试中,偶尔发现有CPU没复位,程序绝大部分功能也还正运行,但某些外设(如AD、UART)出现了异常 ......
chunyang 发表于 2012-3-12 20:51 | 显示全部楼层
外设出问题而处理器正常也是常见的,特别是IO的闩扣效应。
 楼主| Wxy8030 发表于 2012-3-12 21:07 | 显示全部楼层
应该是配置寄存器出错了,因为在不断电复位CPU后恢复......
chunyang 发表于 2012-3-12 21:11 | 显示全部楼层
未必,实际情况是多样的,不能只说其中的一种。
nongfuxu 发表于 2012-3-13 08:54 | 显示全部楼层
偶尔发现有CPU没复位,程序绝大部分功能也还正运行,但某些外设(如AD、UART)出现了异常

某些外设(如AD、UART)是由对应的控制寄存器管理,估计当这些寄存器受干扰变味时就这样了。
 楼主| Wxy8030 发表于 2012-3-13 08:57 | 显示全部楼层
某些外设(如AD、UART)是由对应的控制寄存器管理,估计当这些寄存器受干扰变味时就这样了。
nongfuxu 发表于 2012-3-13 08:54


然也 .......

问题是,在遇到如类似问题时,该如何处理?总不能头疼医头、脚疼医脚吧?
nongfuxu 发表于 2012-3-13 09:22 | 显示全部楼层
在遇到如类似问题时,该如何处理?总不能头疼医头、脚疼医脚吧?

除了硬件上强化抗干扰,软件上只有当这些寄存器出问题时通过判断后重写入了。
jack_shine 发表于 2012-3-13 09:38 | 显示全部楼层
强干扰用抗干扰强的片子
EMP_ 发表于 2012-3-13 10:16 | 显示全部楼层
不如平时CPU空闲的时候,定时把所有能检查的配置寄存器都检查一遍?
pa2792 发表于 2012-3-13 10:35 | 显示全部楼层
重点还是在电源,如果强干扰下还能保证电源的干净度和稳定度,死机会大大的减少。
 楼主| Wxy8030 发表于 2012-3-13 12:43 | 显示全部楼层
不如平时CPU空闲的时候,定时把所有能检查的配置寄存器都检查一遍?
EMP_ 发表于 2012-3-13 10:16


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

再说了,就算寄存器检查了一遍,堆栈呢?启动文件里面那些寄存器呢?
O狂且O 发表于 2012-3-13 14:34 | 显示全部楼层
学习了! 加个金属罩? :shutup:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

2263

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部