键盘中断

3
我正在学习低级设备驱动程序相关的知识。我对中断和IRQ感到困惑。一个示例驱动代码钩取键盘时表明键盘中断是0x31,但我的微处理器书上说它是0x09。在打开“设备管理器->键盘->资源”后,它显示IRQ为1。有人能解释一下吗?
谢谢, Sanjeev
2个回答

2
就像这样。在您的计算机中,有一个称为(I)PIC的单元。该单元从某些外围设备(如PS2键盘)接收输入,并在CPU上引发中断。在现代系统中,有两个APICs。一个被称为主要的,另一个被称为从属的,每个拥有8个IRQ线路。当您按下键盘上的键时,APIC会在第1条线路(IRO 1)上收到信号,然后在CPU上引发中断。
APIC可以编程,即使它在第1条线路(IRO 1)上接收到信号,也不会在CPU上引发9号中断(尽管奇怪的是,如果不编程,这实际上是默认值),因为这将与一些CPU内部中断冲突,所以通常将其编程到其他地方。在您的情况下,似乎将其转换为0x31中断,听起来可能是正确的(它添加了IRQ + 0x30)。
我非常认为它没有映射到中断9,因为这将与处理器的Double Fault异常中断冲突,书上可能只提到了默认设置。

0
简单来说,IRQ(中断请求)是一种硬件输入,系统将其映射到一个中断。在键盘的情况下,IRQ1被映射到中断9。

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

中断请求


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接