首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教各位大侠:诡异的复位问题

请教各位大侠:诡异的复位问题

请教各位:


我在用MC9S08QG4时,遇到一个诡异的复位问题:同一个单片机在烧入同一个程序的情况下:用SRS寄存器观察到"Reset caused by an illegal address",重新上电后几个小时又出现"Reset caused by an illegal opcode".


检查程序没发现什么问题.


请各位指点一下,多谢了!

有志青年!
你的程序好像跑飞了。建议你可以从创建一个最简单的无限循环程序开始,在你的板子上跑,看看类似的情形是否还会出现。还可以到这里看一下参考文档《防止由于代码跑飞而导致MCU 应用故障的技术》:

http://www.freescale.com.cn/products/8BitMCU/Chinese_Information.asp
海纳百川  有容乃大
老大你说的没错,我也怀疑程序有问题,用简单的程序肯定没有问题。这个程序是有些复杂,程序空间和RAM空间都稍显紧张了。
问题不是很容易出现,至少要几个小时多则几天。两次次观察我都是下班前烧好一个测试程序,第二天早晨发现重启。现在还没确定问题出在哪里,只能一项一项排查了,今晚检测堆栈。
堆栈空间是默认分配的0x30,初始化后,栈顶是0xEC。今晚下班前改变堆栈空间大小为0x3F试试,看有没有效果。
有志青年!
郁闷了,好几天了问题还没有找到。

每次从运行到异常复位的时间的比较久,最少都要几个小时。有没有什么办法能够知道系统在异常复位前是什么状态呢?
现在真的怀疑是不是硬件问题了。就算是硬件问题没有时间去证明了。烧个简单的程序进去,运行一两天没出问题也不能说明一直不出问题。。。。。哎,,脑袋一团糟了。。。。。
有志青年!
应该堆栈不够了,调用子程序过深造成的。我们有客户使用时也出现过一样的问题
Freescale代理--北高智 服务感动客户
楼上说得有一定道理。尤其临时变量多的话很耗堆栈,这点我已经注意到了。
我有一个子程序定义了15个变量,这块程序也是最让我心里没底的。这几天太忙没有时间来追查原因了。待几天,无论是什么原因,找到后我一定会在这里给大家一个交代。。。
有志青年!
返回列表