1) 首先是BootLoader程序设置:根据common.h里面的宏定义,设置BootLoader所占用的Flash空间。
2) 设置UserApp程序设置:该型号Flash总大小为0x80000(512K字节),从上面得知UserApp的起始地址为0x8003000,即偏移量为0X3000(12K字节),所以, UserAPP可用FLASH空间(Size) = 0X80000 - 0X3000=0X7D000(500K字节)大小了。设置好Start和Szie,就完成UserAPP程序的起始地址设置。
3) 中断向量表的偏移量设置
在系统启动时,首先调用SystemInit()初始化系统时钟,同时SystemInit()还完成了中断向量表的设置。所以UserApp程序开头要加上一句:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);
4) *bin文件生成
在MDK点击Options for TargetUser选项卡,在Run User Programs After Build/Rebuild 栏,勾选Run#1,并写入:D:Keil_v5ARMARMCCinfromelf.exe --bin -o . ObjectsIAP.bin . ObjectsIAP.axf,如图所示:
根据当前工程的IAP.axf(名称根据工程名自行修改,这个文件生成在Objects目录里,名为xxx.axf),生成一个IAP.bin的文件。并存放在axf文件相同的目录下,即工程的Objects文件夹里面。在得到.bin文件之后,我们只需要将这个bin文件传送给单片机,即可执行IAP升级。