Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
In short: in which cases can be a FIQ interrupt raised and __CyU3PFiqHandler called?
Today I observe strange firmware freeze. I connect JTAG to the my board and stop CPU. At the stack trace I see that code execution point is located in the __CyU3PFiqHandler handler. I looked to the it implementation in the cyu3entry_gcc.S and found that it is a simple infinity loop. Also next comment confuse me:
"The following exceptions are not expected to occur on this setup. The handlers are left in place for completion."
And __CyU3PFiqHandler implementation:
.global __CyU3PFiqHandler __CyU3PFiqHandler: b __CyU3PFiqHandler
If I correctly understand, if Fast interrupt is happens, then all IRQ and FIQ interrupts is masked. In SDK code the FIQ interrupt handler never finishes, therefore system totally freezed.
And I don't understand what is cause of the FIQ interrupt.