Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov...

26
Interrupciones en IA-32 Ing. Marcelo Doallo Abril 2013 Ing. Marcelo Doallo Interrupciones en IA-32

Transcript of Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov...

Page 1: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Interrupciones en IA-32

Ing. Marcelo Doallo

Abril 2013

Ing. Marcelo Doallo Interrupciones en IA-32

Page 2: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Interrupciones

En cualquiera de los modos de trabajo del procesador lasinterrupciones se identifican mediante un numero de un bytellamado tipo.

Tiene 256 tipos diferentes de interrupcion.

El sistema de interrupciones fundado por el 8086, se mantuvoinvariable en sus sucesores.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 3: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Interrupciones y Excepciones

Origen de las interrupciones:

Externa, por el hardware en interrupciones que ingresanpor el pin INTR del procesador.Externa, pin NMI son de tipo 2.Interna la instruccion INT <type >, para el caso de lasinterrupciones por software, por ejemplo INT 80h.Interna, producto de la deteccion de algun error, ejemplodivision por cero. Se las denomina Excepciones.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 4: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Clasificacion de las excepciones

Fault: Excepcion que puede corregirse permitiendo alprograma retomar la ejecucion de esa instruccion sin perdercontinuidad. El procesador guarda en la pila la direccion de lainstruccion que produjo la falla.

Traps: Excepcion producida inmediatamente a continuacion dela ejecucion de una instruccion. Algunas permiten alprocesador retomar la ejecucion sin perder continuidad. Otrasno. El procesador guarda en la pila la direccion de lainstruccion a ejecutarse luego de la instruccion trapeada.

Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion dela tarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 5: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Excepciones

Ing. Marcelo Doallo Interrupciones en IA-32

Page 6: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Interrupciones en IA-32

La Interrupt Descriptor Table (IDT) almacena descriptores,similares a los vistos en la GDT o LDT.

Esta tabla tiene unicamente 256 entradas, coincidiendo con lacantidad de tipos de interrupciones diferentes que maneja elmicroprocesador.

No se puede definir en la IDT un descriptor de segmento dedatos ni de codigo.

En la IDT se colocan ciertos descriptores del sistema (Bit S=0en el descriptor).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 7: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Descriptores en la IDT

Interrupt Gate: Limpia Interrupt Flag (IF=0), no puede serinterrumpido nuevamente, pero sı por una excepcion o unainterrupcion no enmascarable.

Trap Gate: No afecta Interrupt Flag.

Task Gate: Cambia de tarea.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 8: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Descriptores en la IDT (2)

Ing. Marcelo Doallo Interrupciones en IA-32

Page 9: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Registro IDTR

Ing. Marcelo Doallo Interrupciones en IA-32

Page 10: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Procedimiento de Interrupcion

Ing. Marcelo Doallo Interrupciones en IA-32

Page 11: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Manejo de la Pila: Sin cambio de nivel de privilegio

SP o ESP apunta al ultimo dato almacenado, estos seran de16 o 32 bits dependiendo del tipo de segmento de codigo enoperacion.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 12: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Codigo de error

EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo alprocesador.

IDT: Descriptor Location (bit 1): Cuando esta seteado indicaque el campo Segment Selector Index se refiere a undescriptor de puerta en la IDT: Cuando esta en cero indica quedicho campo se refiere a un descriptor en la GDT o en la LDTde la tarea actual.

TI: GDT/LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice. 0 GDT , 1 LDT (identico significadoque en el selector de segmento).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 13: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

8259: Controlador Programable de Interrupciones

El procesador solo dispone de dos lıneas de interrupcion.

La forma que tiene la familia IA-32 de disponer de mas lıneasde interrupcion es por medio de un controlador programable deinterrupciones.

El controlador recibe la interrupcion, la transmite al CPU por lalınea INTR y le informa cual de todas sus lıneas de interrupcion(IRQ’s) fue por medio de bus de datos.

Las lıneas de interrupcion (IRQ’s) son fısicas.

Los tipos de interrupcion (INT’s) son logicas.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 14: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

8259: Controlador Programable de Interrupciones

Ing. Marcelo Doallo Interrupciones en IA-32

Page 15: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

El PIC 8259 en la PC

Ing. Marcelo Doallo Interrupciones en IA-32

Page 16: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Asignacion y Tipo de las IRQ’s

Ing. Marcelo Doallo Interrupciones en IA-32

Page 17: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

El PIC 8259 en la PC

El 8259 presenta al procesador una interfaz de programacion atraves de dos direcciones de E/S.

La primer PC tenıa un solo PIC en las direcciones de port20h y 21h.La PC AT 286, incluyo un segundo PIC, ya que la PCoriginal ya habıa agotado la asignacion de IRQ’s, yseguıan apareciendo nuevos dispositivos: Placas de red,placas de sonido, etc.Este PIC es accesible en las direcciones de port A0h yA1h.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 18: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Palabras de Comando de Inicializacion del 8259

Son una secuencia de entre dos y cuatro bytes que se envıa alprocesador al 8259A antes de comenzar la operacion normal,a fin de configurarlo.

La secuencia de Inicializacion en el PIC 8259 es una operacionatomica, es decir, que no puede dividirse.

El 8259 detecta la secuencia de inicializacion cuando recibe enla direccion de port par (A0 = 0), una palabra con el bit D4=1.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 19: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Palabras de Comando de Operacion del 8259

Una vez inicializado el 8259A, la palabras de comando ledefinen al 8259 diversas operaciones a realizar.

Luego de la inicializacion, se pueden enviar palabras decomando en cualquier momento.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 20: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Programacion del PIC 8259

Ing. Marcelo Doallo Interrupciones en IA-32

Page 21: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Programacion del PIC 8259 (2)

; Enmascarar interrupciones del PIC 1

mov al, 11111101bout 21h, al

; Enmascarar interrupciones del PIC 2

mov al, 11111111bout 0A1h, al

Ing. Marcelo Doallo Interrupciones en IA-32

Page 22: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Programacion del PIC 8259 (3)

; Al final de manejador de interrupcion

mov al, 20hout 20h, aliret

Ing. Marcelo Doallo Interrupciones en IA-32

Page 23: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Hardware de Soporte: 8253 / 8254

Timer 0: Direccion 40h. Base de tiempos del sistema. A laentrada CLK0 se conecta un cristal de 1,193,180 MHz. Seprograma para generar por OUT0 un pulso cada 55 mseg. Estepin se conecta a la lınea IRQ0 del PIC 8259: ası se genera unainterrupcion a dicho intervalo.

Timer 1: Direccion 41h. Se programa del mismo modo queTimer 0 pero se lo utiliza para activar el sistema de refresco dememoria DRAM. Para ello, OUT1 va conectado a la entradaDREQ0 del 8237. A partir del modelo AT 286 se utilizara unhardware dedicado al refresco de memoria.

Timer 2: Direccion 42h. Se programa para generar a su salidauna senal cuadrada de 50 % de duty cycle y OUT2 se conectaal parlante del sistema.

Registro de comando y status. Direccion 43h.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 24: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Hardware de Soporte: 8255

Port A: Direccion 60h. La logica de control de teclado al recibirlos codigos de las teclas los almacena en este port.

Port B: Direccion 61h. Sus lıneas trabajan como salidas decontrol individuales.

Envıo de la salida del Timer al parlante de la PC.Envıo de un pulso a la lınea IRQ1 del PIC 8259 cada vezque se recibe un codigo de tecla desde el teclado.

Port C: Direccion 62h. Cuatro de estas lıneas se utilizan comoinformacion de configuracion del sistema. El sistema deconfiguracion en los modelos originales PC y PC-XT erasumamente rudimentario (trabajaba con dip switches).

Ing. Marcelo Doallo Interrupciones en IA-32

Page 25: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Demostracion practica

/practicas/ej1$

Esta bien “Copiar – Pegar”, solo si es codigo que ustedeshicieron. Copiar sin entender lo que copian es perder el tiempo.

Comando de consola debug de bochs: info gdt, info idt, r,sreg, creg, vb 0x8:0x21.

Desafıo: Implementarlo con interrupciones.

Ing. Marcelo Doallo Interrupciones en IA-32

Page 26: Interrupciones en IA-32 · Programacion del PIC 8259 (2)´; Enmascarar interrupciones del PIC 1 mov al, 11111101b out 21h, al; Enmascarar interrupciones del PIC 2 …

Referencias

Intel R© 64 and IA32 Architectures Software Developer’s ManualVolume 3A: System Programming Guide, Capıtulo 5.

Ing. Marcelo Doallo Interrupciones en IA-32