Other Parts Discussed in Thread: C2000WARE
Hi Team,
Code-1: Global variable declaration
#pragma DATA_SECTION(Buffer,"BufferDataSection"); uint16 Buffer[WORDS_IN_FLASH_BUFFER + 1]; uint32 *Buffer32 = (uint32 *)Buffer;
Code-2:cmd: Section definitions
BufferDataSection : > RAMD1, PAGE = 1, ALIGN(8)
Code-3: Code that burns the module
EALLOW;
for(i=0,j=0;i<BLOCK_WORD;i++)
{
Buffer[i] = (flsInfo.flashData[(i*2)+1]<<8)+(flsInfo.flashData[i*2]);//deal 1024bit DATA,pack 512bit into Buffer
j++;
if(j >= 8)
{
j = 0;
oReturnCheck = Fapi_issueProgrammingCommand((unsigned long *)(flsInfo.flashaddress+i-7),
(unsigned int *)(Buffer+i-7),8, 0, 0, Fapi_AutoEccGeneration);
while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);
if(oReturnCheck != Fapi_Status_Success)
{
// Check Flash API documentation for possible errors
#if 1
ESTOP0;
#endif
break;
}
oFlashStatus = Fapi_getFsmStatus();
if(oFlashStatus != 0)
{
ErrFlag = 1;
#if 1
debugarr[5]++;
//debugarr[6] = oFlashStatus;
ESTOP0;
#endif
break;
}
oReturnCheck = Fapi_doVerify((uint32 *)(flsInfo.flashaddress+i-7),4, (Buffer32+i-7)+((i-7)/2),&oFlashStatusWord);
if(oReturnCheck != Fapi_Status_Success)
{
debugarr[6] = oReturnCheck;
debugarr[7] = 1;
ESTOP0;
break;
}
//SysCtl_serviceWatchdog_28075();
} // if-end
SysCtl_serviceWatchdog_28075();
} // for
EDIS;
Issue:
After executing Fapi_issueProgrammingCommand, API does not return an error, but indicates an error during calibration. The wrong location is 0x84000 and the expected burn data does not match the actual read data.
Data in actual flash:

Data in buffer:

Could you help check this case? Thanks.
Best Regards,
Cherry