STM32的程序升级

程序升级的文件:HEX、bin

HEX文件:特点:适合ISP,不适合FOTA(因为HEX开始有ISP升级的头字段);KEIL中的生成:Options -> Output 下勾选Create HEX File

BIN文件:真正升级的二进制文件字节流,尺寸小,适合FOTA;KEIL中生成方法:User选项卡下面的 After Build/Rebuild 设置并打钩:fromelf --bin !L -o .\BIN\FOTA.bin。

程序升级过程:

  •   在APP运行过程中,如果条件触发(案件按下、串口收到指定命令或者字符,从指定存储位置读取的版本号比当前新),此时APP会从指定的源头(/USB/SD/网页服务器)把APP_new.bin文件一次性或者分包拷贝到MCU的备份区(MCU的flash备份区、外部FLASH),置位需要更新程序的标志到非易失存储位置(RTC的BKP区、MCU的EEPROM/FLASH区、外部的eerom/flash区),然后让程序跳转到IAP程序中(复位跳转、直接跳转);
  • 在IAP程序中,若有升级标志则先擦除APP_RUN—FLASH,然后将备份区的内容拷贝到此运行区并做好校验,然后继续跳转会运行程序区(复位、直接跳转);若无升级标志或者过一定时间无操作则跳会APP运行程序区;
  • 运行APP程序,并继续监控是否需要升级。

FLASH的分区:

分2个区(IAP+APP)+外存(usb/sd/):此种没有老程序的备份,万一升级失败就只能冲刷老程序

分3个区(IAP+APP_Run+APP_BKP备份缓存):这种比较浪费MCU的flash,成本上没有利用外存经济。

分4个区IAP+APP_Run+APP_MAIN+APP_STATIC:其中APP_STATIC为参数存储区,

程序升级重点是要解决升级过程中升级失败(升级过程中关中断,若串口中断接收关其它中断)或者分包传输(没有大缓存)分包错误的处理;无线升级要考虑到客户的方便性、配合度、安全性、大批量升级的效率问题

BOOTloader分类:单独开发、UBOOT/MCU厂商或者中间件厂商rtt提供的BOOT

 

一 非无线接口:(串口、SPI/I2C/CAN/485/USB/SD):

1.0 :

1.x:程序的合并烧写:通过JLINK将IAP和app的烧写文件进行合并成一个烧写文件,大量MCU批量烧写可以利用这种方法。

二 无线接口(WLAN/WIFI/蓝牙/GPRS):

转载于:https://www.cnblogs.com/jieruishu/p/11122849.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值