This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new b4b7710c63 Disable interrupt during FTFC operation
b4b7710c63 is described below
commit b4b7710c63822e63085bd0afba3eaaec90223a80
Author: Sammy Tran <[email protected]>
AuthorDate: Tue Mar 5 14:46:48 2024 -0500
Disable interrupt during FTFC operation
---
arch/arm/src/s32k1xx/s32k1xx_progmem.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/src/s32k1xx/s32k1xx_progmem.c
b/arch/arm/src/s32k1xx/s32k1xx_progmem.c
index c1ac94f090..70d8c007cd 100644
--- a/arch/arm/src/s32k1xx/s32k1xx_progmem.c
+++ b/arch/arm/src/s32k1xx/s32k1xx_progmem.c
@@ -77,6 +77,13 @@ static uint32_t execute_ftfc_command(void)
uint8_t regval;
uint32_t retval;
+ /* AN12003: only one FlexNVM operation can be executed at a time.
+ * Disable ISR during this time so an ISR doesn't cause a hardfault
+ * from a simultaneous read.
+ */
+
+ irqstate_t flags = enter_critical_section();
+
/* Clear CCIF to launch command */
regval = getreg8(S32K1XX_FTFC_FSTAT);
@@ -87,6 +94,8 @@ static uint32_t execute_ftfc_command(void)
retval = getreg8(S32K1XX_FTFC_FSTAT);
+ leave_critical_section(flags);
+
if (retval & (FTTC_FSTAT_MGSTAT0 | FTTC_FSTAT_FPVIOL |
FTTC_FSTAT_ACCERR | FTTC_FSTAT_RDCOLERR))
{