LPC55S16 - Flash IAP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LPC55S16 - Flash IAP

1,265件の閲覧回数
Dhaya
Contributor III

We used the IAP Flash concept to store the data in our customised board. In some boards it works properly. But in some of the board, it not executed while entering the function of flash property controller get hanged. How can i resolve this issue. Here by I updated the code we generated

 

#include "fsl_iap.h"
#include "fsl_iap_ffr.h"
 
#include "init.h"
 
#define PAGE_INDEX_FROM_END 1U
 
 
flash_config_t flashInstance;
static uint32_t status;
uint32_t destAdrss; /* Address of the target location */
uint32_t failedAddress, failedData;
uint32_t pflashBlockBase            = 0;
uint32_t pflashTotalSize            = 0;
uint32_t pflashSectorSize           = 0;
uint32_t PflashPageSize             = 0;
 
 
 
void IAP_Flashwrite(void);
void IAP_Flashread(void);
void IAP_Address_cap(void);
 
 
 
 

int main()

{

IAP_Address_cap();
void IAP_Flashwrite(void);
IAP_Flashread();
while(1)
{
}
}
 
 
 
void IAP_Address_cap()
{
FLASH_Init(&flashInstance);
 
/* Get flash properties kFLASH_ApiEraseKey */
FLASH_GetProperty(&flashInstance, kFLASH_PropertyPflashBlockBaseAddr, &pflashBlockBase);
FLASH_GetProperty(&flashInstance, kFLASH_PropertyPflashSectorSize, &pflashSectorSize);
FLASH_GetProperty(&flashInstance, kFLASH_PropertyPflashTotalSize, &pflashTotalSize);
FLASH_GetProperty(&flashInstance, kFLASH_PropertyPflashPageSize, &PflashPageSize);
 
 
destAdrss = pflashBlockBase + (pflashTotalSize - (PAGE_INDEX_FROM_END * PflashPageSize));
}
 
 
 
void IAP_Flashwrite(void)
{
static uint8_t status;
 
status = FLASH_Erase(&flashInstance, destAdrss, PflashPageSize, kFLASH_ApiEraseKey);
status = FLASH_VerifyErase(&flashInstance, destAdrss, PflashPageSize);
 
/* Start programming specified flash region */
status = FLASH_Program(&flashInstance, destAdrss, (uint8_t *)IAP_data_buffer, sizeof(IAP_data_buffer));
 
// /* Verify if the given flash region is successfully programmed with given data */
// status = FLASH_VerifyProgram(&flashInstance, destAdrss, sizeof(Write_byte), 
// (const uint8_t *)Write_byte, &failedAddress, &failedData);
}
 
 
 
void IAP_Flashread(void)
{
destAdrss = pflashBlockBase + (pflashTotalSize - (PAGE_INDEX_FROM_END * PflashPageSize));
/* Verify programming by reading back from flash directly */
for (uint32_t i = 0; i < 64; i++)
{
IAP_data_buffer[i] = *(volatile uint32_t *)(destAdrss + i * 4); //IAP_data_buffer
}
}
 
0 件の賞賛
6 返答(返信)

1,178件の閲覧回数
Dhaya
Contributor III

We use Keil IDE which having the following configuration of RAM and ROM

0 件の賞賛

1,122件の閲覧回数
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @Dhaya 

Is your board custom board or demo board?

Can you confirm whether it can debug simple hello world demo well?

There is no issue with this demo, I have tested on my demo board.

 

BR

Alice

0 件の賞賛

1,101件の閲覧回数
Dhaya
Contributor III
We using our custom board.
0 件の賞賛

1,060件の閲覧回数
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @Dhaya 

Can you confirm whether it can debug simple hello world demo well?

BR

Alice

 

0 件の賞賛

1,234件の閲覧回数
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @Dhaya 

How about first use SDK demo "flashiap1" to test ?

 

BR

Alice

0 件の賞賛

1,204件の閲覧回数
Dhaya
Contributor III

Hi @Alice_Yang ,

    No its not working fine. It shows the following error while debug SDK example project without edit.

IAP_flashiap1 LinkServer Debug [C/C++ (NXP Semiconductors) MCU Application]
IAP_flashiap1.axf [LPC55S16 (cortex-m33)]
Thread #1 1 (Suspended : Signal : SIGSTOP:Stopped (signal))
HardFault_Handler() at semihost_hardfault.c:53 0x2618
<signal handler called>() at 0xfffffff9
_printf() at 0x21a0
main() at iap_flash.c:58 0x2ce
arm-none-eabi-gdb (12.1.90.20221210)

 

0 件の賞賛