打印

求助:ARM7 出现取指异常,和取数据异常.

[复制链接]
2391|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caiwenbin|  楼主 | 2007-12-3 21:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
来自 2楼
阿南| | 2007-12-3 22:10 | 只看该作者

re:

取指异常,和取数据异常:就是指ARM不认识这些数据,一种的这些数据本来就是是错的,另一种是如RAM或ROM等不能正常访问引起.
ZI:指初始化零的区域,通常是有一些没有初始化的变量,然后系统运行是就将这些初始化零

使用特权

评论回复
板凳
caiwenbin|  楼主 | 2007-12-3 22:20 | 只看该作者

谢谢楼上大哥!

使用特权

评论回复
地板
caiwenbin|  楼主 | 2007-12-3 22:45 | 只看该作者

啊南大哥,还不是很明白

一种的这些数据本来就是是错的:是不是取到边界线以外的区域,或未定义的区域的数据或指令?
我AD1.2编译了 RW data 600 + ZI 160k=160.6K是不是说需要RAM 区160.6K
我的RAM才16K,RAM区肯定是不够的,为什么可以运行,有时候运行时间长点才出现异常,有时候刚开始运行不久就异常定了下来.有时候是取指异常有时候是取数据异常.
另一种是如RAM或ROM等不能正常访问引起.我用的是ARM7TDMI 数据和指令在同一条32的线上,是主频快了还是主频慢了才出现这种情况的啊?
但是我把访问外部总线调快或调慢都不行.
我原来的程序运行很稳定,我只是加了一个小任务就出现这种情况了.而且我调试了很久,感觉不是加的任务干扰了原来的程序.我想应该是大哥你说的取到了第一种情况吧!加了一个小任务增加了RAM的用量,取到了界外的数据/指令.(我的代码放在外扩了2M RAM中,片内16K RAM当数据区)
还望大哥指点一下从那些方面去解决取指异常,和取数据异常!!!

使用特权

评论回复
5
阿南| | 2007-12-4 13:14 | 只看该作者

说白了,就是CPU不认识这个指令、数据或访问出错

RW data 600 + ZI 160k=160.6K,是指在程序中的变量占用了这么多存储空间,你可以增加或减少一字节变量重新编译来观察。
您可以将RW定位在外部RAM中试试

使用特权

评论回复
6
wangkj| | 2007-12-4 14:09 | 只看该作者

用仿真器跟踪一下就明白了

应该是你的程序跑飞了或者访问了未定义的区域。

使用特权

评论回复
7
caiwenbin|  楼主 | 2007-12-4 21:56 | 只看该作者

非常感谢LS两位大哥!

单不执行点到手都酸了,它还没出异常.
用了别人的U盘文件管理数据包,单步执行可能不能读写U盘吧!
我的2M片外RAM,256K用来放代码.数据区是 片内16K+片外1.75M应该够了.
我刚想到是不是任务堆栈定义少了.而导致一会取指异常一会取数据异常.
再次啊南大哥!我明天去把变量改少点看看!

使用特权

评论回复
8
caiwenbin|  楼主 | 2007-12-8 21:25 | 只看该作者

问题解决了,是任务堆栈设置小了

再次感谢各为大哥的热心帮助!

使用特权

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

本版积分规则

67

主题

509

帖子

0

粉丝