Interrupciones preventivas y "cambio de contexto"

3

En RTOS, cuando una tarea de mayor prioridad se convierte en Listo para ejecutarse , detiene o anticipa la tarea que se está ejecutando (prioridad más baja) y comienza a ejecutarse. Antes de cambiar de tarea, RTOS guarda los datos requeridos relacionados con la tarea de prioridad más baja (Cambio de contexto)

A mi pregunta, Al igual que las tareas, las interrupciones también tienen prioridades. Cuando se ejecuta una interrupción de prioridad más baja y se produce una interrupción de prioridad más alta, ¿qué sucede? ¿Almacena todos los datos en Stack, etc. al igual que RTOS? ¿Qué pasará con mis variables utilizadas en ISR?

(Tenga en cuenta que este escenario también es posible en una aplicación no basada en RTOS)

    
pregunta Swanand

2 respuestas

4

Esto es básicamente completamente plataforma y dependiente del compilador. Algunas MCU / CPU tienen hardware para guardar parte o parte de la pila, otras no.

Además, el almacenamiento / carga de la pila está determinado por el compilador en algunas plataformas. Al menos en xmega MCU de atmel, el ahorro de contexto depende del código, en lugar del hardware. Por lo tanto, puede escribir ISRs desnudos que podrían muck con el contexto anterior sin demasiados problemas.

Básicamente, no hay una regla general aparte de "leer los documentos de la CPU en cuestión".

    
respondido por el Connor Wolf
0

Suponiendo que la CPU admite interrupciones anidadas, y las interrupciones anidadas están habilitadas, y la interrupción de prioridad más alta está habilitada, cuando se activa la interrupción de prioridad más alta, el comportamiento de la CPU será exactamente el que usted esperaría: el contexto de la CPU se colocará en la pila y el punto de ejecución saltará al nuevo vector de interrupción. Cuando se complete la interrupción de mayor prioridad, el contexto de la CPU se recuperará de la pila y el punto de ejecución volverá a donde estaba en la interrupción de baja prioridad.

    
respondido por el markt

Lea otras preguntas en las etiquetas