S32K144 SRAM injects double-bit error trigers single fault handler

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

S32K144 SRAM injects double-bit error trigers single fault handler

592 Views
n00b123
Contributor II

Hi,

I am using Error inject Module to inject double-bit to SRAM_L,and many strange bugs have occurred:

1:When I inject double-bit error to SRAML,sometimes it cannot trigger double-bit error but single-bit error and enters single fault handler!And reset is useless it just keeps going into single fault handler.The solution is to restart the computer or inject the single-bit error to SRAML again after injecting double-bit error to SRAML:

``

 /* SRAM_L */
            EIM->EICHDn[0].WORD0 = 0x00000000;  /* CHKBIT[31-25] remain unmodified */

            EIM->EICHDn[0].WORD1 = 0x00000001;  /* B0_3DATA_MASK[0] bits of the read data bus are inverted */
            EIM->EICHEN |= EIM_EICHEN_EICH0EN_MASK;  /* Error Injection Channel 0 Enable (SRAM_L)*/

            EIM->EIMCR |= EIM_EIMCR_GEIEN_MASK;      /* Global Error Injection Enable */
            (void)EIM->EIMCR;                        /* Read-after_write */

            Gu32_FS_read = *(uint32_t*)0x1FFFFFF0;
``
2:The second bug is that sometimes I cannot trigger singe fault handler, and I have enable the status and control register:
``
//ERM status register
    ERM->SR0 = ERM_SR0_SBC0_MASK | /*SRAM_L Single-bit Correction flag*/
               ERM_SR0_NCE0_MASK; /*SRAM_L Non-Correctable Error flag*/
             
//  ERM CR
    ERM->CR0 = ERM_CR0_ESCIE0_MASK | /*Enable SRAM_L Single Correction Interrupt Notification*/
               ERM_CR0_ENCIE0_MASK; /*Enable SRAM_L Non-Correctable Interrupt Notification*/
``
0 Kudos
Reply
3 Replies

553 Views
danielmartynek
NXP TechSupport
NXP TechSupport

Hi @n00b123,

Can you modify the example below so that you can reproduce the issue with it and share it here?

https://community.nxp.com/t5/S32K-Knowledge-Base/Example-S32K14x-SRAM-ECC-Injection/ta-p/1129181

 

Thanks,

Daniel

0 Kudos
Reply

546 Views
n00b123
Contributor II

Yeah, I have modified the code from your example but I do not use your link files and startup code instead of  Project Hello World of S32DS(SRAM_ECC.zip), I inject the double-bit and single-bit error to SRAML at the same time, but this cannot reproduce the issue.Instead when I port the code to my project,the issue will be reprodeced,sometimes the bug is Injecting double-bit error but trigers single fault ISR or Injecting double-bit error trigers double fault ISR normally but injecting single-bit error cannot triger single fault ISR ,I have made my ECC injecting code identical to the example so I doubt that is the different link files or startup code cause the issue,see attachments(MyprojectsLinkerFilesAndStartupCode.zip)

0 Kudos
Reply

505 Views
danielmartynek
NXP TechSupport
NXP TechSupport

I believe I address that in the description of the example:

The default S32 Design Studio start_up file copies the vector table to the SRAM_L region.
To be able to inject ECC errors in this SRAM region and call the interrupts,
the copying is disabled by __flash_vector_table__ symbol declared in the start_up.h file and defined in the S32K144_64_flash linker file.

Regards,

Daniel

0 Kudos
Reply