来源
三种下载方式:
1、ICP:ST-Link,
2、ISP: FlyMcu,
3、IAP
IAP简介
IAP技术的核心在于BootLoader程序的设计,这段程序预先烧录在单片机中,正常的APP程序可以使用BootLoader程序中的IAP功能写入,也可以两部分代码一起写入,以后需要程序更新时通过IAP进行代码更新。每次板卡上电都会首先执行BootLoader程序,在程序内判断进行固件升级还是跳转到正常的APP程序。
是否进行固件升级的判断可以从硬件和软件两个方面进行考虑。
硬件实现:通过拨码开关、跳线帽等方式设定单片机某一引脚电平状态,程序通过读取引脚电平判断是否需要升级。此种方式需要接触板卡进行操作,当板卡被封闭在外壳中或安装于不便于操作位置时很难实现。
软件实现-1:软件内设定一标志位(变量),通过判断标志位状态判断是否需要升级。该标志位状态掉电不能改变,故需要存储在外部EEPROM或单片机内部FLASH中。若存储在外部EEPROM,则需要增加额外的电路;若存储在单片机内部FLASH,由于FLASH每次写入都需要擦除一整页,会造成资源浪费。
软件实现-2:单片机每次上电首先进入BootLoader程序,在BootLoader中等待一定时间,若上位机软件在该时间段内发起通讯,则停留在BootLoader程序中等待固件升级;若该时间段内无通讯,则跳转到正常的APP程序。该方式每次上电都要等待一定时间,需要考虑是否可以介绍。
……
在IAP过程中,单片机通过特定的通讯方式从上位机软件接收程序数据,并执行FLASH擦写操作对APP部分的程序进行更新。
配置
IAP过程中传输的数据文件一般为后缀名为bin的文件。
FLASH空间划分
IAP程序设计
实现IAP技术的核心是一段预先烧写在单片机内部的IAP程序。
这段程序主要负责与外部的上位机软件进行握手同步,
然后将通过外设通信接口将来自于上位机软件的程序数据接收后写入单片机内部指定的闪存区域,然后再跳转执行新写入的程序,
最终就达到了程序更新的目的。
IAP(BootLoader)编程关键技术
-
通信
-
Flash擦写
-
APP跳转
通信需要考虑的问题
- 选用何种通信方式:串口、CAN、以太网…
- 通信协议:数据分发、帧头帧尾校验
- 配套上位机
STM32 的内部闪存(FLASH)地址起始于 0x08000000,一般情况下,程序文件就从此地址开始写入。