STM32的IAP原理及其操作流程分析

首先明确几个基础概念:

下图的start是程序存放在单片机内部flash的起始地址,size是你给你程序留的flash大小。

一般我们会去找对应map文件,可以查看程序占用多少kb,由下图可见我们的程序占用flash的空间为8.14kb。因此起码要在flash中给8.14kb的存储空间。

2:有了上述概念后我们再说一下IAP目的和操作流程。

如图:摘自百度百科

简而言之,IAP就是给客户用的。

IAP需要准备两部分程序,一个是IAP启动程序,一个是我们项目APP程序。IAP启动程序用于启动项目APP程序。两个程序都要放在flash上不同地方。程序上电复位后都是默认运行我们的IAP启动程序,至于是否更新和运行我们的APP程序则取决于我们后续写的代码。

1:首先准备项目APP程序。将程序的起始地址和尺寸修改如下:

代表程序起始地址为0x8010000,尺寸大小给了0XF0000,也就是960Kb。

然后在程序开头加上这行代码:

 

 SCB->VTOR = FLASH_BASE | (0x10000 & (uint32_t)0xFFFFFE00);  //IAP

 

代码中的FLASH_BASE和0x10000分别与上上图中标准的起始地址和偏移量对应

2:在下图位置按标号顺序操作添加如下指令并给Run#1打勾:

 

fromelf.exe --bin -o "$L@L.bin" "#L"

3按上述操作后,编译文件,生成了bin文件

 再去工程文件夹下找到对应的bin文件

 

准备好APP的bin文件后,再来准备IAP启动文件:

1:IAP启动程序的大小通过找.map文件查看程序占用flash大小,从图可得只有8KB

 

因此IAP程序的设置如下:给启动文件64kb空间

 然后代码部分如下:程序上电后等待上位机更新,如果等待6s没有更新指令,则执行旧的flash里面的项目APP程序。这里的起始地址加size要等于项目APP程序的起始地址0x8010000。项目APP的size则可以自行设定。

 STM32F412VGT6的启动文件程序IAP已经上传百度云。

链接:https://pan.baidu.com/s/1FslsWV7I8Z3NXtkfoea54A 提取码:f68p hi,这是我用百度网盘分享的内容~复制这段内容打开「百度网盘」APP即可获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值