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

发布者:熙风细雨最新更新时间:2018-11-30 来源: eefocus关键字:单片机  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强行复位,迄今数十万电表运行了近五年,无一例死机报告。


关键字:单片机  ARM  死机 引用地址:单片机/ARM死机的常见原因及解决方案

上一篇:STM32之独立看门狗的那些事
下一篇:基于S3C6410的ARM11学习(五) 核心初始化之关闭看门狗

推荐阅读最新更新时间:2024-03-16 16:18

基于MODEM的单片机与PC机间的元程通信
    摘要: 公用电话网技术成熟、覆盖范围广,利用现有的化用电话网来实现单片机与PC机远程通信是一种非常有效的方法。本文详细介绍利用现有公共电话网实现8098单片机与远程PC机之间数据通信的硬件、软件设计和实现方法。     关键词: 单片机 PC机 通信 调制解调器 随着计算机技术、通信技术的发展和成熟,数据通信已经成为一种广泛应用的通信方式,它是利用通信系统将数字、字母及字符等以二进制形成在计算机之间进行传输、交换和处理。数据通信可以在两台及以上PC机之间、PC机与单片机之间以及单片机之间进行,通过通信通道如公用电话网、载波通道、光绺通道、微波通道、卫星通道将两机联结。目前,单片机以其高性能价格比、高可
[工业控制]
基于MCS51单片机的多路数据通信设计
1.引言 MCS51单片机标准构成只有一组全双工UART串行口,P3.0-RXD收、P3.1-TXD发,如果要完成多路串口收发,一般使用外部扩展芯片,例如:GM8123/25,完成一扩多路串口,但是,由于增加扩展芯片,造成硬件成本增加,PCB板面增大,抗干扰性下降等不良因素,因此能尽量使用现有串口,利用分时切换技术,完成串行口不同类型,不同端口的数据传送是优先选择。 2.硬件功能简述 本设计用于数据采集监控系统如图1所示。采用485串行口完成数据采集,和232串口输出打印功能,这样使得接口连线简单,可靠性高。 RS-485工作特征:发送端:逻辑“1″两线间的 电压 差为+2至6V表示;逻辑”0″以
[单片机]
基于MCS51<font color='red'>单片机</font>的多路数据通信设计
ARM+Linux下看门狗应用
笔者在设计ARM+Linux的产品中,使用了看门狗ADM706。这款IC的定时间隔为1.6s。由于使用ARM9的内核,操作系统为Linux。整个系统完全启动时间较长,超出了看门狗的喂狗时间门限。因此在CPU能完全启动开始喂狗前,看门狗又给出了复位信号,导致CPU重启。由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。我们无法通过更改看门狗的喂狗间隔时间来满足CPU的启动要求。 关键过程及根本原因分析 使用的看门狗电路如图1所示。RESET信号为看门狗输出的复位信号,WDI为CPU输出的喂狗信号。在1.6s的时间内,WDI信号有从高到低或者从低到高的变化,则看门狗内部的定时器清零,重新计数,无复位信
[单片机]
一文解析51单片机PWM双舵机控制
  PWM简介   脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。   脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。   什么是舵机   舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机是船舶上的一种大甲板机械。   本文主要介绍的是51单片机PWM双舵机控制,具体的跟随小
[单片机]
一文解析51<font color='red'>单片机</font>PWM双舵机控制
51单片机在没有硬件SPI的情况下 高速读方法
51单片机在没有硬件SPI的情况下 高速读方法 uchar spi_read(void) { //利用51串口的同步移位功能,以达了最高的读度2MHz CLK RI = 0; while(RI == 0); return SBUF; }
[单片机]
#51单片机#UART串口通信的初步认识
UART串口通信 UART,全称Universal Asynchronous Receiver/Transmitter,即通用异步收发器。 串口通信是单片机中最常用的一种技术,通常用于单片机和计算机之间以及单片机和单片机之间的通信。 UART的通信类型可分为两种,并行通信和串行通信。 并行通信:数据各个位同时传送,可实现以字节为单位来通信。缺点:通信线占用资源多,成本高。 串行通信:一次只传输一个字节的数据。 STC89C52有两个专门的UART通信引脚,P3.0(RXD)和P3.1(TXD),由它们组成的通信接口叫串行接口,简称串口。 下图体现了两个单片机相互收发信息的过程: 图中两单片机的GND互连
[单片机]
#51<font color='red'>单片机</font>#UART串口通信的初步认识
单片机晶振电路的作用
  晶振电路是用来控制程序运行的节奏的,高速就说明频率大,节奏快;低速,则反之。   单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。   晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。   在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡
[单片机]
<font color='red'>单片机</font>晶振电路的作用
增强型51单片机和传统51单片机对比分析
前面的内容,我们从传统的51单片机出发,从硬件的基础上,一步步衍生出了增强型51单片机所增强的地方。现在我们可以清楚地了解,增强型51单片机对比传统的51单片机,增强的地方在于存储器的扩展。而51单片机对于片内内存的寻址方式和片外内存的寻址方式有着很大的不同。因此,我们在使用C语言对增强型51单片机编程的时候,也需要按照寄存器位置的不同,采用不同的操作方式。 1寄存器位于内部的特殊功能寄存器区 我们之前介绍传统8051单片机的时候,曾经列出了传统8051单片机已经使用的21个特殊功能寄存器,因此扩展外设寄存器的一个办法就是利于剩余的特殊功能存储器空间。 由于51单片机的特殊功能寄存器寻址方式只能是直接寻址,不可间接寻址,因此在
[单片机]
增强型51<font color='red'>单片机</font>和传统51<font color='red'>单片机</font>对比分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved