Pregunta

Hola actualmente estoy trabajando con un AT91SAM7X256 que se ejecuta en "bare metal".Yo he leído la hoja de datos así como la arquitectura de manual, con eso en mente me quedé con la conclusión de que el FIQ es mayor prioridad que las Irq, por tanto, FIQs no debe ser adelantado por Irq

Sin embargo, en la práctica, me doy cuenta de la Irq de suspender la ejecución de mi FIQ controlador, aunque yo no soy de tocar el F bits en la CPSR.Es incorrecto asumir que FIQs no debe ser suspendida para el servicio de Irq?

¿Qué debo hacer para asegurarme de que mi FIQ rutina de servicio no se interrumpe?

Gracias

¿Fue útil?

Solución

Cuando se introduce una FIQ controlador de núcleo ARM desactiva automáticamente más interrupciones, tanto FIQ y de IRQ, mediante el establecimiento de la 'I' y 'F' bits en la CPSR.Esto le da a usted una sensación de que nada puede adelantarse un FIQ.Pero SW puede anular este comportamiento!Así que supongo que alguna parte de su código es el que toca la CPSR y el restablecimiento de la 'I' de bits.Y, por tanto, las interrupciones IRQ podría llegar activa incluso cuando la FIQ se está ejecutando.

Para agregar a la anterior explicación, la razón FIQs parecen de especial es que cuando una IRQ controlador se escribe sólo el 'yo' está establecido el bit no sólo inhabilitando más Irq.'F' bit está establecido en no y, por tanto, más FIQs puede interrumpir la ejecución de IRQ controlador sin la necesidad de SW de intervención.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top