We are using standard Concerto M35 ControlCard in our product, and recently got cards with new silicon (without "X" mark),
// read silicon revision
Int16 siliconRevId = (HWREG(SYSCTL_DID0) & 0xFFFF); //returns 1 for TMS chip, returns 0 for TMX (pre-production)
Firmware compiled using latest CCS 5.5.0.00077 and F021 ver 1.52
For FLASH interface, we use very lightly modified "flash_programming_m3.c" from the latest ControlSuite v 201, which works OK on silicon 0.
The modifications include more emulator-friendly function and more checks:
volatile char FLASH_test = 0;
#pragma CODE_SECTION(Example_Error,"ramfuncs");
void Example_Error(Fapi_StatusType status)
{
FlashLeavePump(); //need to release it after an error or C28 could not be programmed via emulator
FLASH_test = 0;
// Error code will be in the status parameter
for(;;)
{
if (FLASH_test!=0) return; //to return to program and find out which function had caused exception,
// using emulator put break point here, then change "FLASH_test" to non-zero
}
}
We have FLASH problem with Silicon rev 1 (without "X" mark): the library function SOMETIMES cannot erase sector, even it is returning "success" , and then Fapi_doBlankCheck returns "Fapi_Error_Fail". On Silicon 0 (with "X" mark) same functions work.
Very similar problem was already posted: "Concerto Flash Problem" in November 2013, exactly with the "latest" silicon, but nobody had a positive answer.
TI, when more robust FLASH API will be released? So far, TI, we are at your mercy with these (rather not reliable) FLASH functions.
Is it possible to provide a source code for the F021_API_CortexM3_LE.lib library to find out problems on our own?
Best regards,
Igor