Interrupciones De Software Y Hardware
Interrupciones
Computadores II
Rodrigo Santamaría
Índice
●
Tipos de interrupción: hardware y software
●
Interrupciones del 6809
●
●
Flags relacionados
●
Interrupciones enmascarables
●
Interrupciones software
Tratamiento de interrupciones
●
Vectores de salto
●
Paginación directa
●
Ejercicios
Interrupciones
●
Interrupción (hardware): señal asíncrona que
indica lanecesidad de atención debida a un
evento externo
●
●
●
Evitan que el procesador tenga que comprobar
continuamente el estado externo
A través del cableado del procesador
Interrupción (software): evento síncrono en
un programa indicando la necesidad de un
cambio en la ejecución
●
A través de instrucciones propias del procesador
Interrupciones del 6809
Nombre
Significado
Detalles
RESET
ResetSe lanza al encenderse el ordenador
NMI
Non-Maskable Interrupt
Interrupción que no se puede ignorar
IRQ
Interrupt ReQuest
Interrupción que se puede ignorar
FIRQ
Fast Interrupt ReQuest
Interrupción ignorable de tipo rápido
SWI
SoftWare Interrupt
SWI2
SoftWare Interrupt 2
Interrupción de software 1 a través de
la orden SWI
Como SWI, pero el nemónico es SWI2
SWI3
SoftWare Interrupt3
Como SWI, pero el nemónico es SWI3
Interrupciones del 6809
RESET
No enmascarables
+
Hardware
Enmascarables
FIRQ
IRQ
Prioridad
NMI
Software
SWI
SWI2
SWI3
Flags relacionados
Flag
Descripción
Función si activo (1)
Función si inactivo (0)
E
Entire state
Indica que, en una
interrupción, se guardaron
todos los registros en la pila S
Indica que, en una
interrupción, se guardaron
sóloPC y CC en la pila S
I
IRQ interrupt mask
Inhibe interrupciones IRQ
Permite interrupciones IRQ
F
FIRQ interrupt mask Inhibe interrupciones FIRQ
Permite interrupciones FIRQ
Interrupciones enmascarables
●
●
Interrupción enmascarable: aquélla que se
puede ignorar
●
En IRQ, poniendo el bit I del registro CC a 0
●
En FIRQ, poniendo el bit F del registro CC a 0
Interrupción noenmascarable: aquélla que no se
puede ignorar
●
En el 6809, es la interrupción NMI
●
Se utilizan habitualmente para temporizadores
Interrupciones software
●
Requieren la ejecución de una instrucción
●
●
SWI, SWI2, SWI3
La instrucción tiene los siguientes efectos
●
Pone el flag E a 1
●
Guarda todos los registros en la pila S
●
Pone los flags F e I a 1
●
Salta a su vector
Tratamiento deinterrupciones
●
Cuando se dispara una interrupción
1. Se comprueba el flag E
2. Se guardan en la pila S los registros
●
●
Todos si E=1
PC y CC si E=0
3. Se salta a la dirección del vector de salto de la
instrucción
●
–
En ella estará el salto a la subrutina de tratamiento
Al final de la rutina de tratamiento, se debe ejecutar la
instrucción RTI (ReTurn from Interrupt), que consulta E y
restauralos registros correspondientes
Tratamiento de interrupciones
●
Antes del paso 1, dependiendo de la
interrupción:
●
●
IRQ pone I=1, inhabilitando nuevas IRQs
FIRQ pone I=1 y F=1, inhabilitando nuevas IRQs y
FIRQs
–
●
Es decir, FIRQ tiene una prioridad mayor que IRQ
NMI pone I=F=1 (inhibe IRQ y FIRQ)
–
Tiene la mayor prioridad de las tres, pues un NMI
interrumpe cualquier proceso, incluida unasubrutina de
tratamiento de NMI
Vectores de salto
Interrupción
Dirección de salto
RESET
0xFFFE
NMI
0xFFFC
SWI
0xFFFA
IRQ
0xFFF8
FIRQ
0xFFF6
SWI2
0xFFF4
SWI3
0xFFF2
;para saltar a la subrutina tratar_irq sería:
.org 0xFFF8
.word tratar_irq
Errores frecuentes
●
IRQ y FIRQ deben habilitarse mediante su flag
en CC
●
●
La pila S debe apuntar a un lugar adecuado
●
●
Porejemplo, para FIRQ: andcc #0b10111111
Por ejemplo: lds 0xB000
La subrutina de tratamiento de la interrupción
debe terminar con rti
●
Y se invoca con .word subrutina desde el
vector correspondiente, no con jsr.
Ejemplo
●
Implementad un programa que pida un carácter
por teclado, chequeando si es un dígito:
●
●
●
Si es un dígito, termina sin más
Si no, lanza una excepción software SWI, que
imprime...
Regístrate para leer el documento completo.