伪造中断(Spurious IRQs)IRQ7、IRQ15 的处理
来源:互联网 发布:windows网络文件系统 编辑:程序博客网 时间:2024/06/05 00:42
当一个IRQ发生的时候,PIC芯片将通知CPU有一个中断发生了,CPU对其进行确认并等待PIC芯片发送这个中断的中断号。如果一个中断在PIC通知CPU后和PIC发送中断号给CPU知前的这段时间内消失了,那么CPU将一直等待PIC,但这时PIC没有一个合法的中断号来发生给CPU。系统将发生死锁。
为了避免这种情况,PIC芯片将发送一个伪造的中断号给CPU,以免死锁的发生。这就是伪造中断(Spurious IRQs)。通常,伪造中断号是对应PIC芯片中优先级最低的中断号,即 主PIC的IRQ7,从PIC的IRQ15。
有很多原因会导致这种情况,常见的是在不恰当的时候发生了EOI指令,或者是INTR线路上有噪声。
处理伪造中断的方法是,当IRQ7发生时,先检测主PIC的ISR寄存器,看是否有真实中断发生,如果有则当普通中断处理,如果没有,则是一个伪造中断,可以直接忽略并且不要发送EOI指令。IRQ15和IRQ7的处理方法类似,不同点在于需要同时对主PIC和从PIC进行处理。
CosOS中暂时没有用到IRQ7和IRQ15,所以不进行真伪判断,直接忽略,代码如下。
关于CosOS更多资料请关注 http://bbs.ecjtu.org/forum-141-1.html
- 伪造中断(Spurious IRQs)IRQ7、IRQ15 的处理
- irqs.h mini2440的中断号预定义文件IRQ(0)
- pthread_cond_wait的spurious wakeup问题
- pthread_cond_wait的spurious wakeup问题
- pthread_cond_wait的spurious wakeup问题
- 【我所认知的BIOS】->深入理解IRQ7
- 中断处理(串口中断)
- 中断子系统(6)中断嵌套的处理
- 中断的认识(转载)linux中断处理原理分析
- 中断处理的tasklet(小任务)
- 中断处理的tasklet
- 中断的处理过程
- 2440的中断处理
- 中断的处理过程
- 中断下半部的处理
- 网络设备的中断处理
- dispc的中断处理
- 中断下半部的处理
- OpenCV背景去除的几种方法
- android避免bitmap内存限制
- ubuntu常见问题解决
- tomcat下 共享session
- oracle的权限和角色
- 伪造中断(Spurious IRQs)IRQ7、IRQ15 的处理
- 关于Signal tap II 调试--很重要
- 检查溢出
- 显示转换(强制转换),访问子类中的值i
- Qt 线程基础(QThread、QtConcurrent等)
- 修改窗体中所有Button属性
- 欺骗编译器取得ISurface对象的方法
- 总统府
- 普通应用使用Surface的方法