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