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))
     {

Reply via email to