单片机/ARM死机的常见原因及解决方案

前几天在写arm时经常死机,莫名其妙,在这搜集了一些比较好的解答和方案,给大家参考。
可能原因:
一 振荡器停止振荡
又可以分为电源电压不稳,或者强干扰引起的振荡器停振。
二 pc指针跑飞
电源电压不稳或强干扰引起pc跑飞,如果看门狗不好,也会引起死机。
三 设计上对长引出线的io没有保护,静电打在io口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。
四. 复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。
五.电源电压 的地 不稳 ,造成电源电压 瞬间负电压 导致单片机故障 程序不发运行
综上所述:
设计电路时,应该注意:
1.电源稳定
2.io保护
3.振荡器pcb布线要注意
4.复位电路设计和pcb布线
5.电源,信号线干扰路径的保护,加滤波tvs等
6.高速信号输出远离信号输入端,如spi总线,i2c总线布线要远离adc,复位,时钟等布线处,以及其他模拟前端。
我的理解:
1、“跑飞”是因为程序隐患或外部干扰引起的误动作,致使pc被写入“出界”数据,跑到了ram区,或者跑到了flash的空白区。如果pc指向了ram区,哪情况就不好说了!因为程序译码器可能得到任意译码结果。如果pc指向了flash空白区,则可以事先将所有flash空白区填入某个你想要的数据,迫使程序译码器在这里翻译出你想要的指令,从而进行相应的处理。在iar workbench中好象有在空白区填充数据的设置。
2、“死机”是指pc进入了“死循环”,或者是mclk等于近似为零的值。此时,要想救活mcu,非外狗不可。
*程序运行过程中,如果mcu电源出现问题(电源供电问题,或其它外部电路引起的电源扰动),比较容易出现“跑飞”现象
程序跑飞应该是pc出错;软件和硬件都可能出这样的问题.
死机应该是cpu根本没有运行,多是硬件方面的问题造成的,比如por复位不成功,430比较容易出现掉电不完全后重新上电.
看门狗在这个方面介绍:
有了看门狗就不会死机
死机是指cpu的程序指针进入一个死循环,无法执行正常的程序流程。其外在表现常常是:正常功能丧失,按键无响应,显示凝固。单片机死机后,只有复全才能走出死循环,执行正常的程序流程。众所属知,克服死机的最有效手段是加看门狗(watchdog)。
目前用得最广泛的看门狗实际上是一个特殊的定时器dogtimer。dogtimer按固定速率计时,计满预定时间就发出溢出脉冲使单片机复位。如果每次在dogtimer溢出前强行让dogtimer清零,就不会发出溢出脉冲。清零脉冲由cpu发出,在单片机程序中每隔一段语句放一个清dogtimer的语句——feeddog语句,以保证程序正常运行时dogtimer不会溢出。一旦程序进入一个不含feeddog语句的死循环,dogtimer将溢出,导致单片机复位,跳出这个死循环。本文称这种看门狗为典型看门狗,典型看门狗已被集成比,如max706、max791等[1];还有许多单片机本身集成了这种看门狗,如pic16c57、mc68hc705等,
有一个错误观点:加了看门狗,单片机就不会死机。实际上,看门狗有时间会完全失效。当程序进入某个死循环,而这个死循环中又包含feeddog语句,这时dogtimer始终不会溢出,单片机始终得不到复位信号,程序也就始终跳不出这个死循环。针对这一弊端,笔者设计了双对限看门狗和定时复位看门狗。
双时限看门狗有两个定时器;一个为短定时器,一个为长定时器。短定时器定时为t1,长定时器定时为t2,0
这样,当程序进入某个死循环,如果这个死循环包含短定时器feeddog语句而不包含长定时器feeddog语句,那么长定时顺终将溢出,使单片机复位。巧妙安排长定时器feeddog语句的位置,可保证出现死机的概率根低。在水轮发电机组微机控制装置中的对比应用证明了这一点[3]。
目前几乎所有的看门狗都是依赖于cpu(依赖于cpu feeddog)。这可以比作:一个保险设备能否起到保险作用还依赖于被它保护的对象的行为。显然,依赖于cpu的看门狗是不能保证单片机在分之百不死机的。
在绝对不允许死机的装置中,笔者设计了一种完全不依赖于cpu的看门狗——定时复位看门狗。定时复位看门狗的主体也是一个定时器,到预定时间就发出溢出脉冲,此溢出脉冲使单片机强行复位。定时复位看门狗不需要cpu feeddog。
简言之,定时复位看门狗就是定时地让单片机强行复位。这样,即使装置死机,其最大死机时间也不会大于定时器定时时间。显然,只要硬件完好,这种看门狗百分之百地保证了单片机不会长时间死机。在智能电表(包括ic卡电能表、复费率电能表、多功能电能表[4])中采用了定时复位看门狗,每1秒让cpu强行复位,迄今数十万电表运行了近五年,无一例死机报告。

增收不增利,锂盐企业集体走出了“躺着赚钱”的时代
酒店人脸智能锁新应用,智能酒店触手可及
中芯国际距离国产7nm芯片更近一步
微雪电子SL811 USB Board接口介绍
“威马逊”的风向为什么基本没发生变化?
单片机/ARM死机的常见原因及解决方案
巨头纷纷布局存算一体,各种存储介质的优势分析
PDP电视机的工作原理、特点及优缺点
深入了解目标检测深度学习算法的技术细节
三星Galaxy S21系列亦有可能会支持自适应刷新率
“萤火通信息化”劳务人员实名系统介绍
区块链如何保护loT设备免受网络攻击
高压大功率变换器拓扑结构的演化及分析和比较
比亚迪首次与一家全球主要汽车制造商达成电池供应协议
作为ESD保护器件,TVS和压敏电阻有什么不同?该如何选择?
电力监理智能监管系统的功能实现和应用设计
疾速存储!大华T70移动固态硬盘勇登中国科技风云榜榜单
可穿戴设备“安全气囊”可防止摔伤
怎样在Arduino上永久存储数据
加特兰发布全新毫米波雷达芯片产品——Alps-Pro与Andes