1、首先到官网找一个USB IAP的例程。芯片是 STM32F10X,就找对应的例子,不同系列存在差异就不多说了。
2、确认自己bootloader的大小和功能,简单阅读例子里面默认最小空间32KB,我自己规划是64KB,0x10000.
3、USB IAP的程序都是打包好的,我只研究了一下按键触发的信息、以及APP跳转的地址就可以直接用了。细节优化和裁剪看自己需求。
4、打开MDK Option for Target, Target选项,我的芯片空间是256KB,供0x40000大小;给APP定义的区间是0x08010000,大小是0x30000.
5、如第4步所示APP的Memory Areas更改后,代码里面的中断向量表也要对应更改,我的App从64KB开始,所以#define VECT_TAB_OFFSET 0x10000
6、说好的USB IAP,肯定要准备好对应的升级软件。
如上图所示,在MDK Option fro Target ,User选项打勾勾,填上指令和自己实际的文件路径、名称。得到APP就可以放在U盘里面,按照自己IAP的loader程序触发升级了。
PS:因为容量较小,所以官网的IAP是初始化FAT16,所以U盘是被有容量限制,我还没改FAT32的配置。会的较一下我配置。