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.

TMS320F280049: why do we add ECC on F280049&F2837x?

Part Number: TMS320F280049

Hi,

I wonder why do we add ECC on newer C2000 MCUs?

If it's for higher reliability for the flash, then why don't we integrate it on F2803x and F2806x?

Is it that the flash type on F28004x and F2837x different from F2803x and F2806x? For example, migrate from NOR flash to NAND flash, and NAND flash itself has lower reliability?

Since add ECC will add complexity and word load of the user, so we wonder why we add ECC on our newer C2000 MCUs.

  • Howard,

    ECC is a must for safety applications now.  Hence, we added it when we moved to next gen flash wrapper.

    We did move to a different technology node when we moved to F2837x/F28004x - but it is not less reliable - it is actually more reliable.  We added it to satisfy the safety application requirements.

    I agree that ECC addition made it much complex - but, flash API supports programming ECC automatically.  And TI flash tools and 3rd party flash tools also support ECC programming without any extra effort for customer.

    Please let me know if you have any feedback in terms of making it easier for customers - I will review it and reflect that in our collateral.  

    In addition to the TRM and flash API guide, we also have an FAQ on ECC:  https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/951658

    Please see if this helps.

    Thanks and regards,
    Vamsi

  • Vamsi,

    thanks.

    Then if we don't make safety application but only some digital power module.

    Can we disable ECC?

    If we still enable ECC, then it will trigger NMI ISR when we find some bit error, then what should we do in this ISR? Should we halt the code and make forever loop in this ISR? And do we have to program the flash again to correct the error bit?

  • Howard,

    Below copied are taken from the FAQ that I shared above:   https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/951658

    2. Do we need to program ECC even if my application disables ECC-check?

    Answer. BootROM code does not disable ECC-check. Hence, even if the user application disables ECC at some point in its code, ECC errors still occur when the bootROM jumps to the application code since ECC is disabled only at a later stage in the user application. This will cause a continuous reset cycle and hence application code never gets executed.

    4. Is it a must to enable the ECC-check for Flash/OTP reads or fetches?

    Answer. It depends on the safety requirements of your application. Enabling ECC-check generates an interrupt for single-bit errors (when the threshold is met) and NMI/bus-fault for uncorrectable errors as mentioned in the above FAQ. Hence, TI suggests enabling ECC-check. Note that ECC must be programmed irrespective of whether ECC-check is enabled or disabled.

    5. What do you mean by enabling or disabling ECC-check? Is it same as using Fapi_AutoEccGeneration when programming Flash/OTP using Flash API?

    Answer. No, they are different things. You use Fapi_AutoEccGeneration to generate and program ECC when using Flash API to program Flash/OTP. ECC-check is related to the read path of the Flash/OTP. When it is enabled, SECDED logic will check if there are any single or uncorrectable errors in the code/data that is fetched/read from Flash or OTP.

    16. What is the suggested threshold value for single-bit Flash ECC errors?

    Answer. It depends on the needs of the application. If the user application can’t tolerate any errors, then of course, a threshold of zero has to be used. Also, Flash technology used in these devices is very reliable. Based on the field empirical data, no fails are reported for this concern. Hence, a threshold of 0 can be used. 

    Regarding your NMI question on the occurrence of double bit error: If NMI occurs with a double bit error, then we suggest to reprogram the flash.  I will check the safety manual to see if anything else is suggested.

    Thanks and regards,

    Vamsi

      

  • Howard,

    When a double-bit error occurs, the application can check the ECC error registers to know the address where the error occurred.  If the error is transient (goes away with couple of reads to the same location or after reprogramming), then you may decide to use it.  If the error is permanent, the device should be replaced.  

    Thanks and regards,
    Vamsi