diff --git a/Src/freertos.c b/Src/freertos.c index c0c371a1..f2fb6477 100644 --- a/Src/freertos.c +++ b/Src/freertos.c @@ -233,6 +233,10 @@ void StartDefaultTask(void *argument) DBG_INFO("[FS] no FAT volume, formatting NAND..."); static uint8_t fs_work[FF_MAX_SS]; MKFS_PARM opts = { FM_FAT32, 0, 0, 0, 0 }; + /* 格式化前清空 FTL map 树(2026-09-20 台架实证:不清则 mkfs 经旧树 + * 写新卷 → on-disk 树残留旧节点/旧绑定 → 复位后 resume 混用新旧 → + * FAT 探针失败 → 无限重格式化) */ + (void)nand_ftl_format(); fr = f_mkfs("", &opts, fs_work, sizeof(fs_work)); if (fr == FR_OK) { fr = f_mount(&default_fatfs, "", 1); @@ -279,6 +283,8 @@ void StartDefaultTask(void *argument) DBG_INFO("[FS] volume FAT invalid (fr=%d), reformatting...", (int)hfr); f_mount(NULL, "", 0); + /* 格式化前清空 FTL map 树(同首启路径:防新旧树混合) */ + (void)nand_ftl_format(); { static uint8_t fs_work2[FF_MAX_SS]; MKFS_PARM opts2 = { FM_FAT32, 0, 0, 0, 0 };