USB IAP跳转异常
最近在使用F429做USB IAP升级,遇到奇怪的问题,感到很疑惑,在插上U盘升级的时候程序总停留在Default handler里面如图片所示,当拔掉U盘启动则软件运行正常
IAP里面的跳转程序如下
if( ((*(__IO uint32_t*)AppAddr)&0x2FFE0000) == 0x20000000
{
__asm("CPSIDI");
JumpAddress = (*(__IO uint32_t*)(AppAddr + 4));
JumpToApplication = (pFunction)JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(volatile uint32_t*)AppAddr);
JumpToApplication();
}
IAP地址设置为0x010000,64K空间,尝试了将所有的中断handler函数都添加到it.c里,问题仍旧。。。。。
没有人帮我顶,自己先顶起来了 你判断要更新固件的条件是什么?是不是插上U盘,然后找指定的文件?如果找不到这个文件会怎么样? 看看FLASH 的目的地址, 中断向量表等有没有异常. 是不是USB中断在IAP程序里面开启了。而应用程序又没有USB的中断处理?向量地址是否进行了更新? dsjsjf 发表于 2018-9-11 20:20
你判断要更新固件的条件是什么?是不是插上U盘,然后找指定的文件?如果找不到这个文件会怎么样? ...
插入U盘,找到目标更新文件,若是没有目标文件则会直接跳转进入APP程序 安 发表于 2018-9-12 08:14
是不是USB中断在IAP程序里面开启了。而应用程序又没有USB的中断处理?向量地址是否进行了更新? ...
向量表地址有增加偏移,在APP里面,应用程序确实是没有USB的中断处理。但是这里好像不影响啊 feixiang20 发表于 2018-9-11 22:48
看看FLASH 的目的地址, 中断向量表等有没有异常.
我的升级方式是FLASH,中断向量表有在FLASH处增加偏移 如果IAP开启了USB中断,那么这里就会有影响的。进入APP以后,或者之前,要把USB关闭。我之前遇到过的问题是当串口在IAP中初始化后,有些寄存器是不会清除的,导致串口产生中断而复位。
页:
[1]