¿Interrumpe la dirección del vector en el contador del programa?

0

La segunda imagen ilustra el proceso de entrada de servicio de interrupción en ARM TM123GH6PM (usando el puerto C de GPIO como ejemplo), como ve, tomó la dirección vectorial del controlador del puerto C y la puso en la PC (puede saber que es la Dirección vectorial del controlador del puerto C de la primera imagen).

¿No se supone que la PC debe contener el valor de la dirección del manejador del puerto C? ¿O primero guarda la dirección vectorial y luego, cuando recupera la dirección del controlador del puerto C, cambia la PC a la dirección del controlador del puerto C?

    
pregunta Mohamed EL Tair

2 respuestas

3

La PC nunca se carga con el valor 0x00000048. La segunda imagen muestra

PC = {0x00000048}

que es su manera de decir (usando los caracteres {y}) que la PC está cargada con el contenido de la ubicación de memoria 0x00000048. El resultado es que el procesador salta directamente al inicio de su rutina de servicio.

También es por eso que la primera imagen muestra "Ubicación del vector" en la parte superior de la columna en lugar de "Dirección del manejador" o algo similar.

Por cierto, el número de pieza correcto completo para su dispositivo es TM4C123GH6PM.

Puede encontrar la hoja de datos del fabricante aquí .

    
respondido por el Finbarr
0

No obtengo coincidencias exactas buscando su número de referencia, pero parece estar basado en Cortex-M4. Esta es la arquitectura ARMv7M, donde la tabla vectorial es una lista de direcciones (no una instrucción para ejecutar como en el modelo de excepción ARM clásico).

El valor en 0x00000048 se cargará (mediante el NVIC) y se utilizará como valor de PC. Sus imágenes no muestran el controlador de interrupción real. Tenga en cuenta que los vectores deben tener el bit [0] establecido (esto se usa como bit T cuando se carga la PC, y este núcleo solo puede ejecutarse en estado Thumb).

Hasta el momento en que se haya recuperado la instrucción señalada por el valor en 0x00000048, la interrupción se puede anticipar potencialmente por otra interrupción de prioridad más alta.

    
respondido por el Sean Houlihane

Lea otras preguntas en las etiquetas