程序总是出现取指令中止

[复制链接]
3272|7
 楼主| feifan570 发表于 2007-9-21 10:32 | 显示全部楼层 |阅读模式
没有用操作系统,使用的是ADS1.2,在单步执行时不会有问题,但是一全速运行就出现取指令中止。我查看汇编发现它使用了R14寄存器作为临时变量,而当发生取指令中止时,我发现R14的值就是当时存临时变量的值。是程序原因还是编译器原因造成取指令中止的呢?
computer00 发表于 2007-9-21 10:43 | 显示全部楼层

是不是有地方缺少nop了啊?特权模式下访问用户模式寄存器

要nop一下。
 楼主| feifan570 发表于 2007-9-21 10:56 | 显示全部楼层

不明白为什么要加nop

由于没有使用操作系统,程序在sys模式下运行,特权模式下访问用户模式寄存器后会导致取指令中止吗?我使用的是C语言,我怎么知道在访问用户模式寄存器?
wangkj 发表于 2007-9-21 10:59 | 显示全部楼层

也可能ads初始化了某些寄存器,而运行没有

  
hotpover 发表于 2007-9-21 17:48 | 显示全部楼层

怎样切换模式?

  
阿南 发表于 2007-9-21 20:03 | 显示全部楼层

我觉得:要先找到取指令中止是哪里产生的,你有仿真器是可以

如果单步运行可以,而全速运行产生,有这么几种可能:<br />1.您单步运行的指令不是产生指令中止异常的地方<br />2.SDRAM或其它硬件不稳定,建议降低运行频率,禁止MMU试试<br />3.中断产生引起,建议跟踪中断里的代码看看<br />还有其它的,暂时想不起来了<br /><br />关键是找到产生异常的代码
 楼主| feifan570 发表于 2007-9-25 17:27 | 显示全部楼层

问题居然来自仿真器

不用仿真器,把程序烧进去执行是正常的,没有出现中止。很奇怪!
阿南 发表于 2007-9-25 18:37 | 显示全部楼层

仿真器不稳定,这可能也和你的硬件也有些关系,JTAG线不要太

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

195

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部