打印

分享DSP程序死机(跑飞)的一些情况-硬件原因

[复制链接]
1564|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Peonys|  楼主 | 2018-12-15 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
分享DSP程序死机(跑飞)的一些情况-硬件原因




DSP和FPGA不一样,在DSP上运行的程序可能会会出现死机,也就是跑飞的情况,查死机基本是每个DSP或嵌入式工程师debug时都会经历过的。DSP死机可能是硬件造成的也可能是软件造成。

先说一下硬件造成的可能原因,遇到过的就一下4类,

1、复位电路不稳定;2.电源不稳定;3、时钟不稳;4、总线不稳定。下面分别讲解一下。


1、复位电路不稳定


很好理解,就是运行中突然有复位信号过来,这时DSP复位自然就DSP程序跑飞了或者程序重新跑一遍的情况。如果是在线硬件仿真基本就是跑飞或死机(程序不跑了)。


出现复位不稳定的情况我遇到了两种情况:


第一种情况是复位电路设计时,复位的时间不够,即低电平保持的时间不够,这样上电加载时,有时能够正常加载,有时不行,有时加载运行一段时间就死机了。


第二种情况是复位电路加有watchdog电路,watchdog不光监测喂狗(WDI)信号,而且还监测DSP工作电压值,如果小于某个电压范围就产生复位信号。一般在常温的时候,不会出现工作电压值的变化,而当DSP工作环境的温度发生变化时,就可能出现频繁复位的情况。


2、电源不稳定


电源不稳定主要是内核电源不稳定的情况,在一块电路板上可能同时有DSP、FPGA等芯片,可能内核电压相同,而采用同一路电源供电,而在DSP芯片有大负荷工作量时,造成工作电路继续增大, 从而拉低内核电压,造成瞬时电压不足,从而可能造成DSP程序跑飞,而这种情况对于FPGA基本没有影响。

复位电路不正常的第二种情况也可以认为是电源不稳定的情况。

3、时钟不稳

时钟不稳造成DSP、ARM死机的情况遇到比较多,下面举几个例子。

时钟信号幅度较小能量较弱,在常温工作时正常,长时间工作也没有问题,而在低温时(-40度),这时时钟信号可能会已经弱到不能持续的给DSP工作,从而DSP死机,被watchdog复位的情况。但是FPGA对于时钟基本不受影响,时钟有了继续工作。这种情况的解决办法是增加时钟的幅度,增加比较器将时钟幅度变大等办法解决。

DSP通过FPGA的锁相环(PLL)生成时钟(这样频率比较灵活)工作,但FPGA输出时钟的引脚不是专用时钟引脚时,可能在某些情况下会造成时钟不稳,从而造成DSP死机或跑飞。解决办法:更换FPGA上的其他时钟管脚输出时钟。

相关帖子

沙发
10299823| | 2018-12-25 16:31 | 只看该作者
是否打开了某个中断,但是没有响应和清除中端标志

使用特权

评论回复
板凳
jimmhu| | 2018-12-25 16:31 | 只看该作者
防止编译器优化中断变量,要在这些变量定义时前加 volatile

使用特权

评论回复
地板
lihuami| | 2018-12-25 16:32 | 只看该作者
对于容量小的单片机,尽量减少函数调用层级,减少局部变量

使用特权

评论回复
5
xiaoyaozt| | 2018-12-25 16:33 | 只看该作者
开启了最小周期的看门狗,导致软件不断复位

使用特权

评论回复
6
uptown| | 2018-12-25 16:33 | 只看该作者
单片机在运行中会受到各种电磁干扰

使用特权

评论回复
7
cehuafan| | 2018-12-25 16:33 | 只看该作者
加上看门狗。

使用特权

评论回复
8
usysm| | 2018-12-25 16:33 | 只看该作者
程序本身设计错误。

使用特权

评论回复
9
typeof| | 2018-12-25 16:33 | 只看该作者
干扰信号过大。

使用特权

评论回复
10
yujielun| | 2018-12-25 16:34 | 只看该作者
电压不稳或者外部干扰等等

使用特权

评论回复
11
htmlme| | 2018-12-25 16:34 | 只看该作者
中断喂狗很容易导致跑飞时不复位

使用特权

评论回复
12
usysm| | 2018-12-25 16:34 | 只看该作者
硬件设计问题。

使用特权

评论回复
13
10299823| | 2018-12-25 16:34 | 只看该作者
程序一直进入中断,造成死机假象。

使用特权

评论回复
14
cehuafan| | 2018-12-25 16:34 | 只看该作者
把所有IO口上的的引线尽量缩短

使用特权

评论回复
15
jimmhu| | 2018-12-25 16:35 | 只看该作者
如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机

使用特权

评论回复
16
uptown| | 2018-12-25 16:35 | 只看该作者
使程序执行出错。

使用特权

评论回复
17
lihuami| | 2018-12-25 16:35 | 只看该作者
减少压栈的时候所需的空间。

使用特权

评论回复
18
xiaoyaozt| | 2018-12-25 16:35 | 只看该作者
这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗

使用特权

评论回复
19
htmlme| | 2018-12-25 16:35 | 只看该作者
单片机使用隔离电源供电

使用特权

评论回复
20
yujielun| | 2018-12-25 16:35 | 只看该作者
程序不可靠,某子程序不对

使用特权

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

本版积分规则

640

主题

901

帖子

5

粉丝