对STMG474RE Flash 空间大小不同BootLoader方法
程序员文章站
2024-01-01 09:26:16
1.1 FLASH空间足够大,能放下多APP+BootLoader主要针对STMG474RE FLASH空间有512KB状态图状态机系统下发固件RAM验证片内FLASH升级片内FLASH验证1××××2✔×××3✔✔××4✔✔✔×5✔✔✔✔应对方案:#mermaid-svg-zLUlI0eRpii1tM7t .label { font-family: 'trebuchet ms', v...
1.1 FLASH空间足够大,能放下多APP+BootLoader
- 主要针对STMG474RE FLASH空间有512KB
状态图
状态机 | 系统下发固件 | RAM验证 | 片内FLASH升级 | 片内FLASH验证 |
---|---|---|---|---|
1 | × | × | × | × |
2 | ✔ | × | × | × |
3 | ✔ | ✔ | × | × |
4 | ✔ | ✔ | ✔ | × |
5 | ✔ | ✔ | ✔ | ✔ |
应对方案:
- 构成如上三级结构
- 上位机下发固件代码到RAM,在RAM 中进行验证,确保RAM 中内容是正确的,再通过BootLoader将RAM 中的固件数据固定到FLASH中。并且验证数据有效性,确认数据是有效的,切换APP区域。运行新的APP。
FLASH结构图:
BootLoader流程:
- 进入BootLoader 读取标志位 选择升级还是等待上位机通讯
- 判断 Flash 校验和与EEPROM校验和是否相同 不同则升级
- 写入FLASH后读取FLASH校验和 判断写入是否有错误
- 若升级失败 记录升级失败的次数 若次数大于N 则擦除存储在EEPROM中的FirmWare和校验和 并置标志位 等待下次在BootLoader中与上位机通讯
2.1针对FLASH放不下两个APP应用,使用外部EEPROM作为暂存区
- 主要针对STMF334RBT6 FLASH空间仅有64KB
状态图
状态机 | 系统下发固件 | EEPROM验证 | 片内FLASH升级 | 片内FLASH验证 |
---|---|---|---|---|
1 | × | × | × | × |
2 | ✔ | × | × | × |
3 | ✔ | ✔ | × | × |
4 | ✔ | ✔ | ✔ | × |
5 | ✔ | ✔ | ✔ | ✔ |
应对方案:
- 构成如上三级结构
- 上位机下发固件代码到EEPROM,在EEPROM 中进行验证,确保EEPROM 中内容是正确的,再通过BootLoader将EEPROM 中的固件数据下载到FLASH中,EEPROM 在流程中充当了RAM的作用,也能作为冷备份。
Flash结构图
BootLoader流程:
- 进入BootLoader 读取标志位 选择升级还是等待上位机通讯
- 判断 Flash 校验和与EEPROM校验和是否相同 不同则升级
- 写入FLASH后读取FLASH校验和 判断写入是否有错误
- 若升级失败 记录升级失败的次数 若次数大于N 则擦除存储在EEPROM中的FirmWare和校验和 并置标志位 等待下次在BootLoader中与上位机通讯
本文地址:https://blog.csdn.net/qq_36142248/article/details/107908657