Hi There.
I tried to erase Flash using F021 API, but failed during Erase Check. (used : Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector, (uint32_t *)u32EraseStart) )
As a result of checking the Erase Sector area with the memory browser, the bit flip is confirmed. (0xFFFFFFFD, 0xFFFFFFBF, etc)
It was no issues with the RM44 and RM46.
I referred to the solution of a similar case on the forum, but rather side effects such as not booting occurred.
How can i resolve this issue?
My link.cmd file are:
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/* Memory Map */
#define VECTOR_START_ADDR 0x00000000
#define FLASH_MAX_SIZE 0x00400000
#define VECTOR_SIZE 0x00000020
#define FLASH_API_SIZE 0x0000FFE0 /* */
#define FALSH_API_START_ADDR VECTOR_START_ADDR + VECTOR_SIZE
#define FLASH0_START_ADDR VECTOR_SIZE + FLASH_API_SIZE
#define FLASH1_START_ADDR 0x00200000
#define FLASH0_SIZE FLASH1_START_ADDR - (VECTOR_SIZE + FLASH_API_SIZE)
#define FLASH1_SIZE FLASH_MAX_SIZE - FLASH1_START_ADDR
#define STACK_START_ADDR 0x08000000 /* */
#define STACK_SIZE 0x00006000 /* 4KB x 6(SVC, IRQ, FIQ, SYS, ABT, UNDEF, USER) */
#define RAM_START_ADDR STACK_START_ADDR + STACK_SIZE /* */
#define RAM_SIZE (0x00080000 - STACK_SIZE) /* 512KB - STACK_SIZE */
#define EEPROM_START_ADDR 0xF0200000
#define EEPROM_SIZE 0x20000
MEMORY
{
/* USER CODE BEGIN (2) */
/* USER CODE END */
VECTORS (X) : origin=VECTOR_START_ADDR length=VECTOR_SIZE
FLASH_API (RX) : origin=FALSH_API_START_ADDR length=FLASH_API_SIZE
FLASH0 (RX) : origin=FLASH0_START_ADDR length=FLASH0_SIZE vfill=0xFFFFFFFF
FLASH1 (RX) : origin=FLASH1_START_ADDR length=FLASH1_SIZE
STACKS (RW) : origin=STACK_START_ADDR length=STACK_SIZE
RAM (RW) : origin=RAM_START_ADDR length=RAM_SIZE
EEPROM (RW) : origin=EEPROM_START_ADDR length=EEPROM_SIZE
/* Compile error
ECC_VECTORS : origin=0xF0400000 length=0x000004 ECC={ algorithm=algoR5F021, input_range=VECTORS }
ECC_FLASH_API : origin=0xF0400004 length=0x001FFC ECC={ algorithm=algoR5F021, input_range=FLASH_API }
ECC_FLASH0 : origin=0xF0402000 length=0x03e000 ECC={ algorithm=algoR5F021, input_range=FLASH0 }
ECC_FLASH1 : origin=0xF0440000 length=0x040000 ECC={ algorithm=algoR5F021, input_range=FLASH1 }
*/
/* USER CODE BEGIN (3) */
/* USER CODE END */
}
/* Compile error
ECC
{
algoR5F021 : address_mask = 0x003FFFF8
hamming_mask = R4
parity_mask = 0x0c
mirroring = F021
}
*/
/*
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x001FFFE0
FLASH1 (RX) : origin=0x00200000 length=0x00200000
STACKS (RW) : origin=0x08000000 length=0x00006000
RAM (RW) : origin=0x08006000 length=0x0007a000
*/
/* USER CODE BEGIN (4) */
/* USER CODE END */
/*----------------------------------------------------------------------------*/
/* Section Configuration */
SECTIONS
{
.excpt_vecs : START( ulFlashStartAddr ) {} palign=8 > VECTORS
.intvecs : {} > VECTORS /* Vector table section */
.text : {} palign=8 > FLASH0 | FLASH1 /* program code */
.const : {} palign=8 > FLASH0 | FLASH1 /* initialized const objects (string constants, variables declared const) */
.cinit : {} palign=8 > FLASH0 | FLASH1 /* initialize C global variables at startup */
.pinit : {} palign=8 > FLASH0 | FLASH1
.bss : {} > RAM /* uninitialized objects (global variables) */
.data : {} > RAM /* initialized non-const objects (global variables) */
.sysmem : {} > RAM /* the dynamic memory allocation pool */
flashAPI :
{
..\Debug\package\HC\source\f021Control.obj (.text)
..\Debug\package\HC\source\sciControl.obj (.text)
..\Debug\package\HM\source\consoleManager.obj (.text)
--library = ..\package\F021_LIB\F021_API_CortexR4_LE_L2FMC_V3D16.lib < FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.SetActiveBank.obj
FlashStateMachine.InitializeFlashBanks.obj
FlashStateMachine.EnableMainSectors.obj
FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.ScaleFclk.obj
FlashStateMachine.EnableEepromSectors.obj
Init.obj
Utilities.CalculateEcc.obj
Utilities.WaitDelay.obj
Utilities.CalculateFletcher.obj
Read.MarginByByte.obj
Read.Common.obj
Read.FlushPipeline.obj
Read.WdService.obj
Async.WithAddress.obj
Program.obj > (.text)
} palign=8, load = FLASH_API, run = 0x8070000, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)
/* USER CODE BEGIN (5) */
/* USER CODE END */
/* USER CODE BEGIN (6) */
/* USER CODE END */
}
/*---------------------------------------------------------------------------------------------------------------------------------------*/
Best regard.
Gene.