From f0d6e3547c1b4f3cbb38211062d254a333210806 Mon Sep 17 00:00:00 2001 From: coffee Date: Fri, 26 Dec 2025 18:09:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BC=98=E5=8C=96Flash=E5=86=85=E5=AD=98?= =?UTF-8?q?=E7=AE=A1=E7=90=86,=20Crc32=E5=BB=B6=E5=90=8E,=20=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E8=BF=98=E5=9C=A8=E4=B8=8D=E6=96=AD=E5=86=99=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E8=87=B4=E7=AB=8B=E5=88=BB=E8=AE=A1?= =?UTF-8?q?=E7=AE=97CRC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/HFlashServer.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/HFlashServer.c b/src/HFlashServer.c index 988c9f1..0ff78d2 100644 --- a/src/HFlashServer.c +++ b/src/HFlashServer.c @@ -121,10 +121,10 @@ static HTimer_t sBackupTimer = HTIMER_INVALID; #ifndef HFLASH_USE_FLASH_MEM // 同步页定时器 static HTimer_t sSyncPageTimer = HTIMER_INVALID; +#endif // 同步页表缓存定时器 static HTimer_t sSyncCacheTimer = HTIMER_INVALID; -#endif // 存储需要备份的保护区地址页偏移 static HVECTOR_DEFINE32(sNeedBackupOffset, 10); @@ -607,12 +607,10 @@ static void WritePage(uint32_t index, HFlashPageInfo *info) static void SyncCachePage() { -#ifndef HFLASH_USE_FLASH_MEM if (sSyncCacheTimer != HTIMER_INVALID) { HTimerRemove(sSyncCacheTimer); sSyncCacheTimer = HTIMER_INVALID; } -#endif for (uint32_t i = 0; i < sInfo.pageCacheUseNum; ++i) { // 更新Crc32 @@ -635,7 +633,6 @@ static void SyncCachePage() #endif } -#ifndef HFLASH_USE_FLASH_MEM static void StartSyncCachePage() { if (sSyncCacheTimer != HTIMER_INVALID) { @@ -644,15 +641,22 @@ static void StartSyncCachePage() } sSyncCacheTimer = HTimerAdd(HFLASH_TIMER_ID, HFLASH_SYNC_CACHE_PAGE_TIME, SyncCachePage, kHTimerOnce); +#ifndef HFLASH_USE_FLASH_MEM StartSyncPageInfo(); -} #endif +} static void WriteCachePage(HFlashCacheInfo *info) { ++info->info.modifyCount; info->waitWrite = 1; #ifdef HFLASH_USE_FLASH_MEM + // 如果是延迟CRC的, 不需要立刻同步, 避免还在不断写 + if (info->waitCrc) { + StartSyncCachePage(); + return ; + } + SyncCachePage(); SyncPageInfo(); #else