In the RT1061(cortex M7) SDK, there are __DSB() in every interrupt handler last position. The S32K344 is cortex M7, but the S32K344 SDK didn't add __DSB() in the interrupt, why not??
RT106x SDK :
* ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlapping
* exception return operation might vector to incorrect interrupt.
* For Cortex-M7, if core speed much faster than peripheral register write speed,
* the peripheral interrupt flags may be still set after exiting ISR, this results to
* the same error similar with errata 83869.
*/
#if (defined __CORTEX_M) && ((__CORTEX_M == 4U) || (__CORTEX_M == 7U))
#define SDK_ISR_EXIT_BARRIER __DSB()
#else
#define SDK_ISR_EXIT_BARRIER
#endif
void CAN0_DriverIRQHandler(void)
{
assert(NULL != s_flexcanHandle[0]);
s_flexcanIsr(CAN0, s_flexcanHandle[0]);
SDK_ISR_EXIT_BARRIER;
}
Due to limited resources, we are currently unable to support customers writing from generic email accounts such as gmail.com or qq.com or similar. Please ensure that you use your company email address when communicating with NXP so that we can prioritize your question accordingly. Thank you for your understanding.
Regards,
Daniel