本帖最后由 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指针由原来的
变为
这是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]
在论坛找了好多方法,都没有解决问题。
一周热门 更多>