打印

调试时,死机大家帮忙看看

[复制链接]
2005|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
渤海三叠浪|  楼主 | 2012-9-16 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调试单片机(运行的时候,没用仿真器), 由于处于调试阶段,所以没有加看门狗复位语句。单片机共有6个灯。正常运行时候,只有两个灯在闪烁。
然后我不断的插拔串口,居然死机了。现象就是所有的灯6个灯都亮了。

我在程序里面设定一但跑飞,就是一旦3秒内没有执行程序里面的,就认为死机,就把死机次数记到不丢失RAM里面。

看门狗方法就是用的流行的所谓互斥的方法,就是必须既要运行定时器,又要运行while里面的,否则就强行进入while(1)。

邪了门了!

很奇怪啊! 我没有加看门狗复位语句啊。但是跑飞了,也没道理所有灯都亮啊,给人感觉是复位了

相关帖子

沙发
阿南| | 2012-9-16 12:44 | 只看该作者
跑飞后什么情况都有可能出现

使用特权

评论回复
板凳
渤海三叠浪|  楼主 | 2012-9-16 18:57 | 只看该作者
2# 阿南
大概是大前天,跑飞两次都是在插入串口的时候啊。都是六个灯全亮。
感觉不像是普通跑飞。因为跑飞我都记录了啊。比如举个例子 在while里面直接弄个while(1),那我这种情况都可以记录下来。

现在只能怀疑是失电复位。

但我在实验室里面,没啥干扰 供电挺稳啊。

使用特权

评论回复
地板
ningling_21| | 2012-9-16 20:55 | 只看该作者
电源没问题,那就是软件的问题...

使用特权

评论回复
5
feizai| | 2012-9-16 21:00 | 只看该作者
用示波器测试一下复位电路和供电质量吧!这个应该很好解决

使用特权

评论回复
6
NE5532| | 2012-9-16 21:32 | 只看该作者
精华区《程序调试黑宝书》

使用特权

评论回复
7
misra| | 2012-9-17 20:24 | 只看该作者
3# 渤海三叠浪
失电复位应该不可能的。失电复位和上电复位效果是差不多的。我还是比较同意2楼说的“跑飞后什么情况都可能出现”。
不知道楼主的情况可以很容易再次出现么?

使用特权

评论回复
8
渤海三叠浪|  楼主 | 2012-9-17 21:14 | 只看该作者
电源没问题,那就是软件的问题...
ningling_21 发表于 2012-9-16 20:55

呵呵,出了这个问题 搞得我都没有信心了啊。搞了这么几年,还是第一次遇到跑死的情况。

现在还是宁愿相信是硬件问题。

下了个**,看来我水平还是嫩的很哦

防止由于代码跑飞而导致MCU_应用故障的技术.pdf

125.72 KB

使用特权

评论回复
9
bkvalve| | 2012-9-17 21:18 | 只看该作者
给人感觉是复位了

使用特权

评论回复
10
bkvalve| | 2012-9-17 21:18 | 只看该作者
给人感觉是复位了

使用特权

评论回复
11
渤海三叠浪|  楼主 | 2012-9-17 21:21 | 只看该作者
上面这个 文档是飞思卡尔的

我们还有产品用到这个片子   主要跑VXworks的。不过 ,也有见过老外跑linux的。这个世界好疯狂。真有人敢用linux,并且还很怪 在安全场合还用的很好。

这个文档最后总结:
1.  启用LVI。在5伏应用中,目前的 LVI规范能防止3.9伏电压以下的代码跑飞,
并且可以用于确保电源下降时的复位。在 908KX8 或 908GP32等电压可以低至
2.7伏的器件中,LVI能在 5伏应用提供更好的保护。   
2.  用合理的指令(如 SWI)来填充应用代码的未使用字节(ROM 或闪存)。SWI
矢量(及所有其它未使用矢量)应该编程指向相应的错误处理子程序。
3.  启用COP,并以合适的频率清空计数器,较短的超时周期可以提供更好的保护。  
4.  在基于闪存的应用中,充分启用闪存块保护功能。

第一条做到了 ,就是低于某电压  失电复位。
第二条 目前未使用的 还是就是擦除  就是用 0xFF填充。这条似乎还应该改进。
第三条  超时时间设定为3秒。这个时间感觉似乎不够短
第四条  没有给与闪存块保护,也不想保护  坏就坏了  这个无所谓的

使用特权

评论回复
12
渤海三叠浪|  楼主 | 2012-12-15 21:09 | 只看该作者
摸摸 晶振两腿  不加狗也死机 哈哈  

使用特权

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

本版积分规则

62

主题

637

帖子

1

粉丝