FIQ interrupts on LP23xx
Hi!
I’d like to ask a techincal a question.
I’m using a Philips LPC2378 microcontroller, which has a separate register set for handling FIQ interrupts.
Does it mean, that this makes context saving upon entry unnecessary, so I needn’t (and shouldn’t) use portSAVE_CONTEXT(), and portRESTORE_CONTEXT() upon entry, and exit from the interrupt handler?
Or are there parts of the context that still need to be saved?
Is it safe to call FreeRTOS functions from such a ‘plain’ FIQ interrupt?
Btw, what’s the difference between the portSAVE/RESTORE combo and using GCC’s builtin __attribute("IRQ"/"FIQ")__ function attributes?
FIQ interrupts on LP23xx
Best not to call API function from the FIQ, and use the standard GCC method of entering the function, not the portSAVE/RESTORE_CONTEXT macros.
You might like to check the implementation of the portENTER_CRITICAL() and portEXIT_CRITICAL() macros to ensure they don’t disable and enable FIQ interrupts – unless you want them to.
The __attribute__ method does not save the entire context, often contains bugs (depending on the GCC version) and does not save the context in the form expected by the kernel.
Regards.