STM32f407VET6 IAP固件升级,bootloader+双APP区

1.背景介绍:

简单的IAP技术是:boot分区+1个APP区;

在升级的过程中,boot程序会把原先的APP区擦除,再把新的bin文件拷贝到APP区,完成升级;

风险:

在升级过程中突然断电,会导致原先的APP被擦除,新的APP未成功写入,设备变砖,无法通过预留的通信接口升级程序,只能程序烧录。

考虑到这种风险:现在将flash分区划为3分区:

boot区+APP1区+APP2区;
APP1存储老固件;APP2存储新固件;
总结:上述操作的目的是:保证flash上在同一时刻至少有1份可使用的APP;

升级流程:

从APP进入boot后,开始接受上位机发送过来的bin文件,bin文件存储在APP2区,bin文件接受完成后,擦除APP1并且把APP2的内容拷贝到APP1。

如果APP2接收失败则运行老固件;
如果APP2接收成功,则把APP2拷贝到APP1,运行APP1;
如果APP2接受成功,但是把APP2拷贝到APP1的过程中拷贝失败,则擦除APP1重新把APP2拷贝到APP1;

核心问题:APP2区作为临时存储区,APP1才是真正运行的APP区;
1)只有APP2成功接收运行擦除APP1;
2)在APP1被擦除并拷贝新固件时,即使失败了,APP2也存在;
总结:上述操作的目的是:保证flash上在同一时刻至少有1份可使用的APP;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/

flash分区:
在这里插入图片描述

在这里插入图片描述

流程图:
在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------/

2.地址配置

boot烧写地址及分区配置
起始地址0x08000000,
占用空间0x8000(32K)
在这里插入图片描述

APP1烧写地址及分区配置
起始地址0x0800 8000,
占用空间0x18000(96K)
在这里插入图片描述

完整的设计思路,程序和上位机 过几天再贴

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值