INTERRUPCIONES

Reservadas por INTEL (modo protegido). Utilizables por el usuario. Cada vector: 4 bytes. Dirección del vector: 0: INT x 4. La tabla ocupa 256x4 = 1024 bytes (1 ...
128KB Größe 54 Downloads 120 vistas
INTERRUPCIONES Tres tipos de interrupciones: • Internas (TRAPS) • Externas (HARDWARE) • Software Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset

....

Memoria principal

0000:0008 0000:0006 0000:0004 0000:0002 0000:0000

32 50

F0 8A

Segmento Offset

Vector INT 0 = F032:8A50 (dirección donde comienza la rutina de atención)

Número de interrupción: Internas : implícito Externas : Enviado por el periférico solicitante Software : indicado en la propia instrucción

INTERRUPCIONES

INT 0

Error de división por 0

INT 1

Ejecución paso a paso

INT 2

NMI (No enmascarable)

INT 3

Instrucción INT

INT 4

Desbordamiento (INTO) Reservadas por INTEL (modo protegido)

INT 32 INT 33 INT 34 Utilizables por el usuario

INT 255 Cada vector: 4 bytes La tabla ocupa 256x4 = 1024 bytes (1 Kbyte) Dirección del vector: 0: INT x 4

INTERRUPCIONES Proceso de una interrupción: 1. Guarda registro F en la pila 2. IF=0, TF=0 3. Guarda CS en la pila 4. CS = NUM_INT x 4 + 2 5. Guarda IP en la pila 6. IP = NUM_INT x 4 Retorno de interrupción: IRET Realiza el proceso inverso

INTERRUPCIONES Internas 0

Error de división por 0

El cociente no cabe en el registro destino

1

Ejecución paso a paso

Se produce una interrupción cada vez que se ejecuta una instrucción si el flag T está activado

2

NMI (No enmascarable)

Interrupción hardware (NMI)

3

Instrucción INT

4

Desbordamiento (INTO)

Produce una interrupción cuando se ejecuta la instrucción INT (1 byte) - BREAKPOINTS Si el flag O está activado se dispara al ejecutar la instrucción INTO

Reservadas Son necesarias en el modo protegido Fallos de página Nivel de privilegio insuficiente Violación de límite de segmento No deben utilizarse en el modo real IBM las utilizó en el PC

Software Cualquier interrupción se puede disparar mediante la instrucción

INT n

INTERRUPCIONES Hardware NMI

NMI activa en flanco de subida INTR

CPU

INTR activa a nivel alto

La CPU genera dos impulsos de reconocimiento de interrupción REQ0 INTA .... REQ4

Lógica

INTR INTA Reconocimiento

D0 .. D7

Petición vector Nº de vector

INTERRUPCIONES Interconexión de varios dispositivos a la línea de interrupción

El PIC 8259 (“Programmable Interrupt Controller”)

ESQUEMA INTERNO DE BLOQUES INT

INTA

BUFFER

LÓGICA LECTURA/ ESCRITURA

ISR

CS#

CAS0 CAS1 CAS2

CONTROL DE CASCADA

SP/EN

IMR REGISTRO DE MÁSCARA

IRR REGISTRO DE PETICIÓN DE INTERRUPCIÓN

A0

Bus interno (8 bits)

ÁRBITRO DE PRIORIDADES

RD# WR#

LÓGICA DE CONTROL

BUS DE DATOS

REGISTRO INTERRUPCIONES EN SERVICIO

D0..D7

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

INTERRUPCIONES Proceso de una interrupción en el PIC 1. Un periférico solicita interrupción

REGISTRO DE PETICIÓN DE INTERRUPCIÓN

IRR

IRQ0 IRQ1 IRQ2

IRR 0 0 0 1 0 0 0 0 Se activa el bit correspondiente en ISR

INT IRQ3

IRQ4 IRQ5 IRQ6 IRQ7

2. El PIC solicita interrupción a la CPU (INT) 3. La CPU reconoce la petición con un primer pulso de INTA 4. Se activa el bit correspondiente de ISR y se desactiva en IRR

IRR

ISR

0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0

5. La CPU envía el segundo pulso de INTA 6. El PIC coloca un puntero de 8 bits en el bus de datos El valor del puntero es distinto para cada entrada IRQ Es programable 7. A partir de entonces comienza a ejecutarse la rutina de atención

INTERRUPCIONES

Fin de interrupción (EOI) Los bits activos de ISR bloquean futuras peticiones por esa línea

ISR 0 0 0 1 0 1 0 0

Líneas activas

Líneas bloqueadas

Deben ponerse a 0 al terminar la rutina de servicio: (EOI) Formas de poner a 0 el bit de ISR: 1. Programar el modo automático (AEOI) El bit se pone a 0 automáticamente al colocar el puntero en el bus de datos 2. Enviar al PIC el comando EOI: No específico : pone a 0 el de más prioridad Específico: pone a 0 el que se le indica Generalmente se envía el EOI justo antes del IRET

INTERRUPCIONES RUTINA SERV. A IRQ3

PROGRAMA PRINCIPAL

RUTINA SERV. A IRQ1

STI STI STI PERMITIDAS TODAS LAS INTERR.

PERMITIDAS IRQ2 IRQ1 IRQ0

IRQ3

IRQ1

EOI

EOI

IRET

IRET PONE A 0

PONE A 0

0 0 0 0 0 0 0 0

0 0 0 0 1 0 0 0

0 0 0 0 1 0 1 0

ISR

ISR

ISR

INTERRUPCIONES Gestión de prioridades 1. Modo ANIDADO • IR0 prioridad más alta • IR7 prioridad más baja • Peticiones de menor prioridad que la que está siendo atendida se ignoran

2. Modo de ROTACIÓN AUTOMÁTICA • Útil cuando todos los dispositivos tienen idéntica prioridad • Cuando se atiende una IRQ se le asigna la prioridad menor • En el caso peor se espera que se atiendan a los otros 7

ISR

ISR

0 0 0 1 0 0 0 0

0 0 0 0 0 0 0 0

menor

mayor

7 6 5 4 3 2 1 0

Prioridad

mayor menor 2 1 0 7 6 5 4 3

Prioridad

3. Modo de ROTACIÓN ESPECÍFICA • Se le indica en el EOI cuál es el dispositivo que adquiere la menor prioridad

INTERRUPCIONES PIC MAESTRO

IRQ0 IRQ1

INTA# A0 CS# INT

IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 SP/EN

DATOS

Vcc

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

PIC ESCLAVO 1 INTA# A0 CS# INT CAS0 CAS1 CAS2

SP/EN

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

PIC ESCLAVO 2 INTA# A0 CS# INT CAS0 CAS1 CAS2

SP/EN

Lógica de selección

CONTROL

CAS0 CAS1 CAS2

DIRECCIONES

IRQ2

MODO CASCADA

INTERRUPCIONES Gestión de prioridades Modo ANIDADO ESPECIAL Cuando se conectan varios PIC en cascada Permite gestionar las prioridades de forma correcta

IRQ6 IRQ7

CAS0 CAS1 CAS2

IRQ0 IRQ1 IRQ2 IRQ3

PIC ESCLAVO

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5

PIC MAESTRO

IRQ5 IRQ6 IRQ7

INT

INT IRQ4

CAS0 CAS1 CAS2

ISR esclavo

SP/EN

0 0 0 1 0 0 0 0

SP/EN Vcc

ISR Maestro 0 0 1 0 0 0 0 0

IRQ6 IRQ7

CAS0 CAS1 CAS2

IRQ0

PIC ESCLAVO

IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5

PIC MAESTRO

IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

INT

INT IRQ1

CAS0 CAS1 CAS2

SP/EN

0 0 0 1 0 0 1 0

SP/EN Vcc

ISR Maestro 0 0 1 0 0 0 0 0

ISR esclavo

?

INTERRUPCIONES Gestión de prioridades Comando de sondeo (“POLL”) 1.

Cuando se activa no se pasan las peticiones de interrupción a la CPU

2.

El procesador debe interrogar al PIC para saber si se ha producido petición de interrupción

3.

La gestión de las interrupciones, y las prioridades se lleva a cabo mediante software.

PIC MAESTRO

IRQ0 IRQ1 IRQ3 IRQ4 IRQ5

INT

IRQ7

CAS0 CAS1 CAS2

SP/EN

ISR Maestro 0 1 0 0 0 1 0 0

No se envían las peticiones

INT IRQ2

INT IRQ6

INTERRUPCIONES

IRR REGISTRO DE PETICIÓN DE INTERRUPCIÓN

REGISTRO INTERRUPCIONES EN SERVICIO

ISR

ÁRBITRO DE PRIORIDADES

El registro de máscara IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

IMR REGISTRO DE MÁSCARA

Permite enmascarar individualmente cada entrada: 1

Prohibe interrupciones por esa línea

0

Permite interrupciones por esa línea

INTERRUPCIONES La programación del PIC 8259 Solamente 2 puertos de E/S disponibles (A0=0, A0=1) Posición par e impar respectivamente Existen un total de 7 comandos 4 ICW Palabras de inicialización 3 OCW Palabras de operación

COMANDO

DIRECCIÓN

Se distingue por

ICW1 ICW2 ICW3 ICW4

PAR IMPAR IMPAR IMPAR

Bit 4 = 1 Sigue a ICW1 Sigue a ICW2 Sigue a ICW3

OCW1 OCW2 OCW3

IMPAR PAR PAR

Bit 3 = 0 , Bit 4 = 0 Bit 3 = 1 , Bit 4 = 0

Palabra que se escribe (8 bits)

INTERRUPCIONES La programación del PIC 8259 Palabras de inicialización (ICW) Se utilizan en el reinicio del sistema para configurar el PIC ICW1 da comienzo a la secuencia de inicialización ICW1



A0 = 0

D4 = 1

Automáticamente, al recibirlo, el PIC: • Pone a 0 el registro de máscara • Asigna prioridad 7 a IRQ7 • Pone a 0 los registros IRR e ISR • Espera por las siguientes palabras de inicialización

Generalmente se utilizan cuando el sistema arranca

INTERRUPCIONES La programación del PIC 8259 Secuencia de inicialización Escribir ICW1

ICW1 se escribe en la dirección PAR con A0 = 0 y D4 = 1

Escribir ICW2

ICW1, ICW2 e ICW3 se escriben en la dirección IMPAR

¿Modo cascada?

Escribir ICW3

Si hay varios PIC en cascada es necesario escribir ICW3, en caso contrario puede omitirse

Es necesaria ICW4 En sistemas basados en procesadores Intel XX86 siempre es necesaria ICW4 Escribir ICW4

FIN

INTERRUPCIONES 1

ICW1

LTIM

SINGL ICW4

1 = Se necesita ICW4 0 = No se necesita ICW4 1 = Modo SINGLE 0 = Modo CASCADA 1 = Entradas activas al NIVEL 0 = Entradas activas al FLANCO

ICW2

T7 T6 T5 T4 T3 Número INT de interrupción que se asigna a IRQ0

ICW3 (Maestro)

S7 S6 S5 S4 S3 S2 S1 S0 1 = Esta entrada tiene PIC esclavo 0 = Esta entrada no tiene esclavo

ICW3 (Esclavo)

0

0

0

0

0 ID2 ID1 ID0 Entrada IRQ del maestro a la que se encuentra conectado

ICW4

0

0

0

SFNM BUF

M/S AEOI

86

Debe estar a “1” para indicar funcionamiento en modo 8086

1 = fin de interrupción automático 0 = fin de interrupción normal

Control del modo BUFFER

Control de anidamiento especial

INTERRUPCIONES La programación del PIC 8259 Palabras de operación (OCW) Se pueden enviar en cualquier momento Son tres : OCW1, OCW2 y OCW3 OCW1 ⇒

se corresponde con el registro IMR

Se detecta porque: A0 = 1 (escritura o lectura en posición IMPAR) Mediante OCW1 se pueden activar o desactivar los bits de la máscara de interrupción

IMR M7 M6 M5 M4 M3 M2 M1 M0

A0 = 1

1 = Activar máscara 0 = Desactivar máscara

INTERRUPCIONES La programación del PIC 8259 Palabra de operación OCW2 Se detecta cuando: Se escribe en posición PAR (A0 = 0) El byte que se escribe tiene D4 = 0 y D3 = 0 Controla los modos de: Específico Fin de interrupción No específico Rotación automática Gestión de prioridades Rotación específica

H

SL EOI

0

0

L2

L1

L0

Número de IRQ al que se refiere 001 011 101 100 000 111 110 010

EOI no específico EOI específico No válido

Rotación No válido

INTERRUPCIONES La programación del PIC 8259 Palabra de operación OCW3 Se detecta cuando: Se escribe en posición PAR (A0 = 0) El byte que se escribe tiene D4 = 0 y D3 = 1 Permite el sondeo y la lectura de STATUS

1.

Primero se escribe en posición PAR

0

0

1

P

RR RIS

RR RIS

Acción

1 1

Lee IRR Lee ISR

0 1

1 = Comando Poll

2.

A continuación se lee en posición PAR En comando POLL I

W2 W1 W0

En otros: Lectura de IRR o ISR directamente

INTERRUPCIONES Las interrupciones en el PC Desde la arquitectura AT hay dos PIC

IRQ0 IRQ1 IRQ2

PIC MAESTRO

IRQ3 IRQ4 IRQ5 IRQ6 IRQ7

CAS0 CAS1 CAS2

IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15

PIC ESCLAVO

INT CAS0 CAS1 CAS2

SP/EN SP/EN Vcc

PIC MAESTRO PIC ESCLAVO

Dir E/S = 20h, 21h Dir E/S = A0h, A1h

Interrupciones reservadas: IRQ0 IRQ1 IRQ8 IRQ13 IRQ14 IRQ3 IRQ4 IRQ6 IRQ7

Temporizador (Timer) Teclado Reloj de tiempo real Errores del coprocesador Controlador de disco duro Puerto serie COM1 Puerto serie COM2 Controlador de diskette Puerto paralelo

Al inicio del sistema se especifica: PIC MAESTRO PIC ESCLAVO

INT = IRQ + 8 INT = IRQ + 70h