[求助] stm32L系列IAP功能的实现

zpehome   2012-9-24 17:50 楼主
最近忙着做IAP功能,遇到一些问题,麻烦各位大侠指导下?程序流程是这样的,默认情况下程序在主程序中运行,收到升级指令后跳到IAP程序进行空中升级。
跳转程序如下:
1.NVIC_SETFAULTMASK(); //关总中断
2.JumpAddress = *(volatile u32*) (ApplicationAddress + 4); // 取中断向量表中的复位中断地址
3.Jump_To_Application = (pFunction) JumpAddress; // 该地址强置为跳转函数地址
4.__set_MSP(*(unsigned int*)(ApplicationAddress )
5.Jump_To_Application();
问题:
1.如果不加第一步,好像无法正常跳转。如果加上第一步,能够正常跳转,但是跳转到IAP程序后无法响应中断。
2.在IAP程序中开启总中断,跳转过去后无法正常运行IAP程序。

回复评论 (3)

引用: 原帖由 zpehome 于 2012-9-24 17:50 发表
最近忙着做IAP功能,遇到一些问题,麻烦各位大侠指导下?程序流程是这样的,默认情况下程序在主程序中运行,收到升级指令后跳到IAP程序进行空中升级。
跳转程序如下:
1.NVIC_SETFAULTMASK(); //关总中断
2.JumpA ...
如果不加第一步,好像无法正常跳转。可能是因为不管总中断,在拷贝中断向量表或者说中断向量表的重映射时,还有后续的程序跳转前,如果来了其他的中断,讲可能进入不可预知的状态中。

如果加上第一步,能够正常跳转,但是跳转到IAP程序后无法响应中断。可能是因为没有做拷贝中断向量表或者说中断向量表的重映射时,或者说做的有问题。在还有可能是没有开启相关的中断。

在IAP程序中开启总中断,跳转过去后无法正常运行IAP程序。 不明白什么意思
点赞  2013-2-27 16:48
STM32L系列的都支持IAP功能吗
点赞  2017-5-19 17:36
有时候是跳转不过去的,需要用软件复位下。我就时IAP升级完后,软件复位单片机。复位后因为有升级完成标志。就直接跳到正常的程序里了。
点赞  2018-1-21 16:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复