新唐MCU技术
直播中

李敏

7年用户 1302经验值
私信 关注
[问答]

M031LD2AE做IAP升级的时候跳转不成功是为什么?

大家好,想请教一下大家关于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();


更多回帖

发帖
×
20
完善资料,
赚取积分