Hi Eugene,
Yes, The IN03P errata from this link:
https://www.nxp.com/docs/en/errata/KINETIS_K_1N03P.pdf
is the latest document.
The relate item is e9005, actually, it is the ARM errata 838869, you also can check the ARM core website.
About the workaround code, you totally can refer to the SDK K82 code, that code driver already add the DSB, take an example:
void LPUART0_LPUART1_TX_DriverIRQHandler(void)
{
if (CLOCK_isEnabledClock(s_lpuartClock[0]))
{
if ((LPUART_STAT_OR_MASK & LPUART0->STAT) ||
((LPUART0->STAT & LPUART_STAT_TDRE_MASK) && (LPUART0->CTRL & LPUART_CTRL_TIE_MASK)))
{
s_lpuartIsr(LPUART0, s_lpuartHandle[0]);
}
}
if (CLOCK_isEnabledClock(s_lpuartClock[1]))
{
if ((LPUART_STAT_OR_MASK & LPUART1->STAT) ||
((LPUART1->STAT & LPUART_STAT_TDRE_MASK) && (LPUART1->CTRL & LPUART_CTRL_TIE_MASK)))
{
s_lpuartIsr(LPUART1, s_lpuartHandle[1]);
}
}
/* Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F Store immediate overlapping
exception return operation might vector to incorrect interrupt */
#if defined __CORTEX_M && (__CORTEX_M == 4U)
__DSB();
#endif
}
Wish it helps you!
Have a great day,
Kerry
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------