stringtranslate.com

Tabla de vectores de interrupción

Una tabla de vectores de interrupción ( IVT ) es una estructura de datos que asocia una lista de controladores de interrupciones con una lista de solicitudes de interrupción en una tabla de vectores de interrupción. Cada entrada de la tabla de vectores de interrupciones, denominada vector de interrupciones, es la dirección de un controlador de interrupciones (también conocido como ISR ). Si bien el concepto es común en todas las arquitecturas de procesadores, los IVT pueden implementarse en formas específicas de la arquitectura. Por ejemplo, una tabla de despacho es un método para implementar una tabla de vectores de interrupción.

Fondo

La mayoría de los procesadores tienen una tabla de vectores de interrupción, incluidos chips de Intel , AMD , Infineon , Microchip [1] Atmel , [2] NXP, ARM [3] [4] , etc.

Manejadores de interrupciones

Métodos de manipulación

Se utiliza una tabla de vectores de interrupción en los tres métodos más populares para encontrar la dirección inicial de la rutina del servicio de interrupción:

"Predefinido"

El método "predefinido" carga el contador del programa (PC) directamente con la dirección de alguna entrada dentro de la tabla de vectores de interrupción. La propia tabla de salto contiene código ejecutable. Si bien en principio un controlador de interrupciones extremadamente corto podría almacenarse completamente dentro de la tabla de vectores de interrupciones, en la práctica el código en cada entrada es una única instrucción de salto que salta a la rutina de servicio de interrupción (ISR) completa para esa interrupción. El Intel 8080 , [5] Atmel AVR [6] [7] y todos los microcontroladores 8051 y Microchip [8] utilizan el enfoque predefinido.

"Buscar"

El método "fetch" carga la PC indirectamente, usando la dirección de alguna entrada dentro de la tabla de vectores de interrupción para extraer una dirección de esa tabla y luego cargando la PC con esa dirección. [8] Todas y cada una de las entradas del IVT son la dirección de una rutina de servicio de interrupción. Todos los microcontroladores Motorola/Freescale utilizan el método de búsqueda. [8]

"Reconocimiento de interrupción"

Para el método de "reconocimiento de interrupción", el dispositivo externo proporciona a la CPU un número de controlador de interrupción. El método de reconocimiento de interrupción lo utilizan el Intel Pentium y muchos microprocesadores más antiguos. [8]

Cuando la CPU se ve afectada por una interrupción , busca el controlador de interrupciones en la tabla de vectores de interrupciones y le transfiere el control.

Ver también

Referencias

  1. ^ Sección 29.1.1 del "Manual de referencia de la familia dsPIC33F" Tabla de vectores de interrupción
  2. ^ Sección "Manual del usuario de AVR Libc": Introducción al manejo de interrupciones de avr-libc
  3. ^ "Documentación: desarrollador de Arm". desarrollador.arm.com . Consultado el 26 de julio de 2020 .
  4. ^ "Documentación - Arm Developer - Tabla de vectores de excepción AArch64". desarrollador.arm.com . Consultado el 26 de julio de 2020 .
  5. ^ Manual del usuario de los sistemas de microcomputadoras Intel 8080 . Corporación Intel. Septiembre de 1975. págs. 2-11 Secuencias de interrupción. OCLC  2058546. OL  24210843M.
  6. ^ Roger L. Traylor. "Interrupciones: servicio de interrupción AVR"
  7. ^ Gary Hill. "Subsistemas de temporización e interrupción Atmel AVR: tabla de vectores de interrupción ATMEGA328P"
  8. ^ abcd Huang, Han-Wat (2005). Pic Microcontrolador: Introducción a la interfaz de software y hardware. Aprendizaje Cengage. pag. 247.ISBN 978-1-4018-3967-3. Consultado el 22 de abril de 2013 .

enlaces externos