1. 优化Flash内存管理, Crc32延后, 避免还在不断写入数据导致立刻计算CRC

This commit is contained in:
coffee 2025-12-26 18:09:50 +08:00
parent 05e1e0557b
commit f0d6e3547c

View File

@ -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