Hello,
I'm using the bootloader as described in theapplication note spna188.
So far I made no changes to the provided firmware, other than some basic confiogurations to adapt it to my custom board.
The problem is that it gets stuck while trying to erase sector 0.
This is the relevant part of the code:
-----------------------------------------------------------------------------------------------------------
Fapi_issueAsyncCommandWithAddress(Fapi_EraseSector, eraseStartAddr); while( FAPI_CHECK_FSM_READY_BUSY == Fapi_Status_FsmBusy ); FAPI_GET_FSM_STATUS; while(FAPI_GET_FSM_STATUS != Fapi_Status_Success);
-----------------------------------------------------------------------------------------------------------
The call to FAPI_GET_FSM_STATUS always returns 0x11, indicating that the sector is locked.
Here is my linker file:
---------------------------------------------------
--retain="*(.intvecs)"
MEMORY
{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH_API (RX) : origin=0x00000020 length=0x000014E0
FLASH0 (RX) : origin=0x00001500 length=0x0005EB00
SRAM (RW) : origin=0x08002000 length=0x00006000
STACK (RW) : origin=0x08000000 length=0x00002000
}
SECTIONS
{
.intvecs : {} > VECTORS
flashAPI :
{
bl_flash.obj (.text)
--library= ..\F021_API_CortexR4_LE.lib < FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.SetActiveBank.obj
FlashStateMachine.InitializeFlashBanks.obj
FlashStateMachine.EnableMainSectors.obj
FlashStateMachine.IssueFsmCommand.obj
FlashStateMachine.ScaleFclk.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)
} load = FLASH_API, run = SRAM, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)
.text > FLASH0
.const > FLASH0
.cinit > FLASH0
.pinit > FLASH0
.data > SRAM
.bss > SRAM
}
Are there any extra steps to unlock the secors?
Thanks a lot for your help!