我正在研究低级设备驱动程序的东西。我对中断和IRQ感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?
谢谢,桑吉夫
我正在研究低级设备驱动程序的东西。我对中断和IRQ感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?
谢谢,桑吉夫
就像这样。在您的计算机中,您有一个称为 (A)PIC 的单元。该单元从您的一些外围设备(如 PS2 键盘)获取输入,并在 CPU 上引发中断。在现代系统中有两个 APIC。一个称为主,另一个称为从,每个都包含 8 条 IRQ 线。当您按下键盘上的某个键时,APIC 在第 1 行 (IRQ 1) 上收到一个信号,然后在 CPU 上产生一个中断。
APIC 可以进行编程,因此即使它在第 1 行收到信号,它也不会在 CPU 上引发中断 9(尽管奇怪的是,如果您不对其进行编程,这实际上是默认设置),因为这会与内部的一些 CPU 冲突中断,因此您通常将其编程到其他地方。在您的情况下,它似乎将其转换为中断 0x31,这听起来可能是正确的(它添加了 IRQ + 0x30)。
我强烈不相信它被映射到中断 9,因为这会与处理器的双重故障异常中断冲突,这本书可能只是提到了默认设置。