diff --git a/V1.4-Chinese/STM32F103_BootLoader/m_app/ota_boot.c b/V1.4-Chinese/STM32F103_BootLoader/m_app/ota_boot.c index a18f06f..f0c8596 100644 --- a/V1.4-Chinese/STM32F103_BootLoader/m_app/ota_boot.c +++ b/V1.4-Chinese/STM32F103_BootLoader/m_app/ota_boot.c @@ -538,11 +538,16 @@ void Start_BootLoader(void) } } - /* 3. 回退状态:直接跳转当前 APP1 */ + /* 3. 回退状态:跳转当前 APP1(先校验,防止 APP 被擦除后跳入空片) */ if (info_ok && info.update_state == W25Q64_STATE_ROLLBACK) { - IAP_ExecuteApp(Application_1_Addr); - return; + if (Verify_Firmware(Application_1_Addr, Application_Size)) + { + IAP_ExecuteApp(Application_1_Addr); + return; + } + log_warn("[BL] 回退状态但 APP1 无效,清除 OTA 标志"); + W25Q64_OTA_ClearNew(); } /* 4. 没有 OTA 任务:直接启动 APP1 */