IAP升级(STM32)

IAP升级(STM32)

IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级

image-20250209211012513

文件夹作用:

Bootloader先烧录到stm32,作为引导接受串口bin文件升级包,以及跳转到用户程序执行

IAP_FLASH_LED工程用作生成存储到FLASH地址段内的用户程序bin文件,用于串口发送给STM32用作IAP升级实验

IAP_SRAM_LED工程用作生成存储到SRAM地址段内的用户程序bin文件,用于串口发送给STM32用作IAP升级实验

两部分设计,bootloader、APP代码设计,bootloader用于检查APP区代码是否需要更新,以及跳转到APP区执行APP程序

Bootloader设计

image-20250209220116386

Bootloader程序中根据芯片启动流程,将用户执行程序存放在地址:0x08010000

//第一个应用程序起始地址(存放在FLASH)image-20250209220500197

制作APP用户程序的.bin文件

FLASH:

要制作flash区的用户程序,首先选择IROM1更改start的地址为0x810000(不重叠于bootloader区占用地址0x800000+size)

image-20250209215602759

同时在程序初始化前加上跳转指令,跳转到FLASH指定的地址(0x08010000)image-20250209220249401

接下来继续编写需要存储在FLASH的用户程序。

image-20250209220903485

SRAM

img

img

需要用到keil MDK自带的执行文件将程序编译构建生成的.axf文件转化为.bin文件

首先在keil MDK软件路径下找到fromelf.exe执行程序,复制其地址,点击keil魔术棒图标

image-20250209213826424

选择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文件

img

posted @ 2025-02-09 22:20  沁拒离  阅读(391)  评论(0)    收藏  举报