打印
[ZLG-ARM]

求助:程序动不动就跳到DataAbortAddr

[复制链接]
1898|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skyhigh|  楼主 | 2009-1-13 00:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我 用的lpc2138,使用了部分片内flash作为数据区。启用了UART0 UART1 TIMER0 EINT3中断,看门狗复位
现在发现,基本上隔一段时间,就会跳到以下程序段,然后就死机了,看门狗不起作用。
时间上没什么规律

;interrupt vectors
;中断向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr
整体使用资源
“Program Size: Code=34776 RO-data=11796 RW-data=1288 ZI-data=5016 ” 
请帮我分析一下,看会是什么原因呢,谢谢!

相关帖子

沙发
computer00| | 2009-1-13 00:53 | 只看该作者

可能是指针越界了...

根据LR寄存器的值可以查到导致这个错误的地址,然后分析附近的代码,看是对哪个指针(或者数组)操作时引起的。

使用特权

评论回复
板凳
haibao| | 2009-1-14 18:46 | 只看该作者

用什么开发环境?

一种可能是你程序写的有问题,指针越界。
另外一种可能
Keil下我曾经遇到过类似的问题,后来发现是Keil下的模板没有解决对VICDefVectAddr进行处理,只要一开中断,过会自己就死机了。
中断初始化时加上    VICDefVectAddr = (INT32U)IRQ_VICDef;
另外在IRQ_VICDef函数中加上一句VICVectAddr = 0x00;就没有再出现类似问题。

void   IRQ_VICDef(void) __irq
{
     VICVectAddr = 0x00;    
}

使用特权

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

本版积分规则

5

主题

29

帖子

1

粉丝