Hello,
It's necessary to implement memory protection in our project and I started from example ( eim_injection_s32k116 ). Honestly, I'm a little bite confuse. I didn't understand how it's work EIM Module and what represent this structure:
typedef struct
{
uint8_t channel; /*!< EIM channel number */
uint8_t checkBitMask; /*!< Specifies whether the corresponding bit of the check-bit bus
from the target RAM should be inverted or remain unmodified */
uint32_t dataMask; /*!< Specifies whether the corresponding bit of the read data bus
from the target RAM should be inverted or remain unmodified */
bool enable; /*!< true : EIM channel operation is enabled
false : EIM channel operation is disabled */
} eim_user_channel_config_t;
In project is used one address ( /* Initialize address used to test */ ). How impact this address EIM and ERM module? I know that ERM_DRV_GetErrorDetail() return this address like error but how and why?
Also, ERM Module on S32K116 is just for SRAM_U Memory. How I can detect error on ROM and NVM ?
Thank you in advance,
Catalin Stiuca
Hi, ERM modules invert certain line on the data bus, causing erratic read of certain address. It is needed to choose the channel fitting to address range of target memory where an ECC error is injected. EIM only use RAM arrays (on some other devices it can be local RAM arrays as FEC or DMA).
According S32K safety manual, flash ECC error are detected by flash controller:
Hope it helps a bit