Hi,
With TMS570LC, we have been experimenting with the delay of various kind of exceptions. The delay is defined by the distance between the instruction that caused the exception and the call to the exception vector (Reset, Undefined, Data Abort, Prefetch Abort, IRQ or FIQ). As expected, synchronous exceptions have a delay of zero. Most asynchronous exceptions (FIQ, async aborts, etc.) have a very small delay of 1 instruction. However, there are 2 types of exceptions were we observed huge delays:
1) FPU interrupts (IRQ)
2) Async data abort caused by a write to Flash (which is obviously not a good thing to do)
A delay of more than 100 nop instructions was observed!! This is a real issue because it means that if a task generates such an exception, the OS has time to complete the task, return to Privileged state and execute some OS internal code before the exception pops up. Our OS doesn't have the capability to handle exceptions within itself without killing the whole system. So a single task is able to bring the whole OS down! This effect in our OS hasn't been observed yet though.
I am writing this post so that you give us the maximum number of clock cycles of delay that each of these 2 exceptions can have. Or a mitigation mean that forces the processor to pop the exception. We are running the core that 300 MHz (GCLK) and the system at 150MHz (HCLK). If I am not wrong, VIM is on HCLK and hence also running 150MHz.
Thanks,
Etienne