2010-07-16 32 views
3

J'étudie des choses de pilote de périphérique de bas niveau. Je suis confus entre les interruptions et IRQ. Un exemple de code de pilote qui accroche le clavier suggère que l'interruption du clavier est 0x31 mais que mon livre sur le microprocesseur indique qu'il s'agit de 0x09. À l'ouverture 'Gestionnaire de périphériques-> Claviers-> Ressources', il montre IRQ est 1. Quelqu'un peut-il clarifier cela?Interruptions de clavier

Merci, Sanjeev

Répondre

0

La réponse est simple qu'une IRQ (REQUEST Interrompre) est une entrée matérielle qui est mis en correspondance par le système à une interruption. Dans le cas du IRQ1 du clavier est mappé pour interrompre 9.

La réponse est heureuse que 31h d'interruption dans ce contexte est évidemment une erreur ou faute de frappe.

Interrupt request

2

Il est comme ça. Dans votre ordinateur, vous avez une unité appelée le (A) PIC. Cette unité prend l'entrée de certains de vos périphériques, comme le clavier PS2, et déclenche une interruption sur le CPU. Dans un système moderne, il y a deux APIC. L'un s'appelle le primaire et l'autre est appelé l'esclave et chacun détient 8 lignes IRQ. Lorsque vous appuyez sur une touche du clavier, l'APIC reçoit un signal sur la ligne 1 (IRQ 1), ce qui provoque une interruption sur le CPU. L'APIC peut être programmé de sorte que même s'il reçoit un signal sur la ligne 1, il ne soulèvera pas l'interruption 9 sur le CPU (même si étrangement c'est le défaut si vous ne le programmez pas) car cela entrerait en conflit avec des interruptions internes des processeurs, donc vous programmez généralement pour aller ailleurs. Dans votre cas, il semble qu'il se traduit par l'interruption 0x31 qui semble être correcte (ajoute IRQ + 0x30).

Je ne crois vraiment pas qu'il est mappé à l'interruption 9, car cela entrerait en conflit avec l'interruption d'exception Double Fault pour le processeur, le livre mentionne probablement le paramètre par défaut.