STM32F429 FreeRTOS使用IAP跳转

2019-07-20 11:08发布

本帖最后由 leoo 于 2017-11-6 17:41 编辑

硬件:阿波罗STM32F429
问题描述:
1、APP单独运行完全可以,用IAP方式下载就出现故障
2、bootloader 跳转到APP时,程序运行到
[mw_shl_code=c,true]                xTaskCreate((TaskFunction_t )         start_task,
                                                                (char*                                        )         "start_task",
                                                                (uint16_t                                )         START_STK_SIZE,
                                                                (void*                                         )         NULL,
                                                                (UBaseType_t                )         START_STK_PRIO,
                                                                (TaskHandle_t *        )         &StartTask_Handler );
               
                vTaskStartScheduler();                                        //开启任务调度器                  [/mw_shl_code]

vTaskStartScheduler();任务调度器开启之后,
PC指针由原来的 22222.jpg   变为 1111.jpg

这是BootLoader的跳转函数
[mw_shl_code=c,true]void iap_load_app(u32 appxaddr)
{
        printf("开始跳转判断2=%x ",((vu32)appxaddr)&0xFF000000);
        if((((vu32)appxaddr)&0xFF000000)==0x08000000)        
        {
                printf("验证成功,开始跳转2 ");
                SCB->VTOR = appxaddr;
    /* reset register values */
    __set_BASEPRI(0);
    __set_FAULTMASK(0);

    /* set up MSP and switch to it */
    __set_MSP(*(uint32_t*)appxaddr);
    __set_PSP(*(uint32_t*)appxaddr);
    __set_CONTROL(0);

    /* ensure what we have done could take effect */
    __ISB();
    __disable_irq();
                INTX_DISABLE();
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                  
                jump2app();                                                                  
        }
}                 [/mw_shl_code]

在论坛找了好多方法,都没有解决问题。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。