TMS570LS1227: Fapi Programmed byte mismatch

Part Number: TMS570LS1227


Tool/software:

Hello,

I have an application using the Fapi V2.01.01 Build (000830), programming individual bytes with no ECC (to allow contiguous elements of sizes less than 8 bytes) and I am seeing some unexpected behavior when using Bank 7 (EEPROM).

The library is loaded into RAM on startup, and I am storing data in EEPROM.  I've noticed that, intermittently, some sort of 'corruption' in the bytes written to EEPROM occurs.  I'm writing various elements of sizes between 1-8 bytes in length, but I'll see 1 or 2 bytes within a larger element vary from the intended data.  For example, an 8 byte element contained a word whose intended value is 0x4B3E4E61, but the actual value written and seen in the memory browser is 0x4B3E4E41.  I can and have actively verified this by reading and comparing the expected to actual data programmed in EEPROM.  

I've considered that it could be impacted by the IQR/FIQ, but from what I understand that is only the case if the interrupt were to be performing some other Fapi related call.  My IRQ does not make any other Fapi calls.  

I believe I am following the recommended programming flow, defined in spnu501h, section 6.3.

I have been unable to identify a failure of the API, per the return values of functions such as Fapi_initializeAPI, Fapi_setActiveFlashBank, Fapi_enableEepromBankSectors, or Fapi_issueProgrammingCommand.

Any help would be much appreciated.  I would prefer to avoid re-writing my higher level EEPROM handler to retry when a perceived incorrect write occurs.  

  • Hi Jacob,

    I have an application using the Fapi V2.01.01 Build (000830), programming individual bytes with no ECC (to allow contiguous elements of sizes less than 8 bytes) and I am seeing some unexpected behavior when using Bank 7 (EEPROM).

    Even if you use ECC also the data bytes are in contiguous locations only because ECC and data space are different.

    As you can see EEPROM bank-ECC is located in between 0xF010_0000 and 0xF013_FFFF

    However, the EEPROM data space is between 0xF020_0000 and 0xF020_FFFF:

    The library is loaded into RAM on startup, and I am storing data in EEPROM.  I've noticed that, intermittently, some sort of 'corruption' in the bytes written to EEPROM occurs.  I'm writing various elements of sizes between 1-8 bytes in length, but I'll see 1 or 2 bytes within a larger element vary from the intended data.  For example, an 8 byte element contained a word whose intended value is 0x4B3E4E61, but the actual value written and seen in the memory browser is 0x4B3E4E41.  I can and have actively verified this by reading and comparing the expected to actual data programmed in EEPROM.  

    I've considered that it could be impacted by the IQR/FIQ, but from what I understand that is only the case if the interrupt were to be performing some other Fapi related call.  My IRQ does not make any other Fapi calls.  

    I believe I am following the recommended programming flow, defined in spnu501h, section 6.3.

    I have been unable to identify a failure of the API, per the return values of functions such as Fapi_initializeAPI, Fapi_setActiveFlashBank, Fapi_enableEepromBankSectors, or Fapi_issueProgrammingCommand.

    Any help would be much appreciated.  I would prefer to avoid re-writing my higher level EEPROM handler to retry when a perceived incorrect write occurs.  

    Is it possible for you to share your code for quick debugging at my end?

    --
    Thanks & regards,
    Jagadish.