【发布时间】:2012-06-26 23:07:31
【问题描述】:
我正在研究低级设备驱动程序的东西。我对中断和 IRQ 感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?
谢谢, 桑吉夫
【问题讨论】:
标签: driver irq keyboardinterrupt
我正在研究低级设备驱动程序的东西。我对中断和 IRQ 感到困惑。挂钩键盘的示例驱动程序代码表明键盘中断是 0x31,但我关于微处理器的书说它是 0x09。在打开“设备管理器->键盘->资源”时,它显示 IRQ 为 1。有人可以澄清一下吗?
谢谢, 桑吉夫
【问题讨论】:
标签: driver irq keyboardinterrupt
是这样的。在您的计算机中,您有一个称为 (A)PIC 的单元。该单元从您的一些外围设备(如 PS2 键盘)获取输入,并在 CPU 上引发中断。在现代系统中有两个 APIC。一个被称为主,另一个被称为从,每个都有 8 条 IRQ 线。当您按下键盘上的某个键时,APIC 会在第 1 行 (IRQ 1) 上获得一个信号,这会导致 CPU 上发生中断。
可以对 APIC 进行编程,因此即使它在第 1 行收到信号,它也不会在 CPU 上引发中断 9(尽管奇怪的是,如果您不对其进行编程,这实际上是默认设置),因为这会与某些CPU的内部中断,因此您通常将其编程到其他地方。在您的情况下,它似乎将其转换为中断 0x31,这听起来可能是正确的(它添加了 IRQ + 0x30)。
我强烈不相信它被映射到中断 9,因为这会与处理器的双重故障异常中断冲突,书中可能只是提到了默认设置。
【讨论】:
简单的答案是 IRQ(中断请求)是由系统映射到中断的硬件输入。在键盘的情况下,IRQ1被映射到中断9。
令人高兴的答案是,在这种情况下,中断 31h 显然是一个错误或拼写错误。
【讨论】: