NOTICE: The Processors Wiki will End-of-Life in December of 2020. It is recommended to download any files or other content you may need that are hosted on The site is now set to read only.


From Texas Instruments Wiki
Jump to: navigation, search


For the version 1.51.0 release, there will be an interface change to the Fapi_calculateECC() function that will affect the TMS570 F021 devices. Users that are currently using this function will need to check the F021 Flash API Reference Guide to see what modifications will be needed to their existing code when upgrading to v1.51.0.


The F021 Flash Application Programming Interface (API) provides a software library of functions to program, erase, and verify F021 (65nm) on-chip Flash memory.

These functions must be used when creating Flash bootloaders or other programming utilities for F021 Flash based microcontrollers.

For more information including download links, please use the following resources:


Functions to Erase, Program and Verify TI F021 (65nm) on-chip Flash for the Hercules TMS570 and RM4 devices.


Please use the following resources for support:

Known Issues in Latest version ( 2.01.01)

last updated - 30-Jun-2017

CQ Bug ID Description Platform Severity Workaround Committed to version
SDOCM00114339 F021 Flash API User's Guide Misleading / Unclear. API function description must clearly indicate whether that function must be relocated to SRAM or can executed from the Current Flash Bank." ALL Minor None. 2.02.00
SDOCM00102546 Add function to verify data and ECC using just a data buffer when programmed using AutoEccGeneration ALL Minor None. But user can look at suggestion proposed in Forum Link 2.02.00
SDOCM00116325 Fapi_getNumberOfBankSectors can access unimplemented Flash Banks. Passing value other than Bank implemented in the device will lead to data Abort. ALL Minor User must Ensure that Bank number parameters passed to API Fapi_getNumberOfBankSectors must be Bank number implemented in the device. 2.02.00
SDOCM00116928 F021 Flash API Header Error CGT.IAR.h. #if (__LITTLE_ENDIAN__ == 0) must be used instead of #if !defined(__LITTLE_ENDIAN__). More details in Forum link ALL Major user has to edit the CGT.IAR.h as per the suggestion given in . 2.02.00
SDOCM00116805 F021 libraries for RM57x and TMS570LCx Devices are not named correctly, it should be CortexR5 not CortexR4. ALL Minor Use R4_L2FMC libraries for L2FMC devies. 2.02.00
SDOCM00120586 Fapi_remapEccAddress API does not return correct main address for RM4x (Little Endian) variants of devices. For eg: TMS570x (BE) and RM4x(LE) devices, API is returning same value 0x00200000 for an input of 0xF0440000, which is wrong for little Endian RM4x devices RM4x Minor The results of the API is Big Endian address, User can change this to Little Endian address for RM4x Device variants. 2.02.00
SDOCM00120582 Fapi_remapMainAddress API does not return correct ECC address for RM4x (Little Endian) variants of devices. For eg: TMS570x (BE) and RM4x(LE) devices, API is returning same value 0xF0100000 for an input of 0xF0200000, which is wrong for little Endian RM4x devices RM4x Minor The results of the API is Big Endian address, User can change this to Little Endian address for RM4x Device variants. 2.02.00

Release History

Version Release Date Additions/Modifications/Deletions
1.00.0 12-Apr-2011 Initial Revision
1.00.1 9-May-2011 Added missing extern reference for Fapi_getBankSectors()
1.50.0 19-Jul-2011
  • Added support for Concerto devices.
  • Corrected issue with with Fapi_doBlankCheck() and Fapi_doVerify that could cause an illegal address abort.
  • Added ECC read support for 72bit wide FLEE banks| Element
1.51.0 19-Apr-2012
  • SDOCM00086276 - Changed the u64Data parameter passed to Fapi_calculateEcc() to be consistent behavior on Big and Little Endian Systems.
  • SDOCM00087304 - Updated Fapi_doBlankCheck to use Read Margin mode 0 only.
  • SDOCM00086404 - Added macro FAPI_WRITE_LOCKED_FSM_REGISTER() to allow easier writes to locked register in the Flash Memory Controller.
  • SDOCM00086405 - Changed the functions Fapi_setupEepromSectorEnable() and Fapi_setupBankSectorEnable() in Fapi_UserDefinedFunctions.c to use the macro FAPI_WRITE_LOCKED_FSM_REGISTER() as the register that were being written to are locked register in the Flash Memory Controller.
  • SDOCM00086402 - Corrected the issue in Fapi_doMarginRead() that did not return all the requested data in the ECC memory regions.
  • SDOCM00088256 - Changed the check that insures max FCLK value for the device is not exceeded from a defined constant in the API to a check from the device OTP value.
  • SDOCM00087302 - Updated the structures in Types.h to support linking in gcc toolchain
2.00.00 12-Dec-2012
  • Added Fapi_remapMainAddress() to give an easy method to determine ECC address for a main flash


  • Removed unused status' from Fapi_StatusType
– Fapi_Status_AsyncBusy
– Fapi_Status_AsyncComplete
– Fapi_Error_StateMachineTimeout 
– Fapi_Error_InvalidDelayValue
– Fapi_Error_InvalidCpu
  • Removed the listing of structures. Please refer to the installed F021 Flash API headers files for these.
  • Changed from the use of defined typedefs uint64, uint32, uint16, and uint8 to the standard definitions in

stdint.h, uint64_t, uint32_t, uint16_t, and uint8_t. Also changed boolean to boolean_t

  • Added #if defined guardbanding around the defines in Types.h that can conflict with Autosar

Platform_Types.h defines.

  • Added appendix describing the PSA calculation
2.00.01 31-Jul-2013
  • Corrected the function description for Fapi_enableMainBanks().
  • Added additional files that are distributed with the library.
2.01.00 31-May-2014
  • Added additional library files for L2FMC with floating point support.
  • SDOCM00102756 - Remove FLOCK register from register include file.
  • SDOCM00103134 - Sector size returned for FLEE banks by Fapi_getBankSectors() is double the actual size.
2.01.01 22-Oct-2014
  • Added Blank Check routine for devices with L2FMC controller.
  • OTP check for Fapi_enableEepromBankSectors and Fapi_enableMainBankSectors.
  • SDOCM00102084 - Typo in CGT.CCS.H in GNU attribute check .
  • SDOCM00102399 - FEDACSDIS and FEDACSDIS2 are missing from Fapi_FmcRegistersType definition.
  • SDOCM00100674 - Add Blank check function for Conqueror devices.
  • SDOCM00107638 - Macros FAPI_SUSPEND_FSM and FAPI_WRITE_EWAIT are malformed.
  • SDOCM00108528 - In F021, dot operator usage in macro causes compiler warning.
  • All libraries compiled without debug symbols included in the distributed files.