阅读:1976回复:7
问一个中断的问题
我们知道X86有15个中断,而WINDOWS有32个中断级,其中3到26为设备中断,CHRIS CANT的《WINDOWS WDM 设备驱动程序开发指南》17章284页说IRQ7的中断级为20,我想知道它们的对应关系,还有X86只有一个INTR引脚,WINDOWS是如何判断中断号的,NMI引脚是否就是对应27到31中断优先级。驱动程序如何转换一个中断号为中断向量。请高手赐教。
|
|
沙发#
发布于:2004-07-24 13:31
顶! :D
|
|
板凳#
发布于:2004-07-25 10:24
good!
|
|
地板#
发布于:2004-08-06 08:27
中断号和中断优先级是两个不同概念,中断号的确定参见芯片8259
|
|
地下室#
发布于:2004-08-07 15:14
一般驱动书上都有介绍,中断号和中断请求的定级不是一回事 :)
|
|
5楼#
发布于:2004-08-09 09:01
INSDIE WIN2000里有些介绍。
|
|
|
6楼#
发布于:2004-08-10 14:57
X86系统有15个中断,通过两片8259A可编程中断控制器提供,每个8个中断,其中有一个中断9用于级联(应该没记错吧)。window的32级优先级(中断)完全是一个内核优先级的概念,与8259A的引脚中断没有对应关系.windows的内核中断处理程序先捕获所有的中断,并通过读8259的中断寄存器读取中断号,(通过X86的中断响应机制,让8259把中断向量送到数据总线上,在根据中断向量,转到对应的中断处理程序中-其实应该是同一个程序)。由内核的中断处理程序来轮询设备程序,问其是否要处理该中断,但驱动程序应通过内核函数向内核注册一个中断处理程序(不同于DOS)。如果驱动程序要把一个中断号转为中断向量,可通过读8259的相应寄存器实现,但最好不要写8259的寄存器。
嘿嘿,应这些,请高手指正! [编辑 - 8/10/04 by luoyiming] |
|
7楼#
发布于:2004-08-18 21:10
INSDIE WIN2000里有些介绍。 |
|