大家好,想请教一下大家关于M031系列芯片IAP功能开发的问题。先把新固件的.bin文件先存到外挂的flash(W25Q256),固件包的大小为2400bytes,需要升级时把.bin文件加载到片内的flash的APROM(起始地址为0x4000)。当需要更新时,把程序加载到片内flash没有报错,但是不能跳转到新固件运行的地方,软件复位后又运行当前固件。已经通过ICP工具把芯片配置成APROM with IAP,关键代码如下: /*从外挂flash中读取Application2文件*/
celink_user_SpiReadFlashBuffer(Uart1_NewFirmware,510104,2400);
printf("System Unlockreg...\n");
SYS_UnlockReg();
/* Enable FMC ISP function */
printf("FMC Open...\n");
FMC_Open();
FMC_ENABLE_AP_UPDATE();
if(load_image_to_flash((uint32_t)&Uart1_NewFirmware,0, 0x4000, 2400) != 0)
{
printf("Load image to APROM failed!\n");
return -1;
}
FMC_DISABLE_AP_UPDATE();
printf("Disable all interrupt...\n");
/*Disable all interrupts*/
NVIC->ICER[0] = 0xFFFFFFFF;
printf("Set Vector PageAddr...\n");
FMC_SetVectorPageAddr(0x4000);
/* Reset System to reset to new vector page. */
NVIC_SystemReset();
|
|