Hi Daniel
I have another question:
I plan to create an ECC fault in the 0x10014000 area. Some data is written in the 0x10014000 area through the FEE module.
Case 1: The following function call cannot cause ECC failure:
/* Unlock sector if needed */
if (STATUS_C40_IP_SECTOR_PROTECTED == C40_Ip_GetLock(FLS_SECTOR_TEST))
{
C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);
}
/* Erase sector */
C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);
do
{
C40Status = C40_Ip_MainInterfaceSectorEraseStatus();
}
while (STATUS_C40_IP_BUSY == C40Status);
C40_Ip_MainInterfaceWrite(FLS_SECTOR_ADDR, FLS_BUF_SIZE, writeBuffer_1, FLS_MASTER_ID);
while (STATUS_C40_IP_BUSY == C40_Ip_MainInterfaceWriteStatus());
/* Write 2 */
C40_Ip_MainInterfaceWrite(FLS_SECTOR_ADDR, FLS_BUF_SIZE, writeBuffer_2, FLS_MASTER_ID);
while (STATUS_C40_IP_BUSY == C40_Ip_MainInterfaceWriteStatus());
/* Read */
read_status = C40_Ip_Read(FLS_SECTOR_ADDR, FLS_BUF_SIZE, readBuffer);
Case2: The following function call can cause ECC failure
/* Unlock sector if needed */
if (STATUS_C40_IP_SECTOR_PROTECTED == C40_Ip_GetLock(FLS_SECTOR_TEST))
{
C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);
}
/* Erase sector */
C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);
do
{
C40Status = C40_Ip_MainInterfaceSectorEraseStatus();
}
while (STATUS_C40_IP_BUSY == C40Status);
/* Unlock sector if needed */
if (STATUS_C40_IP_SECTOR_PROTECTED == C40_Ip_GetLock(FLS_SECTOR_TEST))
{
C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);
}
/* Erase sector */
C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);
do
{
C40Status = C40_Ip_MainInterfaceSectorEraseStatus();
}
while (STATUS_C40_IP_BUSY == C40Status);
C40_Ip_MainInterfaceWrite(FLS_SECTOR_ADDR, FLS_BUF_SIZE, writeBuffer_1, FLS_MASTER_ID);
while (STATUS_C40_IP_BUSY == C40_Ip_MainInterfaceWriteStatus());
/* Write 2 */
C40_Ip_MainInterfaceWrite(FLS_SECTOR_ADDR, FLS_BUF_SIZE, writeBuffer_2, FLS_MASTER_ID);
while (STATUS_C40_IP_BUSY == C40_Ip_MainInterfaceWriteStatus());
/* Read */
read_status = C40_Ip_Read(FLS_SECTOR_ADDR, FLS_BUF_SIZE, readBuffer);
Case 2 performs an erasure operation before case 1.
/* Unlock sector if needed */
if (STATUS_C40_IP_SECTOR_PROTECTED == C40_Ip_GetLock(FLS_SECTOR_TEST))
{
C40_Ip_ClearLock(FLS_SECTOR_TEST, FLS_MASTER_ID);
}
/* Erase sector */
C40_Ip_MainInterfaceSectorErase(FLS_SECTOR_TEST, FLS_MASTER_ID);
do
{
C40Status = C40_Ip_MainInterfaceSectorEraseStatus();
}
while (STATUS_C40_IP_BUSY == C40Status);
Why is it not easy to reproduce ECC failures when Fee data exists?