返回信息流1.当产生一个外部中断后,当此中断还在仲裁阶段,又发生第二个这样的中断,那第二个中断就被忽略掉了?
2.当进入的一个外部中断的ISR中,该如何设置中断寄存器,防止突然又进入别的中断ISR中?比如已经进入一个extint0的ISR了,此时又发生一个extint0中断,那就中断嵌套了?
3.进入中断isr中,应该如何操作一系列中断寄存器?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #5237同步于 2009/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
关于arm中断处理?
bewithyou
2009/6/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
对于中断的处理,虽然ARM的没做过,不过应该有些通用的做法可以参考吧(例如可以参考Linux和uboot中的实现方法)
关于第2个问题,前段时间看linux内核源码时好像看到:通过系统调用disable_irq,可以将某个中断对应的中断处理函数换掉(其实就是变更结构体上的一个函数指针),好像还对中断的状态进行了标记,大概是告知内核:diable_irq之后,再发生这个中断时请不要理会。
还有,你有跑OS吗?要是Linux的话,直接LDD搞嘛~
【 在 hobby 的大作中提到: 】
: 补充一句,还有一个比较简单的方法,但是不知道这样做合不合适
: 可以直接操作CPU内部中断控制寄存器,禁用掉相应中断(大概叫UIC寄存器或者什么的)
uic好像是ppc里面的通用中断?
如果在“禁用掉相应中断”之前,刚好发生了同一个中断,怎么办?
【 在 bewithyou 的大作中提到: 】
: uic好像是ppc里面的通用中断?
: 如果在“禁用掉相应中断”之前,刚好发生了同一个中断,怎么办?
嗯,PPC里的确是叫UIC(……因为我做过的就ppc……),不过arm里面也应该有这样的寄存器吧,负责管理各个中断是否enable的。
一进中断处理函数,第一件事儿就是disable,中断处理函数返回前最后一件事情是再重新enable,这就OK了啊