feat(upgrade): 升级完成置APP_BOOT_UPGRADE_FLAG标记,参数分区擦除改由App侧执行

- 升级成功(CRC32校验通过)后AppFlag置APP_BOOT_UPGRADE_FLAG(0x5A5A55A5),每次升级均置位
- 启动判断放行该标记: 升级完成后直接启动App,不再停留在BL_IDLE
- 擦除动作由App初始化完成: 检测标记后擦除外部SPI Flash参数分区(扇区0~1,非全片擦除,历史日志保留),随后恢复APP_START_FLAG并加载默认参数
- 目的: 防止固件升级后参数结构体布局变化导致字段错位(曾引发注册表乱码/传感器无法注册)
- main.h统一UTF-8编码,新增APP_BOOT_UPGRADE_FLAG定义(与App侧bsp.h保持一致)
- bsp.h配置更新: 网关编号0x0003,服务器端口8083
This commit is contained in:
2026-09-03 19:00:41 +08:00
parent 77be326a42
commit df27be161b
4 changed files with 39 additions and 11 deletions
+6 -2
View File
@@ -221,7 +221,9 @@ bool AnalyzeData(uint8_t *rData, uint16_t rLen)
/*全部数据处理完成, 校验CRC32*/
uint32_t crc32 = GetCrc32(BL.Para.AppSize);
if(crc32 == BL.Para.Crc32Check) {
BL.Para.AppFlag = APP_START_FLAG;
/*置升级完成标记(每次升级均置位):Boot本身不擦除外部Flash,
App启动时检测到此标记后擦除外部参数分区并恢复APP_START_FLAG*/
BL.Para.AppFlag = APP_BOOT_UPGRADE_FLAG;
BL.Para.UpdateFlag = 0;
WriteBootPara(&BL.Para);
BL.BootLoader1mSDlyCnt = 100;
@@ -460,7 +462,9 @@ int32_t main(void)
WriteBootPara(&BL.Para);
}
if(BL.Para.AppFlag == APP_START_FLAG) {
/*APP_BOOT_UPGRADE_FLAG也需直接启动App:升级完成后由App擦除外部参数分区,
若此处不放行,设备升级完会停留在BL_IDLE等待升级命令而无法启动*/
if(BL.Para.AppFlag == APP_START_FLAG || BL.Para.AppFlag == APP_BOOT_UPGRADE_FLAG) {
BL.Status = BL_START_APP;
}
else if(BL.Para.UpdateFlag == APP_UPDATE_FLAG) {