Cálculo de vector de interrupción en controladores basados en PowerPC

2

Estoy trabajando con Freescale MPC5534 basado en el arco PowerPC. No puedo entender cómo se calcula la dirección de un ISR particular durante el tiempo de ejecución. Hay tres registros involucrados, INTC_IACKR, INTC_IVPR, INTC_IVOR, y el valor final del vector de interrupción correspondiente a un ISR particular se basa en los valores cargados en estos registros en el tiempo de ejecución, es decir, algunas dirección_básica + prefijo + desplazamiento De los tres registros, respectivamente.

Simplemente no puedo entender la conexión de estos tres valores y cómo se calcula el vector a partir del valor colectivo de todos estos registros.

Las personas que han trabajado en cualquier controlador basado en PowerPC podrían ayudar.

    
pregunta Soju T Varghese

2 respuestas

1

Nunca trabajé con PowerPC, pero de e200z3 Power Architecture ™ Manual de referencia principal , debería poder obtener una mejor comprensión.

Capturador 10 en El Manual de referencia del microcontrolador MPC5534 menciona este manual: Las interrupciones implementadas por la MCU se definen en el Manual de referencia del Core PowerPC e200z3.

IVPR

La sección 2.8.1.6 del Manual Básico de Referencia tiene esto que decir sobre el IVPR:

  

El IVPR, que se muestra en la Figura 2-16, se usa durante el procesamiento de interrupción para determinar la dirección de inicio para el controlador de interrupción de software. El valor contenido en el campo de desplazamiento vectorial del IVOR seleccionado para un tipo de interrupción en particular se concatena con el valor en el IVPR para formar una dirección de instrucción desde la cual se iniciará la ejecución.

Enumera los campos de bits de ese registro, de los cuales solo hay uno: Vector Base :

  

Define la ubicación base de la tabla vectorial, alineada con un límite de 64 Kbyte. Proporciona los 16 bits de orden superior de la ubicación de todos los manejadores de interrupciones. IVPR || Los valores IVORn se concatenan para formar la dirección del controlador en la memoria.

IVORn

  

Los IVOR, que se muestran en la Figura 2-17, contienen el índice de cuatro palabras de la dirección base proporcionada por el IVPR para cada tipo de interrupción.

Además, la sección 4.5 dice:

  

El valor en el campo de compensación vectorial del IVOR asignado al tipo de interrupción se concatena con el valor en IVPR para formar una dirección de instrucción en la que debe comenzar la ejecución.

Conclusión

Después de que la lógica de prioridad de interrupción haya decidido qué vector de interrupción activar, el contador del programa saltará a la dirección IVPR || IVORn .

Tenga en cuenta que cada interrupción solo tiene espacio para cuatro instrucciones, por lo tanto, si desea realizar un trabajo pesado, debe bifurcarse. Establecer una marca rápida o alternar un pin de E / S debería ser posible sin ramificaciones.

    
respondido por el pipe
0

Nunca trabajé con PowerPC, pero desde MPC5534 Microcontroller Reference Manual , INTC_IACKR contiene la dirección de la base de la tabla de vectores y el vector que causó la solicitud de interrupción al procesador. No encontré ninguna información relacionada con INTC_IVPR o INTC_IVOR.

La solicitud de interrupción que se enviará al procesador se determina mediante un "Árbitro de prioridad" que utiliza los registros INTC_PSR (selección de prioridad) e INTC_CPR (prioridad actual). Desearía consultar el Capítulo 10 para obtener más información.

    
respondido por el Vicente Cunha

Lea otras preguntas en las etiquetas