Controlador de interrupción con vector anidado (NVIC): ¿Por qué está "anidado" y "vectorizado"?

2

En los microcontroladores ARM hay un periférico llamado NVIC
( N está V ectado I nterrupt C ontroller).

¿A qué se refieren las partes "anidadas" y "vectorizadas", o por qué están "anidadas" y "vectorizadas"?

    
pregunta m00wn

2 respuestas

7

En los viejos tiempos, una CPU tendría una o tal vez dos líneas de interrupción. Tal vez uno sea N en M y que se pueda pedir I para interrumpir las cosas críticas, la otra compartida para todo.

En este caso, se utilizaría un periférico externo o solo un software que comprueba muchos registros de estado para determinar la causa de la interrupción y buscar la ubicación del controlador relevante.

Particularmente en un sistema en tiempo real, el tiempo para llegar a la primera instrucción real de un manejador de interrupciones es importante, por lo que V se selecciona I nterrupt C

La parte anidada permite habilitar muchas interrupciones y asignar prioridades. Esto garantiza automáticamente que una vez que se inicia un controlador de interrupciones, no será interrumpido por una nueva solicitud, a menos que esa solicitud sea aún más importante. Esto evita muchas de las complicaciones relacionadas con habilitar y deshabilitar interrupciones específicas que podrían lograr lo mismo.

Una característica final de las arquitecturas de clase M es que, dado que la pila push / pop se maneja arquitectónicamente en lugar de en el software, las excepciones back to back pueden omitir una secuencia pop / push redundante, pero esto no tiene nada que ver con Las descripciones anidadas o vectorizadas. Dos excepciones en el mismo nivel de preferencia se trasladarían a la cadena, si tuviera tres al mismo tiempo, podría elegir el orden de inicio sin tener que preocuparse de que uno de ellos detenga un controlador que ya se está ejecutando.

    
respondido por el Sean Houlihane
3

Busque los términos "interrupción anidada" y "interrupción vectorial".

Nested tiene que ver con permitir que las interrupciones sean atendidas mientras otros ISR se están ejecutando según lo descrito por nxp en AN3496.pdf

  

2.1 Requisitos de interrupciones anidadas

     

En un sistema de interrupción anidado, se permite una interrupción en cualquier momento y en cualquier lugar, incluso un ISR se está ejecutando. Pero, solo la ISR de mayor prioridad será ejecutada inmediatamente. El segundo ISR de prioridad más alta se ejecutará después de que se complete el más alto.   Las reglas de un sistema de interrupciones anidadas son:

     

• Todas las interrupciones deben tener prioridad.

     

• Después de la inicialización, cualquier interrupción puede ocurrir en cualquier momento y en cualquier lugar.

     

• Si se interrumpe un ISR de baja prioridad por una interrupción de alta prioridad, se ejecuta el ISR de alta prioridad.

     

• Si un ISR de alta prioridad es interrumpido por una interrupción de baja prioridad, la alta   La prioridad ISR continúa ejecutándose.

     

• Los ISR de prioridad deben ejecutarse por orden de tiempo.

"Interrupción vectorial" solo significa que hay un puntero a un ISR

    
respondido por el CapnJJ

Lea otras preguntas en las etiquetas