Other Parts Discussed in Thread: C2000WARE
Hi Team,
What is the difference between CPU1 and CPU2 when using FLASH_API?
CPU1's code(It can execute erase operation):
SeizeFlashPump();
EALLOW;
oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200);
if(oReturnCheck != Fapi_Status_Success)
{
//Example_Error(oReturnCheck);
return false;
}
oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);
if(oReturnCheck != Fapi_Status_Success)
{
return false;
}
oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,
(uint32 *)Bzero_SectorD_start);
while(Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}
oReturnCheck = Fapi_doBlankCheck((uint32 *)Bzero_SectorD_start,
Bzero_16KSector_u32length,
&oFlashStatusWord);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
for(i=0;i<4;i++)
{
Buffer[i*2] = mflagWord;
Buffer[i*2 + 1] = cpu_selected;
}
for(i=0, u32Index = Bzero_SectorD_start;
(u32Index < (Bzero_SectorD_start + 8)) &&
(oReturnCheck == Fapi_Status_Success); i+= 8, u32Index+= 8)
{
oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,Buffer,
8,
0,
0,
Fapi_AutoEccGeneration);
while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
oFlashStatus = Fapi_getFsmStatus();
// oReturnCheck = Fapi_doMarginRead((uint32 *)u32Index,debug32buf+(i/2),4, Fapi_NormalRead);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
}
EDIS;
ReleaseFlashPump();
return true;
CPU2's code(It cannot execute erase operation):
CPU2SeizeFlashPump();
EALLOW;
oReturnCheck = Fapi_initializeAPI(F021_CPU0_BASE_ADDRESS, 200);
if(oReturnCheck != Fapi_Status_Success)
{
//Example_Error(oReturnCheck);
return false;
}
oReturnCheck = Fapi_setActiveFlashBank(Fapi_FlashBank0);
if(oReturnCheck != Fapi_Status_Success)
{
return false;
}
oReturnCheck = Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector,
(uint32 *)Bzero_SectorD_start);
while(Fapi_checkFsmForReady() != Fapi_Status_FsmReady){}
oReturnCheck = Fapi_doBlankCheck((uint32 *)Bzero_SectorD_start,
Bzero_16KSector_u32length,
&oFlashStatusWord);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
for(i=0;i<4;i++)
{
Buffer[i*2] = mflagWord;
Buffer[i*2 + 1] = cpu_selected;
}
for(i=0, u32Index = Bzero_SectorD_start;
(u32Index < (Bzero_SectorD_start + 8)) &&
(oReturnCheck == Fapi_Status_Success); i+= 8, u32Index+= 8)
{
oReturnCheck = Fapi_issueProgrammingCommand((uint32 *)u32Index,Buffer,
8,
0,
0,
Fapi_AutoEccGeneration);
while(Fapi_checkFsmForReady() == Fapi_Status_FsmBusy);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
oFlashStatus = Fapi_getFsmStatus();
// oReturnCheck = Fapi_doMarginRead((uint32 *)u32Index,debug32buf+(i/2),4, Fapi_NormalRead);
if(oReturnCheck != Fapi_Status_Success)
{
// Example_Error(oReturnCheck);
return false;
}
}
EDIS;
CPU2ReleaseFlashPump();
return true;
--
Thanks & Regards