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.

TMS320F28379D: EEPROM Emulation on newer devices

Part Number: TMS320F28379D
Other Parts Discussed in Thread: HALCOGEN

Hello,

In the past I have used the approach described in the application report SPRAB69 (EEPROM Emulation With the TMS320F28xxx DSCs) to store data in the flash memory of C2000 devices.

However on newer devices the flash memory has different constraints, most notably the existence of ECC and the fact that data must be written 64-bit at a time.

I don't think the approach described in the original application report with page and bank status management is still applicable to these devices. Is there a more recent application report available which addresses this issue?

Kind Regards,

Pierre

  • Pierre,

    The concept described in that document on how EEPROM can be emulated using couple of sectors is still applicable for the new devices.  However, as you correctly mentioned, users need to allocate atleast 64-bits for a variable or can group them for ECC reasons.

    We don't have an application report though.

    Thanks and regards,

    Vamsi

  • Vamsi,

    Thank you for your answer. 

    The problem with the EEPROM concept in the application report is that it uses special locations to store the status of a page or a bank. However with the newer devices you cannot program a new value over the current one, even if you write the whole 64 bits at a time. The reason for this is because even if the new value is created from the old value by turning a few 1s in 0s, it is not going to be the case for the associated ECC (unless there are specific 64-bit values which have suitable properties with regard to the ECC algorithm but I don't know whether such values exist).

    Pierre

  • Pierre,

    Yes, we should not re-write a Flash location with modified data (even 1->0) once ECC is programmed for that location.  There are possible different data values for a given ECC value, but we should not go that route for this as they are limited.

    I read the guide a few years ago and I don't remember the exact implementation.  
    I am thinking along with you to provide some ideas for this scenario.  Instead of allocating separate locations for the status of a given sector, maybe you can allocate those status bits as well in the variable package.  And keep updating the status along with data, since there are 64-bits anyways.  

    Another team at TI implemented an EEPROM driver for Flash with ECC.  Maybe I can point you to their guide and example.  Let me check.

    Thanks and regards,
    Vamsi

  • Pierre,

    Flash EEPROM driver was developed for Hercules Safety MCUs.  These links may help you .

    User guide link for the Flash EEPROM driver http://processors.wiki.ti.com/images/8/88/TI_FEE_User_Guide.pdf

    The example is included in HALCoGen tool (http://www.ti.com/tool/HALCOGEN)  for device “TMS570LS31x_21x”

    Best Regards

    Siddharth