内容

学习了IAP

要点

IAP(In Application Programming)即在应用编程。IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。 通常实现IAP功能时,即用户程序运行中作自身的更新操作, 需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信方式(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。
IAP的重点在第一个程序,官方已给出例程,将main.c文件中的操作部分改为自己想要的触发方式即可。
第二个项目代码只需要稍做改动即可使用。改动如下:

1.设置中断向量表偏移量
(说人话)在main函数的开头加上
SCB->VTOR = FLASH_BASE | 0x10000; / Vector Table Relocation in Internal FLASH. /
2.改变APP 程序起始地址
屏幕截图 2021-09-30 222107.png
在这里将0x8000000改为0x8010000,将0x80000改为0x70000即可。
3.将文件输出为.bin格式
屏幕截图 2021-09-30 222734.png
在这里加上
E:\Keil_v5\ARM\ARMCC\bin\fromelf.exe —bin -o ..\Output\Fire_F103VE.bin ..\Output\Fire_F103VE.axf
再把Run#1勾选上

这里E:\Keil_v5\ARM\ARMCC\bin\fromelf.exe是keil的安装目录下的格式转换工具 fromelf.exe的位置,..\Output\Fire_F103VE.bin ..\Output\Fire_F103VE.axf即为要转换.axf文件的位置和转化出的.bin文件的位置

内容实现

屏幕截图 2021-09-30 221527.png
该内容还可以通过无线模块实现无线远程烧录程序。