Controlador de interrupción vectorial anidado (NVIC): ¿por qué está "anidado" y "vectorizado"?

En los microcontroladores ARM existe un periférico llamado NVIC
( N ested V ectored I nterrupt C ontroller).

¿A qué se refiere la parte "anidada" y "vectorizada", o por qué está "anidada" y "vectorizada"?

Respuestas (2)

En los viejos tiempos, una CPU tendría una, o tal vez dos líneas de interrupción. Tal vez uno sería Interrupción no modificable para cosas críticas, el otro compartido para todo .

En este caso, se usaría un periférico externo o simplemente un software que verifica 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 controlador de interrupción es importante, por lo que se introdujeron los controladores de interrupción vectorial para proporcionar la dirección correcta directamente al procesador, ahorrando algunas instrucciones.

La parte anidada permite habilitar y asignar prioridades a muchas interrupciones. Esto garantiza automáticamente que una vez que se inicia un controlador de interrupción, 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 el push/pop de la pila se maneja arquitectónicamente en lugar de software, las excepciones consecutivas pueden omitir una secuencia pop/push redundante, pero esto no tiene nada que ver con el anidado o descripciones vectoriales. Dos excepciones en el mismo nivel de preferencia se encadenarían, si tuviera tres al mismo tiempo, podría elegir el orden de inicio sin tener que preocuparse de que una de ellas detenga un controlador que ya se está ejecutando.

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

Anidado tiene que ver con permitir que se atiendan las interrupciones mientras otros ISR se ejecutan como lo describe nxp en AN3496.pdf

2.1 Requisitos de las interrupciones anidadas

En un sistema de interrupción anidado, se permite que una interrupción [ocurra] en cualquier momento y en cualquier lugar, incluso [cuando] se está ejecutando una ISR. Pero, solo el ISR de mayor prioridad se ejecutará de inmediato. El segundo ISR de mayor prioridad se ejecutará después de que se complete el de mayor prioridad. Las reglas de un sistema de interrupción anidado 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 una ISR de baja prioridad es interrumpida por una interrupción de alta prioridad, se ejecuta la ISR de alta prioridad.

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

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

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

"Vectorizado" a diferencia de la forma en que ARM solía hacer interrupciones, saltando directamente al vector de interrupción, que luego contendría una instrucción de bifurcación.