Other Parts Discussed in Thread: TMS570LS3137
Back with the FLASH ECC issue.
We have just discovered a weird behaviour when injecting faults in the FLASH ECC (not the FLASH itself, but in the ECC data) through the Linker option --ecc:ecc_error.
My expectation was that the ESM would notify if 1 error detected and corrected or 2 errors (or more) detected. But the behaviour is completely dependant on the error mask.
We have tried these masks (hex values), and obtained the following results:
01 -> No Flag (assumed corrected, no way to detect it)
02 -> No Flag (assumed corrected, no way to detect it)
03 -> Flagged
07 -> Flagged
0a -> Flagged
0f -> Flagged
1a -> No Flag
2a -> No Flag
30 -> DAbort
aa -> DAbort
af -> Flagged
ea -> DAbort
f1 -> No Flag
fa -> DAbort
ff -> Flagged
"Flagged" means ESM Group 2, channel 3 flag becomes "1".
I may assume that ESM group 2, channel 3 only gets flagged when more than 1 bit is wrong. But I don't understand when the DABORT is trigered, and even less why a "03" mask and a "30" mask produce different behaviour, when both are introducing 2 wrong bits.
Does anybody know the answer or is able to point us to the right documentation to explain how the ECC module works? I've seen in the manual "The Cortex R5F CPU may generate speculative fetches to any location within the Flash memory space.A speculative fetch to a location with invalid ECC, which is subsequently not used, will not create an abort, but will set the ESM flags for a correctable or uncorrectable error", but we are injecting the error always in the same place, which gets executed, so that does not sound like a reasonable explanation.
Thank you in advance.