键盘中断

时间:2010-07-16 10:03:33

标签: driver irq keyboardinterrupt

我正在研究低级设备驱动程序的东西。我在中断和IRQ之间感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是0x31,但我在微处理器上的书说它是0x09。在打开“设备管理器 - >键盘 - >资源”时,它显示IRQ为1.有人可以澄清这个吗?

谢谢, Sanjeev

2 个答案:

答案 0 :(得分:2)

就是这样。在您的计算机中,您有一个称为(A)PIC的单元。本机从一些外围设备(如PS2键盘)接收输入,并在CPU上引发中断。在现代系统中,有两个APIC。一个称为主要,另一个称为从属,每个持有8个IRQ线。按键盘上的键时,APIC在第1行(IRQ 1)上获得一个信号,然后在CPU上发生中断。

可以对APIC进行编程,即使它收到第1行的信号,也不会在CPU上产生中断9(即使你不编程也很奇怪,这实际上是默认的),因为这会与CPU内部中断,所以你通常编程它去其他地方。在你的情况下,似乎它将它转换为中断0x31,听起来它可能是正确的(它添加了IRQ + 0x30)。

我强烈不相信它被映射到中断9,因为这会与处理器的双故障异常中断冲突,本书可能只是提到了默认设置。

答案 1 :(得分:0)

简单的答案是IRQ(Interrupt ReQuest)是一个硬件输入,由系统映射到中断。在键盘的情况下,IRQ1映射到中断9。

  

幸福的答案是,在这种情况下中断31h显然是一个错误或错字。

Interrupt request