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.

TMDX570LC43HDK ESM Error

Guru 10235 points
Other Parts Discussed in Thread: TMDX570LC43HDK, HALCOGEN, TMDS570LS31HDK

Hello, TI Experts,

 

I have a question about HALCoGen output project  for TMDX570LC43HDK.

   HALCoGen: 04.05.02

   CCS:Version 6.1.3.00033

   sample_code:example_rtiBlinky.c

 

We found ESM Error with "ESMSR2 = 0x00000008" after __TI_auto_init(); execution.

(We didn't find any ESM Error for TMDS570LS31HDK project (example_rtiBlinky.c))

 

I would appreciate if you tell us how to solve this issue with this ESM Error generation mechanism.

 

Best Regards

  • Hi Matusan,

      The error is saying that the CPU detects an ECC error on its level 2 interface. The reason is that the CPU's cache is enabled. During device startup there is no valid data in the cache and therefore the cache controller will keep performing cache refill operations. A cache refill operation is a burst read of 32-bytes of data from the L2 memory. In this case, it is doing cache refill from the flash. The 32 bytes of data that is being read from the flash does not completely contain all implemented data. For example, you might have a section a code that is not a multiple of 32 bytes.  In this case when the cache controller reads the ending 32 bytes it will have some unimplemented data. These unimplemented data are normally in their erased state with the corresponding ECC also in the erased state. When the CPU reads these unimplemented data without the corresponding ECC it results in an ECC error. The erased data is basically all '1'. What is needed is a valid ECC for the data that is all '1' so that when CPU reads them it will not detect as ECC error. 

      With so much being said above, you can use the linker generated ECC. This means that during linking the linker automatically calculate the ECC for the implemented addresses as well as the unimplemented addresses using the VFILL command. Note that once the linker generated the ECC, the .out file will contain ECC information. You will want to disable the auto-ECC in CCS.

     More information can be found in the below wiki page.

    processors.wiki.ti.com/.../LAUNCHXL2-570LC43-RM57L:_LinkerECCRecommendation

  • Hi, Charles

     

    Thank you for your courteous explanation.

    I really appreciate your help.

    This information is very helpful!

     

    Best regards,