IAP升级(STM32)
(未完,更新ing)
IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级
文件夹作用:
Bootloader先烧录到stm32,作为引导接受串口bin文件升级包,以及跳转到用户程序执行
IAP_FLASH_LED工程用作生成存储到FLASH地址段内的用户程序bin文件,用于串口发送给STM32用作IAP升级实验
IAP_SRAM_LED工程用作生成存储到SRAM地址段内的用户程序bin文件,用于串口发送给STM32用作IAP升级实验
两部分设计,bootloader、APP代码设计,bootloader用于检查APP区代码是否需要更新,以及跳转到APP区执行APP程序
Bootloader设计
Bootloader程序中根据芯片启动流程,将用户执行程序存放在地址:0x08010000
//第一个应用程序起始地址(存放在FLASH)
制作APP用户程序的.bin文件
FLASH:
要制作flash区的用户程序,首先选择IROM1更改start的地址为0x810000(不重叠于bootloader区占用地址0x800000+size)
同时在程序初始化前加上跳转指令,跳转到FLASH指定的地址(0x08010000)
接下来继续编写需要存储在FLASH的用户程序。
SRAM
需要用到keil MDK自带的执行文件将程序编译构建生成的.axf文件转化为.bin文件
首先在keil MDK软件路径下找到fromelf.exe执行程序,复制其地址,点击keil魔术棒图标
选择User下,勾选Run #1,在横线内填入 刚才复制fromelf.exe执行程序的本地路径,在结尾加上
--bin -o 要工程生成的.bin文件路径 工程编译构建生成的.axf路径
完整为:
fromelf.exe执行程序的本地路径 --bin -o 要工程生成的.bin文件路径 工程编译构建生成的.axf路径
例如我的路径为D:\keil_5.39\ARM\ARMCC\bin\fromelf.exe,工程文件名为keil_project则完整为:
D:\keil_5.39\ARM\ARMCC\bin\fromelf.exe --bin --output .\Objects\keil_project.bin .\Objects\keil_project.axf
勾选Run #1,填入脚本,目的是编译构建结束时将.axf文件转化为.bin文件