[STM32L1] stm32L系列IAP功能的实现

[复制链接]
 楼主| huwr 发表于 2020-5-10 12:49 | 显示全部楼层 |阅读模式
程序流程是这样的,默认情况下程序在主程序中运行,收到升级指令后跳到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();
.如果不加第一步,好像无**常跳转。如果加上第一步,能够正常跳转,但是跳转到IAP程序后无法响应中断。
 楼主| huwr 发表于 2020-5-10 12:53 | 显示全部楼层

在IAP程序中开启总中断,跳转过去后无**常运行IAP程序。
huanghuac 发表于 2020-5-10 12:56 | 显示全部楼层
ApplicationAddress 的地址是多少,尽量保证0x400地址对齐
jiahy 发表于 2020-5-10 13:01 | 显示全部楼层
中断向量表 SCB->VCTOR 重新设置新的地址没有
huanghuac 发表于 2020-5-10 13:06 | 显示全部楼层
1.NVIC_SETFAULTMASK(); //关总中断                                   这个不是关总中断
shimx 发表于 2020-5-10 13:09 | 显示全部楼层
如果不加第一步,好像无**常跳转。可能是因为不管总中断,在拷贝中断向量表或者说中断向量表的重映射时,还有后续的程序跳转前,如果来了其他的中断,讲可能进入不可预知的状态中。
jiaxw 发表于 2020-5-10 13:13 | 显示全部楼层
加上第一步,能够正常跳转,但是跳转到IAP程序后无法响应中断。可能是因为没有做拷贝中断向量表或者说中断向量表的重映射时,或者说做的有问题。在还有可能是没有开启相关的中断。
huanghuac 发表于 2020-5-10 13:19 | 显示全部楼层
STM32L系列的都支持IAP功能吗
zhuhuis 发表于 2020-5-10 13:22 | 显示全部楼层

可能是没有开启相关的中断
 楼主| huwr 发表于 2020-5-10 13:25 | 显示全部楼层
看看中断开启了没有
chenjunt 发表于 2020-5-10 13:27 | 显示全部楼层
我记得论坛里有详细说iap的帖子 楼书找找
lium 发表于 2020-5-10 13:31 | 显示全部楼层
参考官方的IAP例子啊。
 楼主| huwr 发表于 2020-5-10 13:35 | 显示全部楼层
唉,还是没有什么结果,算了,先结贴吧,多谢大家啦
yklstudent 发表于 2020-5-12 21:50 来自手机 | 显示全部楼层
官方的iap,还是自己写的iap?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

780

主题

8627

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部

780

主题

8627

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部