feat(boot): 升级改造为A/B分区(新固件先下B区整包校验后搬运A区)

分区: Boot 32KB | A区0x8000(29扇区232KB,运行) | B区0x42000(29扇区232KB,暂存) | 参数区0x7C000不变
流程: 仅擦B区下载→CRC32(B)通过→逐扇区搬运B→A→CRC32(A)通过→擦B区→置APP_BOOT_UPGRADE_FLAG复位
防变砖: 下载超时/CRC失败/AppSize非法均恢复APP_START_FLAG复位回老App; 断电续传靠重启后B区CRC判定
其他: GetCrc32/AppWriteFlash/EraseFlash基址参数化, FlashWrite尾字节0xFF补齐, 0x82增加状态守卫
协议与boot_para_t结构不变, 主机升级工具无需修改
This commit is contained in:
2026-09-23 11:16:47 +08:00
parent ffaf7a55a6
commit 48ed25015d
4 changed files with 140 additions and 38 deletions
+2
View File
@@ -52,6 +52,7 @@ typedef enum {
BL_WAIT_REV,
BL_GET_DATA_TIMEOUT,
BL_START_APP,
BL_COPY_TO_A, //B区镜像搬运到A区阶段
BL_RESET
}BootStatus_m;
@@ -62,6 +63,7 @@ typedef struct {
uint32_t AppPackageCnt;
uint32_t AppPackageIdx;
uint32_t RevErrCnt;
uint32_t CopyRetryCnt; //搬运重试计数
uint32_t FeedDogDlyCnt;
uint32_t BootLoader1mSDlyCnt;