打印

伪中断

[复制链接]
1968|10
手机看帖
扫描二维码
随时随地手机跟帖
沙发
huzixian| | 2010-9-26 12:20 | 只看该作者
貌似是IRQ被激活了,但是当读取IVR时又没有中断源,因此就进入伪中断了,不过这个是个arm7的bug,你可以上arm官网去找相关的方案

使用特权

评论回复
板凳
思行合一| | 2010-9-26 12:27 | 只看该作者
地板
思行合一| | 2010-9-26 12:28 | 只看该作者
本帖最后由 思行合一 于 2010-9-26 12:29 编辑

LZ我帮你找到了最正确的答案

伪中断可能在如下情况下发生,即
1、对于任一电平敏感的中断,在arm7tdmi检测到终端有效的同时,AIC撤销了中断信号;
2、在软件通过操作AIC_IDCR禁止某一中断的同时,此中断施加了(由于ARM采用了流水线结构,这种情况是有可能发生的)。
一旦AIC进入伪中断,只要伪中断未被确认,AIC就不可能再向ARM7TDMI施加NIRQ和NFIQ。因此,用户必须在返回被中断的软件之前,通过在伪中断例程里写AIC_EOICR的方式确认伪中断。

不过如何写伪中断处理函数就你自己办吧,不能太懒了

使用特权

评论回复
5
思行合一| | 2010-9-29 12:23 | 只看该作者
总之要尽量避免伪中断,但是伪中断处理函数也还是要写的

使用特权

评论回复
6
huzixian| | 2010-10-4 13:18 | 只看该作者
LZ你的伪中断解决了没有?如何解决?

使用特权

评论回复
7
yoyowodeai| | 2010-10-8 12:30 | 只看该作者
本帖最后由 yoyowodeai 于 2010-10-8 12:31 编辑

LZ,在伪中断处理函数中写入结束中断,就应该可以,不同的芯片可能不同,可以参考一下网上人们的例程,应该有的

使用特权

评论回复
8
3B1105|  楼主 | 2010-10-8 12:47 | 只看该作者
问题已解决,还真是如LS所说,谢谢大家啊!

使用特权

评论回复
9
huzixian| | 2010-10-31 15:24 | 只看该作者
伪中断会让程序死掉,想要重新唤醒就得写结束指令

使用特权

评论回复
10
yoyowodeai| | 2010-10-31 15:36 | 只看该作者
arm7以上的arm核还存在伪中断的问题吗?

使用特权

评论回复
11
6019赵文| | 2010-10-31 15:40 | 只看该作者
arm9及以上都没有这个问题了!

使用特权

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

本版积分规则

315

主题

1645

帖子

4

粉丝