I was reading EIM in MPC5777C Reference manual and as per figure 17-1 it was my understanding that EIM acts between RAM and the module and if enabled simply inverts the bit and sends it to the module rather than changing the bit in the RAM memory. therefore if EIM was disabled it would send the data as it is was without inverting.
But then i saw the following example MPC5777C-1b+2b_RAM_ECC_error_injection GHS614 and i have a few questions from it
Q1 In the Function ERM_combined_isr() we first disable EIM and then get the source of error and fix it, Wont disabling the EIM module automatically fix the error caused by EIM error injection?
Q2. When we do read operation test_read = test; it invokes the IVOR1 exception and goes to machine check handler which then invokes Fix_1bit_error_RAM_data() where read and write back is happening. My question is shouldn't the instruction test_temporary = test; in Fix_1bit_error_RAM_data() again raise an IVOR1 exception? Assuming EIM was not used to inject an error and there was an actual 1 bit error in test.
Q3. in Fix_2bit_error_RAM_data() are we just overwriting the corrupted data with a random data ? is there something else that's happening since 2 bit error cant be fixed.
Q4. Do i need to keep the interrupts enabled in ERM as the errors generated by EIM is already handled by IVOR1 do we need the interrupt from IVOR4? was this done for some reason?
link to example https://community.nxp.com/docs/DOC-328097