This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

RM48L530: Speculative Fetch with ECC enabled

Part Number: RM48L530


We enabled the ECC in bootloader and application, these days we have ESM group 3 channel 7 error(FMC uncorrectable error). We checked this link By fully programmed the whole ROM (with IAR IDE I used "linker->checksum->fill pattern 0xFFFFFFFF, fill ADDRESS from 0 to 0x001FFFFF") , we see this uncorrectable is gone. But one of my colleagues still catch the group 1 channel 6 error (FMC correctable error). We don't understand why he still get the error after filling the whole ROM.



  • Another thing we saw is we tried different fill patterns to see if it helps. finally we used the same setting of ->fill pattern 0xFFFFFFFF one more time. My colleague doesn't have FMC error anymore. now I wonder if this is the final solution, or the problem will come back again in future.
  • Hello Tracy,

    On RM48L530 device, Flash error detection and correction (SECDED) is not enabled at reset. The ECC values for all of the flash memory space (flash banks 0 through 6) must be programmed into the flash before SECDED is enabled.

    A speculative fetch to a location with invalid ECC, which is subsequently not used, will set the ESM flags for a correctable or uncorrectable error. An uncorrectable error will unconditionally cause the nERROR pin to toggle low.

    Using linker file to program the ECC is one way to avoid the problem. Another way you can try, when programming the firmware using F021 API in bootloader, please program 8 bytes or 16 bytes at a time. At the last write (end of the firmware), if the remaining number of data is <8 or <16 but >8, please append 0x00 or 0xff.
  • Dear QJ Wang,

    Thanks for your reply.  We are still wondering how to check the error location. We look at the FUNC_ERR_ADDR (0x000B3398) and UNC_ERR_ADD(0x00016673).

    if we rely on the address of UNC_ERR_ADD, then it's inside of application code. our application ends at 0x00040b23. Then how's possible the ECC error happens even speculative fetch is inside of application. we assume it should only happen outside the address of application and if we don't fill the whole flash?

  • It is at 0x000B3398. UNC_ERR_ADD is address[22:3] of the ECC error location.