fbpx
Wikipedia

Intel 8259

El Intel 8259 o PIC 8259 es un controlador programable de interrupciones (PIC), diseñado para ser usado en un sistema que incorpore un microprocesador 8085 u 8086.[1]​ Un posterior sufijo "A" fue compatible con los procesadores Intel 8086 y 8088. El 8259 combina múltiples entradas de interrupción en una simple salida de interrupción hacia el microprocesador, extendiendo los niveles de interrupción disponibles en un sistema más allá de los uno o dos niveles encontrados en el chip del procesador. El 8259A fue el controlador de interrupciones para el bus ISA en el IBM PC original y el IBM AT.[2]

El NEC D8259A usado en la tarjeta madre del IBM PC original.

Historia

El 8259 fue introducido como parte de la familia Intel MCS 85 en 1976. El 8259A fue incluido en el PC original en 1981 y mantenido por el IBM XT cuando se introdujo en 1983. Un segundo 8259A fue añadido con la introducción del IBM AT. El 8259A ha coexistido con la arquitectura APIC de Intel, desde su introducción en los PC de multiprocesador simétrico. Los PC modernos ya han comenzado a eliminar por completo el uso del 8259A en favor del uso exclusivo de la arquitectura APIC de Intel. Sin embargo, aunque ya no es un chip separado, la interface del 8259A todavía es proporcionada por el chipset Southbridge en las modernas tarjetas x86.

Los conectores principales en un 8259 son los siguientes:

  • Ocho líneas de solicitud de interrupción de entrada con el nombre IRQ0 hasta IRQ7
  • Una salida de solicitud de interrupción llamada INTR
  • Línea de reconocimiento de interrupción llamada INTA
  • Líneas de datos de D0 hasta D7 para comunicar el nivel de interrupción o vector de desplazamiento
  • Otros conectores incluyen CAS0 hasta CAS2 para cascada entre los 8259.

Hasta ocho 8259 esclavos pueden ser conectados en cascada a un 8259 maestro para proporcionar un máximo de 64 IRQ. Los 8259 son conectados en cascada conectando la línea de INT de un 8259 esclavo a una línea de IRQ de un 8259 maestro.

Hay tres registros internos en el 8259:

  • El Interrupt Mask Register (IMR) (Registro de enmascaramiento de interrupción), que mantiene una máscara de las interrupciones actuales pendientes de reconocimiento (acknowledgement)
  • El Interrupt Request Register (IRR) (Registro de solicitud de interrupción), que mantiene una máscara de las interrupciones que están pendientes de fin de interrupción (EOI)
  • El In-Service Register (ISR) (Registro de En-Servicio), que mantiene una máscara de interrupciones a las que no se les debe enviar un reconocimiento.

El 8259 soporta los modos de prioridad fijos y rotatorios.

La operaciones de Fin de interrupción (EOI) soportan EOI específico, EOI no específico, y auto-EOI. Un EOI específico indica el nivel de IRQ que está reconociendo en el ISR. Un EOI no específico resetea el nivel de IRQ en el ISR. El auto-EOI resetea el nievl de IRQ en el ISR inmediatamente después de que la interrupción es reconocida.

Los modos de disparo de interrupción por flanco y nivel son soportados por el 8259A. Los modos de prioridad fija y prioridad rotativa son soportados.

El 8259 puede ser configurado para trabajar con un 8080/8085 o un 8086/8088. En el 8086/8088, el controlador de interrupciones proporcionará un número de interrupción en el bus de datos cuando se produce una interrupción. El ciclo de interrupción en el 8080/8085 emitirá tres bytes en el bus de datos (que corresponde a una instrucción CALL en el conjunto de instrucciones del 8085).

Estructura del controlador

La estructura del controlador está formada por un conjunto de registros internos que analizaremos a continuación.

  • IRR/ISR:: Registro de peticiones de interrupción/Registro de servicio de interrupción. Al activarse una o varias entradas IR quedán reflejadas en los bits correspondientes de IRR. Se usa para decidir a que interrupción atender.
  • IMR: Registro de máscaras de interrupción. Se delega la responsabilidad en el programador para enmascarar algunas interrupciones que ayuden al controlador a ignorar dichas interrupciones, aquí cada bit corresponde a una línea IRQ, e indica si está permitida una interrupción de ese nivel en ese momento.

Consideraciones de Programación

DOS y Windows

La programación de un 8259 en relación con el DOS y Microsoft Windows ha introducido una serie de cuestiones confusas en aras de la compatibilidad hacia atrás, que se extiende tan lejos como el PC original introducido en 1981.

La primera cuestión es más o menos la raíz de la segunda cuestión. Los controladores de dispositivos de DOS que espera para enviar un EOI no específico para el 8259s cuando terminan el servicio de su dispositivo. Esto evita el uso de cualquiera de los otros modos de EOI 8259 en DOS, y excluye la diferenciación entre el dispositivo que interrumpe en el cambio de itinerario del 8259 maestro al 8259 esclavo.

La segunda cuestión se refiere a la utilización de IRQ2 y IRQ9 de la introducción de un esclavo en 8259 el PC / AT. La línea INT del 8259 esclavo está conectado a IR2 del maestro. La línea de IRQ 2 del bus ISA, originalmente conectado a este IR2, fue desviado al IR1 del esclavo. Así, la línea IRQ2 viejo genera IRQ9 en la CPU. Para permitir la compatibilidad con controladores de dispositivos de DOS que aún puede configurar para IRQ2, un controlador es instalado por la BIOS para IRQ9, que redirige al controlador de interrupciones IRQ2 original.

Otros sistemas operativos

Dado que la mayoría de otros sistemas operativos permiten cambios en las expectativas de controlador de dispositivo, otros modos de operación del 8259 , tales como Auto-EOI, se pueden utilizar. Esto es especialmente importante para hardware moderno x86 en la que una cantidad significativa de tiempo se puede gastardireccionando I / O en la comunicación con los 8259s. Esto también permite otras optimizaciones en la sincronización, tales como las secciones críticas, en un sistema con varios procesadores x86 con 8259s.

Modo disparado por nivel y modo disparado por flanco

Dado que el bus ISA no es compatible con las interrupciones disparadas por nivel, este modo no se puede utilizar para las interrupciones conectados a los dispositivos ISA. En los sistemas MCA, los dispositivos usan interrupciones disparadas por nivel y el controlador de interrupciones es cableado para trabajar siempre en este modo. Los nuevos sistemas de EISA, PCI, y más tarde Edge/Level Control Registers (ELCRs) controlan el modo por la línea IRQ, haciendo el modo del irrelevante 8259 para sistemas con buses ISA. El ELCR es programado por la BIOS en el arranque del sistema para su correcto funcionamiento.

Los sistemas ELCR están ubicados en las posiciones 0x4d0 and 0x4d1 del espacio de direcciones de E/S del 8086. Hay 8-bits de ancho. Cada bit corresponde a una línea IRQ de los 8259s. Cuando un bit es establecido, la IRQ está en el modo disparado por nivel, de lo contrario, la IRQ está en modo disparado por flanco.

Interrupciones falsas

El 8259 genera interrupciones falsas en respuesta a una serie de condiciones.

La primera es una línea de IRQ se resetea antes de que sea reconocido.[cita requerida] Esto puede ocurrir debido al ruido en la línea de IRQ. En el modo accionado por flanco, el ruido debe mantener la línea en el estado bajo de 100 ns. Cuando el ruido disminuye, devuelve una resistencia pull-up de la línea de IRQ a alta, generando así una falsa interrupción. En el nivel disparado modo, el ruido puede causar un nivel de señal de alta en los sistemas de INTR línea. Si el sistema envía una solicitud de reconocimiento, el 8259 no tiene nada que resolver y por lo tanto envía un IRQ7 en respuesta. Este primer caso se generan falsas de IRQ7.

Un caso similar puede ocurrir cuando el 8259 desenmascarar y la deassertion entrada de IRQ no se sincronizan correctamente. En muchos sistemas, la entrada de IRQ se deasserted por una E / S de escritura, y el procesador no esperar hasta que la escritura llega a la I / O. Si el procesador continúa y desenmascara la IRQ 8259 antes de la entrada de IRQ se deasserted, el 8259 va a valer más INTR. Por el tiempo que el procesador reconoce este INTR y un acuse de recibo para leer la IRQ del 8259, la entrada de IRQ puede ser deasserted, y el 8259 devuelve una falsa IRQ7.

El segundo es el maestro de 8259 IRQ2 es de alta actividad, cuando el esclavo 8.259 líneas de IRQ están inactivos en el flanco de bajada de un reconocimiento de la interrupción. Este segundo caso se generan falsas IRQ15, pero es muy raro.

Programación del 8259

El 8259 acepta dos tipos de comandos generados por la CPU: los ICW (Inicialization Command Word) que inicializan el 8259, y los OCW (Operation Command Word) que permiten programar la modalidad de funcionamiento. Antes de que los 8259 de un sistema comiencen a trabajar deben recibir una secuencia de ICW que los inicialice. Los ICW y OCW constan de secuencias de 2 a 4 comandos consecutivos que el 8259 espera recibir secuencialmente, unos tras otros, a través del bus de datos, según sea necesario (el propio 8259 se encarga de contarlos midiendo los pulsos de la línea -WR). Los OCW pueden ser enviados en cualquier momento, una vez realizada la inicialización.

La comunicación con el 8259 emplea las líneas -WR y -RW, así como A0. El hecho de que exista una sola línea de direcciones implica que el 8259 sólo ocupa dos direcciones de puerto de E/S en el espacio de entrada y salida del ordenador.

ICWS (Initialization Command Words)

En este apartado analizamos las diferentes secuencias de inicialización que podemos introducir al 8259 para su posterior funcionamiento.

  • ICW1: En esta primera orden de inicialización reseteamos el estado del 8259 y especificamos algunas características tales como si empleamos vectores de interrupción o especificamos las direcciones de comienzo de la RSI (lo cual depende de si estamos utilizando un 8086 u 8080/8085 como procesador). También indicaremos si las interrupciones serán activadas por flanco o bien por nivel. En caso de utilizar un 8080/8085 tendremos que indicar si el intervalo entre dos RSIs es de 4 u 8 bytes. Indicaremos si tenemos un único 8259 conectado a los distintos periféricos o si por el contrario utilizamos varios 8259 en cascada para ampliar el número de peticiones de interrupción que podemos tratar (modo cascada). Finalmente tendremos que especificar si enviaremos una cuarta señal de inicialización que tiene algunas configuraciones iniciales interesantes como ya veremos en ICW4.
  • ICW2: Con este comando de configuración nos permite fijar los distintos vectores de interrupción para cada línea de petición de interrupción (cada nivel de prioridad).
  • ICW3: Esta sentencia de inicialización solo se especificará en caso de que en ICW1 hayamos indicado que estamos trabajando con varios 8259 en cascada, en otro caso no será necesario su especificación. Con este comando configuraremos cada 8259 indicando quién es el maestro (a éste se le especificarán que líneas de petición de interrupción tiene ocupadas con otros 8259 que serán los esclavos). Para especificar que un 8259 es maestro bastará con poner a 1 la señal SP#/EN# o bien tener las señales BUF = 1 y M/S = 1 en caso de que queramos "abrir" el bufer triestado para comunicarnos con el bus de datos). A cada esclavo habrá que indicarle qué número identificativo tiene y éste se corresponde con el número de la "patilla" con el que se conecta al maestro.
  • ICW4: Permite realizar algunas configuraciones importantes sobre el 8259 pero estas solo se tendrán que especificar si en ICW1 indicamos que se enviaría este comando de configuración. Permite configurar un fin de interrupción automático, esto es, no se tendrá que especificar la orden EOI cada vez que acabemos de procesar una interrupción. También nos permite habilitar los bufer triestado que se comunican con el bus de datos, pero en caso de usar esta configuración si tenemos varios 8259 conectados en cascada deberemos indicar mediante la señal M/S quienes son esclavos y quién es el maestro. Por último se nos permite también especificar al 8259 que queremos que funcione en modo completamente anidado especial y esto es interesante cuando tenemos una conexión en cascada de varios 8259 ya que en el modo normal si un esclavo recibe una determinada petición se quedará bloqueado hasta que termine su procesamiento independientemente de que llegue otra más prioritaria. En el caso del modo especial este defecto se subsana permitiendo que otras más prioritarias puedan interrumpir la actual en curso.

OCWS (Operation Command Words)

Se le especifican al 8259 para configurar algunos aspectos tras la inicialización del mismo, entre estos podemos destacar:

  • Configuración del registro de máscara
  • Fijar la prioridad o establecer un turno rotatorio de prioridades
  • Especificar el modo de EOI
  • Escribir órdenes de "polling" o bien configurar el dispositivo en modo de máscara especial

A continuación comenzaremos a detallar las distintas OCWS que podemos especificar al 8259 para terminar de configurar su modo de funcionamiento:

  • OCW1: Con este comando se especifican cada uno de los valores de los bits del registro de máscara (IMR). El bit más significativo está fijado a 1. Recordemos que si un bit del IMR está a 1 significa que las interrupciones asociadas a dicho nivel de prioridad quedarán inhibidas.
  • OCW2: Nos permite configurar el modo de finalización de interrupción, es decir, si queremos emplear un EOI específico (hay que indicar qué interrupción hemos tratado) o no específico (no hace falta especificar que interrupción ha finalizado ya que se tratará de la más prioritaria que esté activa en ese momento).Hay que tener en cuenta que esto solo podrá establecerse si en la etapa de inicialización no especificamos un fin de interrupción automático (AEOI). Así mismo dedica algunos bits para decidir la política de prioridad que aplicaremos en las interrupciones, por ejemplo, si especificaremos cuál es la menos prioritaria o bien estableceremos un turno rotatorio de prioridades de tal manera que al finalizar el tratamiento de una interrupción su línea asociada pasará a ser la menos prioritaria, la siguiente a esta será la más prioritaria y así se irán estableciendo todas las prioridades, por ejemplo, supongamos que tenemos 5 líneas de interrupción (0,1,2,3,4) siendo la 0 la más prioritaria. Supongamos además que tenemos establecido una rotación de prioridades automática, y consideremos que se produce una petición por la línea 2. Una vez que la CPU trate dicha interrupción la línea 2 pasará a ser la menos prioritaria y las prioridades quedarían de la siguiente manera: 3,4,1,2 siendo la 3 la más prioritaria. El bit más significativo de la palabra de control está fijado a 0.
  • OCW3: Esta última palabra de control sirve para especificar si el 8259 funcionará en modo de máscara especial o usando "polling" y nos permite, además, leer todos los registros internos (IMR, ISR, IRR). Podemos configurar al 8259 para que trabaje en modo de máscara especial, es decir, el dispositivo no considerará niveles de prioridad simplemente aplicará como restricción los bits del registro de máscara pero a otros efectos los niveles tienen la misma prioridad. Por otro lado, se nos permite especificarle al 8259 que queremos que trabaje con señales de "polling" de esta manera el dispositivo no generará señales de interrupción a la CPU si no que pondrá en el bus de datos si hay alguna interrupción pendiente y también especificará cual es el nivel más prioritario que la solicita. Por último esta palabra de control nos permite consultar el contenido de los registros internos lo cual puede ser interesante a la hora de emplear técnicas de sondeo.

PC/XT y PC/AT

El sistema PC/XT tiene un controlador 8259, mientras PC/AT y sistemas posteriores disponen de dos controladores 8259 maestro-esclavo. Desde IRQ0 hasta IRQ7 son las líneas de interrupción maestro del 8259, y desde la IRQ8 hasta IRQ15 las líneas de interrupción esclavo. Los nombres reales de las patillas del 8259 son desde la IR0 hasta la IR7. IRQ0 hasta IRQ15 se añadieron posteriormente, siendo los nombres de las líneas del bus ISA

  • Maestro 8259
    • IRQ0 - Intel 8253 o Intel 8254 del temporizador de intervalos programable, también conocido como temporizador del sistema
    • IRQ1 - Intel 8042 teclado controlador
    • IRQ2 - no se haya asignado en el PC / XT; esclavo en cascada para 8259 la línea INT en el PC / AT
    • IRQ3 - 8250 UART puerto serie COM2 y COM4
    • IRQ4 - 8250 puerto UART serie COM1 y COM3
    • IRQ5 - controlador de disco duro en el PC / XT; Intel 8255 en paralelo LPT2 puerto en el PC / AT
    • IRQ6 - 82072A Intel controlador de disquete
    • IRQ7 - Intel 8255 de puerto paralelo LPT1 / interrupción falsa
  • Esclavo 8259 (PC / AT y posteriores)
    • IRQ8 - reloj en tiempo real (RTC)
    • IRQ9 - sin asignación común
    • IRQ10 - sin asignación común
    • IRQ11 - sin asignación común
    • IRQ12 - Intel 8042 PS/2 controlador del ratón
    • IRQ13 - coprocesador
    • IRQ14 - controlador de disco duro 1
    • IRQ15 - controlador de disco duro 2

Inicialmente IRQ7 fue una opción común para el uso de una tarjeta de sonido, pero más tarde IRQ5 se utilizó cuando se constató que IRQ7 podría interferir con el puerto de impresora (LPT1). Los puertos serie son con frecuencia con discapacidad a una línea de IRQ libre para otro dispositivo.

IRQ2 / 9 es la línea tradicional de interrupción para un puerto MPU-401 MIDI, pero esto entra en conflicto con el control del sistema ACPI de interrupción (SCI se cablea directamente al IRQ9 en los chipsets Intel), lo que significa ISA MPU-401 tarjetas con un cableado IRQ 2 / 9 , y los conductores MPU-401 con un dispositivo codificado IRQ 2 / 9, no se puede utilizar en el modo controlado por interrupciones en un sistema con ACPI habilitado.

Véase también

Referencias

Bibliografía

  • García de Celis, Ciriaco (1994). «12.4: El controlador de interrupciones 8259». El universo digital del IBM PC, AT y PS/2 (4ª edición). Facultad de Ciencias de Valladolid: Grupo Universitario de Informática. 
  • Intel (1988). 8259A Programable Interrupt Controller (en inglés). Hoja de datos. 

Enlaces externos

  • 8259A Programmable Interrupt Controller
  • http://wiki.osdev.org/PIC
  •   Datos: Q1547313

intel, 8259, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, abril, 2010, 8259, controlador, programable, interrupciones, diseñado, para, usado, sistema, incorpore, microprocesador, 8085, 8086, posterior. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 18 de abril de 2010 El Intel 8259 o PIC 8259 es un controlador programable de interrupciones PIC disenado para ser usado en un sistema que incorpore un microprocesador 8085 u 8086 1 Un posterior sufijo A fue compatible con los procesadores Intel 8086 y 8088 El 8259 combina multiples entradas de interrupcion en una simple salida de interrupcion hacia el microprocesador extendiendo los niveles de interrupcion disponibles en un sistema mas alla de los uno o dos niveles encontrados en el chip del procesador El 8259A fue el controlador de interrupciones para el bus ISA en el IBM PC original y el IBM AT 2 El NEC D8259A usado en la tarjeta madre del IBM PC original Pinout del controlador programable de interrupciones Intel 8259 1 Indice 1 Historia 2 Estructura del controlador 3 Consideraciones de Programacion 3 1 DOS y Windows 3 2 Otros sistemas operativos 3 3 Modo disparado por nivel y modo disparado por flanco 3 4 Interrupciones falsas 4 Programacion del 8259 4 1 ICWS Initialization Command Words 4 2 OCWS Operation Command Words 5 PC XT y PC AT 6 Vease tambien 7 Referencias 7 1 Bibliografia 8 Enlaces externosHistoria EditarEl 8259 fue introducido como parte de la familia Intel MCS 85 en 1976 El 8259A fue incluido en el PC original en 1981 y mantenido por el IBM XT cuando se introdujo en 1983 Un segundo 8259A fue anadido con la introduccion del IBM AT El 8259A ha coexistido con la arquitectura APIC de Intel desde su introduccion en los PC de multiprocesador simetrico Los PC modernos ya han comenzado a eliminar por completo el uso del 8259A en favor del uso exclusivo de la arquitectura APIC de Intel Sin embargo aunque ya no es un chip separado la interface del 8259A todavia es proporcionada por el chipset Southbridge en las modernas tarjetas x86 Los conectores principales en un 8259 son los siguientes Ocho lineas de solicitud de interrupcion de entrada con el nombre IRQ0 hasta IRQ7 Una salida de solicitud de interrupcion llamada INTR Linea de reconocimiento de interrupcion llamada INTA Lineas de datos de D0 hasta D7 para comunicar el nivel de interrupcion o vector de desplazamiento Otros conectores incluyen CAS0 hasta CAS2 para cascada entre los 8259 Hasta ocho 8259 esclavos pueden ser conectados en cascada a un 8259 maestro para proporcionar un maximo de 64 IRQ Los 8259 son conectados en cascada conectando la linea de INT de un 8259 esclavo a una linea de IRQ de un 8259 maestro Hay tres registros internos en el 8259 El Interrupt Mask Register IMR Registro de enmascaramiento de interrupcion que mantiene una mascara de las interrupciones actuales pendientes de reconocimiento acknowledgement El Interrupt Request Register IRR Registro de solicitud de interrupcion que mantiene una mascara de las interrupciones que estan pendientes de fin de interrupcion EOI El In Service Register ISR Registro de En Servicio que mantiene una mascara de interrupciones a las que no se les debe enviar un reconocimiento El 8259 soporta los modos de prioridad fijos y rotatorios La operaciones de Fin de interrupcion EOI soportan EOI especifico EOI no especifico y auto EOI Un EOI especifico indica el nivel de IRQ que esta reconociendo en el ISR Un EOI no especifico resetea el nivel de IRQ en el ISR El auto EOI resetea el nievl de IRQ en el ISR inmediatamente despues de que la interrupcion es reconocida Los modos de disparo de interrupcion por flanco y nivel son soportados por el 8259A Los modos de prioridad fija y prioridad rotativa son soportados El 8259 puede ser configurado para trabajar con un 8080 8085 o un 8086 8088 En el 8086 8088 el controlador de interrupciones proporcionara un numero de interrupcion en el bus de datos cuando se produce una interrupcion El ciclo de interrupcion en el 8080 8085 emitira tres bytes en el bus de datos que corresponde a una instruccion CALL en el conjunto de instrucciones del 8085 Estructura del controlador EditarLa estructura del controlador esta formada por un conjunto de registros internos que analizaremos a continuacion IRR ISR Registro de peticiones de interrupcion Registro de servicio de interrupcion Al activarse una o varias entradas IR quedan reflejadas en los bits correspondientes de IRR Se usa para decidir a que interrupcion atender IMR Registro de mascaras de interrupcion Se delega la responsabilidad en el programador para enmascarar algunas interrupciones que ayuden al controlador a ignorar dichas interrupciones aqui cada bit corresponde a una linea IRQ e indica si esta permitida una interrupcion de ese nivel en ese momento Consideraciones de Programacion EditarDOS y Windows Editar La programacion de un 8259 en relacion con el DOS y Microsoft Windows ha introducido una serie de cuestiones confusas en aras de la compatibilidad hacia atras que se extiende tan lejos como el PC original introducido en 1981 La primera cuestion es mas o menos la raiz de la segunda cuestion Los controladores de dispositivos de DOS que espera para enviar un EOI no especifico para el 8259s cuando terminan el servicio de su dispositivo Esto evita el uso de cualquiera de los otros modos de EOI 8259 en DOS y excluye la diferenciacion entre el dispositivo que interrumpe en el cambio de itinerario del 8259 maestro al 8259 esclavo La segunda cuestion se refiere a la utilizacion de IRQ2 y IRQ9 de la introduccion de un esclavo en 8259 el PC AT La linea INT del 8259 esclavo esta conectado a IR2 del maestro La linea de IRQ 2 del bus ISA originalmente conectado a este IR2 fue desviado al IR1 del esclavo Asi la linea IRQ2 viejo genera IRQ9 en la CPU Para permitir la compatibilidad con controladores de dispositivos de DOS que aun puede configurar para IRQ2 un controlador es instalado por la BIOS para IRQ9 que redirige al controlador de interrupciones IRQ2 original Otros sistemas operativos Editar Dado que la mayoria de otros sistemas operativos permiten cambios en las expectativas de controlador de dispositivo otros modos de operacion del 8259 tales como Auto EOI se pueden utilizar Esto es especialmente importante para hardware moderno x86 en la que una cantidad significativa de tiempo se puede gastardireccionando I O en la comunicacion con los 8259s Esto tambien permite otras optimizaciones en la sincronizacion tales como las secciones criticas en un sistema con varios procesadores x86 con 8259s Modo disparado por nivel y modo disparado por flanco Editar Dado que el bus ISA no es compatible con las interrupciones disparadas por nivel este modo no se puede utilizar para las interrupciones conectados a los dispositivos ISA En los sistemas MCA los dispositivos usan interrupciones disparadas por nivel y el controlador de interrupciones es cableado para trabajar siempre en este modo Los nuevos sistemas de EISA PCI y mas tarde Edge Level Control Registers ELCRs controlan el modo por la linea IRQ haciendo el modo del irrelevante 8259 para sistemas con buses ISA El ELCR es programado por la BIOS en el arranque del sistema para su correcto funcionamiento Los sistemas ELCR estan ubicados en las posiciones 0x4d0 and 0x4d1 del espacio de direcciones de E S del 8086 Hay 8 bits de ancho Cada bit corresponde a una linea IRQ de los 8259s Cuando un bit es establecido la IRQ esta en el modo disparado por nivel de lo contrario la IRQ esta en modo disparado por flanco Interrupciones falsas Editar El 8259 genera interrupciones falsas en respuesta a una serie de condiciones La primera es una linea de IRQ se resetea antes de que sea reconocido cita requerida Esto puede ocurrir debido al ruido en la linea de IRQ En el modo accionado por flanco el ruido debe mantener la linea en el estado bajo de 100 ns Cuando el ruido disminuye devuelve una resistencia pull up de la linea de IRQ a alta generando asi una falsa interrupcion En el nivel disparado modo el ruido puede causar un nivel de senal de alta en los sistemas de INTR linea Si el sistema envia una solicitud de reconocimiento el 8259 no tiene nada que resolver y por lo tanto envia un IRQ7 en respuesta Este primer caso se generan falsas de IRQ7 Un caso similar puede ocurrir cuando el 8259 desenmascarar y la deassertion entrada de IRQ no se sincronizan correctamente En muchos sistemas la entrada de IRQ se deasserted por una E S de escritura y el procesador no esperar hasta que la escritura llega a la I O Si el procesador continua y desenmascara la IRQ 8259 antes de la entrada de IRQ se deasserted el 8259 va a valer mas INTR Por el tiempo que el procesador reconoce este INTR y un acuse de recibo para leer la IRQ del 8259 la entrada de IRQ puede ser deasserted y el 8259 devuelve una falsa IRQ7 El segundo es el maestro de 8259 IRQ2 es de alta actividad cuando el esclavo 8 259 lineas de IRQ estan inactivos en el flanco de bajada de un reconocimiento de la interrupcion Este segundo caso se generan falsas IRQ15 pero es muy raro Programacion del 8259 EditarEl 8259 acepta dos tipos de comandos generados por la CPU los ICW Inicialization Command Word que inicializan el 8259 y los OCW Operation Command Word que permiten programar la modalidad de funcionamiento Antes de que los 8259 de un sistema comiencen a trabajar deben recibir una secuencia de ICW que los inicialice Los ICW y OCW constan de secuencias de 2 a 4 comandos consecutivos que el 8259 espera recibir secuencialmente unos tras otros a traves del bus de datos segun sea necesario el propio 8259 se encarga de contarlos midiendo los pulsos de la linea WR Los OCW pueden ser enviados en cualquier momento una vez realizada la inicializacion La comunicacion con el 8259 emplea las lineas WR y RW asi como A0 El hecho de que exista una sola linea de direcciones implica que el 8259 solo ocupa dos direcciones de puerto de E S en el espacio de entrada y salida del ordenador ICWS Initialization Command Words Editar En este apartado analizamos las diferentes secuencias de inicializacion que podemos introducir al 8259 para su posterior funcionamiento ICW1 En esta primera orden de inicializacion reseteamos el estado del 8259 y especificamos algunas caracteristicas tales como si empleamos vectores de interrupcion o especificamos las direcciones de comienzo de la RSI lo cual depende de si estamos utilizando un 8086 u 8080 8085 como procesador Tambien indicaremos si las interrupciones seran activadas por flanco o bien por nivel En caso de utilizar un 8080 8085 tendremos que indicar si el intervalo entre dos RSIs es de 4 u 8 bytes Indicaremos si tenemos un unico 8259 conectado a los distintos perifericos o si por el contrario utilizamos varios 8259 en cascada para ampliar el numero de peticiones de interrupcion que podemos tratar modo cascada Finalmente tendremos que especificar si enviaremos una cuarta senal de inicializacion que tiene algunas configuraciones iniciales interesantes como ya veremos en ICW4 ICW2 Con este comando de configuracion nos permite fijar los distintos vectores de interrupcion para cada linea de peticion de interrupcion cada nivel de prioridad ICW3 Esta sentencia de inicializacion solo se especificara en caso de que en ICW1 hayamos indicado que estamos trabajando con varios 8259 en cascada en otro caso no sera necesario su especificacion Con este comando configuraremos cada 8259 indicando quien es el maestro a este se le especificaran que lineas de peticion de interrupcion tiene ocupadas con otros 8259 que seran los esclavos Para especificar que un 8259 es maestro bastara con poner a 1 la senal SP EN o bien tener las senales BUF 1 y M S 1 en caso de que queramos abrir el bufer triestado para comunicarnos con el bus de datos A cada esclavo habra que indicarle que numero identificativo tiene y este se corresponde con el numero de la patilla con el que se conecta al maestro ICW4 Permite realizar algunas configuraciones importantes sobre el 8259 pero estas solo se tendran que especificar si en ICW1 indicamos que se enviaria este comando de configuracion Permite configurar un fin de interrupcion automatico esto es no se tendra que especificar la orden EOI cada vez que acabemos de procesar una interrupcion Tambien nos permite habilitar los bufer triestado que se comunican con el bus de datos pero en caso de usar esta configuracion si tenemos varios 8259 conectados en cascada deberemos indicar mediante la senal M S quienes son esclavos y quien es el maestro Por ultimo se nos permite tambien especificar al 8259 que queremos que funcione en modo completamente anidado especial y esto es interesante cuando tenemos una conexion en cascada de varios 8259 ya que en el modo normal si un esclavo recibe una determinada peticion se quedara bloqueado hasta que termine su procesamiento independientemente de que llegue otra mas prioritaria En el caso del modo especial este defecto se subsana permitiendo que otras mas prioritarias puedan interrumpir la actual en curso OCWS Operation Command Words Editar Se le especifican al 8259 para configurar algunos aspectos tras la inicializacion del mismo entre estos podemos destacar Configuracion del registro de mascara Fijar la prioridad o establecer un turno rotatorio de prioridades Especificar el modo de EOI Escribir ordenes de polling o bien configurar el dispositivo en modo de mascara especialA continuacion comenzaremos a detallar las distintas OCWS que podemos especificar al 8259 para terminar de configurar su modo de funcionamiento OCW1 Con este comando se especifican cada uno de los valores de los bits del registro de mascara IMR El bit mas significativo esta fijado a 1 Recordemos que si un bit del IMR esta a 1 significa que las interrupciones asociadas a dicho nivel de prioridad quedaran inhibidas OCW2 Nos permite configurar el modo de finalizacion de interrupcion es decir si queremos emplear un EOI especifico hay que indicar que interrupcion hemos tratado o no especifico no hace falta especificar que interrupcion ha finalizado ya que se tratara de la mas prioritaria que este activa en ese momento Hay que tener en cuenta que esto solo podra establecerse si en la etapa de inicializacion no especificamos un fin de interrupcion automatico AEOI Asi mismo dedica algunos bits para decidir la politica de prioridad que aplicaremos en las interrupciones por ejemplo si especificaremos cual es la menos prioritaria o bien estableceremos un turno rotatorio de prioridades de tal manera que al finalizar el tratamiento de una interrupcion su linea asociada pasara a ser la menos prioritaria la siguiente a esta sera la mas prioritaria y asi se iran estableciendo todas las prioridades por ejemplo supongamos que tenemos 5 lineas de interrupcion 0 1 2 3 4 siendo la 0 la mas prioritaria Supongamos ademas que tenemos establecido una rotacion de prioridades automatica y consideremos que se produce una peticion por la linea 2 Una vez que la CPU trate dicha interrupcion la linea 2 pasara a ser la menos prioritaria y las prioridades quedarian de la siguiente manera 3 4 1 2 siendo la 3 la mas prioritaria El bit mas significativo de la palabra de control esta fijado a 0 OCW3 Esta ultima palabra de control sirve para especificar si el 8259 funcionara en modo de mascara especial o usando polling y nos permite ademas leer todos los registros internos IMR ISR IRR Podemos configurar al 8259 para que trabaje en modo de mascara especial es decir el dispositivo no considerara niveles de prioridad simplemente aplicara como restriccion los bits del registro de mascara pero a otros efectos los niveles tienen la misma prioridad Por otro lado se nos permite especificarle al 8259 que queremos que trabaje con senales de polling de esta manera el dispositivo no generara senales de interrupcion a la CPU si no que pondra en el bus de datos si hay alguna interrupcion pendiente y tambien especificara cual es el nivel mas prioritario que la solicita Por ultimo esta palabra de control nos permite consultar el contenido de los registros internos lo cual puede ser interesante a la hora de emplear tecnicas de sondeo PC XT y PC AT EditarEl sistema PC XT tiene un controlador 8259 mientras PC AT y sistemas posteriores disponen de dos controladores 8259 maestro esclavo Desde IRQ0 hasta IRQ7 son las lineas de interrupcion maestro del 8259 y desde la IRQ8 hasta IRQ15 las lineas de interrupcion esclavo Los nombres reales de las patillas del 8259 son desde la IR0 hasta la IR7 IRQ0 hasta IRQ15 se anadieron posteriormente siendo los nombres de las lineas del bus ISA Maestro 8259 IRQ0 Intel 8253 o Intel 8254 del temporizador de intervalos programable tambien conocido como temporizador del sistema IRQ1 Intel 8042 teclado controlador IRQ2 no se haya asignado en el PC XT esclavo en cascada para 8259 la linea INT en el PC AT IRQ3 8250 UART puerto serie COM2 y COM4 IRQ4 8250 puerto UART serie COM1 y COM3 IRQ5 controlador de disco duro en el PC XT Intel 8255 en paralelo LPT2 puerto en el PC AT IRQ6 82072A Intel controlador de disquete IRQ7 Intel 8255 de puerto paralelo LPT1 interrupcion falsaEsclavo 8259 PC AT y posteriores IRQ8 reloj en tiempo real RTC IRQ9 sin asignacion comun IRQ10 sin asignacion comun IRQ11 sin asignacion comun IRQ12 Intel 8042 PS 2 controlador del raton IRQ13 coprocesador IRQ14 controlador de disco duro 1 IRQ15 controlador de disco duro 2Inicialmente IRQ7 fue una opcion comun para el uso de una tarjeta de sonido pero mas tarde IRQ5 se utilizo cuando se constato que IRQ7 podria interferir con el puerto de impresora LPT1 Los puertos serie son con frecuencia con discapacidad a una linea de IRQ libre para otro dispositivo IRQ2 9 es la linea tradicional de interrupcion para un puerto MPU 401 MIDI pero esto entra en conflicto con el control del sistema ACPI de interrupcion SCI se cablea directamente al IRQ9 en los chipsets Intel lo que significa ISA MPU 401 tarjetas con un cableado IRQ 2 9 y los conductores MPU 401 con un dispositivo codificado IRQ 2 9 no se puede utilizar en el modo controlado por interrupciones en un sistema con ACPI habilitado Vease tambien EditarControlador programable de interrupciones APIC Advanced Programmable Interrupt Controller Arquitectura Intel APIC Manejador de Interrupciones Latencia de interrupcciones NMI Non maskable interrupt PIC Programmable Interrupt Controller Llamadas de interrupcion del BIOSIBM PC Primer computador personal de IBM Intel 8086 y 8088 Primeros microprocesadores de la arquitectura x86 Intel 8284 Generador de reloj Intel 8282 Octal Latch Intel 8286 Octal Bus Transceiver Intel 8288 Controlador de bus Intel 8289 Arbitro de bus Intel 8237 Controlador programable de DMA Intel 8253 Temporizador programable de intervalos PIT Intel 8250 UART Comunicaciones seriales RS 232 Intel 8255 Interface programable de perifericos PPI Intel 8089 Coprocesador de entrada salidaReferencias Editar a b Intel 1988 p 1 Garcia de Celis 1994 Bibliografia Editar Garcia de Celis Ciriaco 1994 12 4 El controlador de interrupciones 8259 El universo digital del IBM PC AT y PS 2 4ª edicion Facultad de Ciencias de Valladolid Grupo Universitario de Informatica Intel 1988 8259A Programable Interrupt Controller en ingles Hoja de datos Enlaces externos Editar8259A Programmable Interrupt Controller http atc ugr es docencia udigital 1204 html http wiki osdev org PIC Datos Q1547313 Obtenido de https es wikipedia org w index php title Intel 8259 amp oldid 120213320, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos