嵌入式Linux下ARM9的中断嵌套问题,求助!
比如使用S3C2440处理器的嵌入式ARM系统,假设存在两个外部中断A和B,定义中断优先级A大于B,工作模式处于IRQ模式下,如果B中断信号先来,系统先处理B中断对应的中断服务程序,在执行过程中中断A信号产生,是否A中断的中断服务程序要等待中断B的中断服务程序完毕,才响应执行中断A,这样就不存在中断嵌套的问题了是吗?(问题一)。但是如果中断A的工作模式为FIQ,是可以打断中断B的中断服务程序,但是这样应该也不属于中断嵌套的范围吧?(问题二)。某些资料说SVC模式下存在中断嵌套的机制,就好象中断B的服务程序运行中被中断A信号打断,优先执行中断A的服务程序后再执行中断B的服务程序,请问如何实现该嵌套?这种机制是否在该模式下存在?(问题三)
求解,十分感谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
可以看一下微机原理,X86架构配8259中断控制器对,中断进行的处理!有参考价值,你上面密密麻麻的文字,谁都没有心情仔细看的!
ARM 下七种exception, 各种exception优先级不同,级别高的可以打断级别低的,如reset可以打断FIQ, FIQ可以打断IRQ, 对于同一种exception,如IQR, 是不可以被另一个IRQ打断的,因为在执行ISR时,该exception(IRQ)已经被关闭了,不可能再响应,这也是为什么我们的exception处理分为了ISR和BH。
回复 3# Trigger_Huang
在执行ISR时,该exception(IRQ)已经被关闭了
这个是不是应该在软件编程是设置相应的状态位啊,在X86架构编程是这样的,ARM也是吗? 没完整学过ARM硬件,请教一下?
回复 4# 2007robot
ARM 中,当exception产生后, CPU硬件会自动关掉该种类 exception, 不是软件设置的, 等ISR执行完成后,由软件再打开。。。
谢谢!请问trigger_huang,那是不是在ARM中就不存在中断嵌套的机制了吧?
中断来了之后,CPU只是屏蔽了对应中断的中断信号线,其他中断信号线是没有被屏蔽的,中断处理完后应该使能对应的中断信号线
同一类型的硬件中断是可以通过软件设置它们之间的优先级的。
ARM ARCH下, 七种exception或interrupt:的优先级是固定的,不存在还可以用软件去设置ARM的优先级的(X86应该可以),所以同一类型(优先级)的中断是不能被同一类型的中断打断的,不存在同一类型的嵌套的。 但是不同种类(优先级)是可以的。比如FIQ可以打断IRQ中断,那么此时就可以说是中断嵌套。
不知道我说清楚了没有……