【问题标题】:Keyboard interrupts键盘中断
【发布时间】:2012-06-26 23:07:31
【问题描述】:

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

谢谢, 桑吉夫

【问题讨论】:

    标签: driver irq keyboardinterrupt


    【解决方案1】:

    是这样的。在您的计算机中,您有一个称为 (A)PIC 的单元。该单元从您的一些外围设备(如 PS2 键盘)获取输入,并在 CPU 上引发中断。在现代系统中有两个 APIC。一个被称为主,另一个被称为从,每个都有 8 条 IRQ 线。当您按下键盘上的某个键时,APIC 会在第 1 行 (IRQ 1) 上获得一个信号,这会导致 CPU 上发生中断。

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

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

    【讨论】:

      【解决方案2】:

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

      令人高兴的答案是,在这种情况下,中断 31h 显然是一个错误或拼写错误。

      Interrupt request

      【讨论】:

        猜你喜欢
        • 2021-04-26
        • 2020-11-22
        • 2015-08-22
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        • 2010-11-24
        • 2013-11-02
        • 2013-04-30
        相关资源
        最近更新 更多