1. 删除延后定时器, 使用立刻同步
This commit is contained in:
parent
06486210e1
commit
1292ac8fc2
@ -104,6 +104,6 @@ void HFlashMemSync();
|
||||
/**
|
||||
* @brief 释放缓存页
|
||||
*/
|
||||
void HFlashFreeCache();
|
||||
void HFlashMemFreeCache();
|
||||
|
||||
#endif // __H_FLASH_MEM_H__
|
||||
|
||||
@ -314,4 +314,9 @@ uint32_t HFlashCalcCrc32(HFlashAddr_t addr);
|
||||
*/
|
||||
void HFlashSync();
|
||||
|
||||
/**
|
||||
* @brief HFlashFreeCache 释放缓存
|
||||
*/
|
||||
void HFlashFreeCache();
|
||||
|
||||
#endif // __H_FLASH_SERVER_H__
|
||||
|
||||
@ -453,7 +453,7 @@ void HFlashMemSync()
|
||||
SyncCache();
|
||||
}
|
||||
|
||||
void HFlashFreeCache()
|
||||
void HFlashMemFreeCache()
|
||||
{
|
||||
HFlashMemSync();
|
||||
sInfo.useNum = 0;
|
||||
|
||||
@ -108,11 +108,13 @@ static union PageInfo sPageInfo;
|
||||
// 备份定时器
|
||||
static HTimer_t sBackupTimer = HTIMER_INVALID;
|
||||
|
||||
#ifndef USE_FLASH_MEM
|
||||
// 同步页定时器
|
||||
static HTimer_t sSyncPageTimer = HTIMER_INVALID;
|
||||
|
||||
// 同步定时器
|
||||
// 同步页表缓存定时器
|
||||
static HTimer_t sSyncCacheTimer = HTIMER_INVALID;
|
||||
#endif
|
||||
|
||||
// 存储需要备份的保护区地址页偏移
|
||||
static HVECTOR_DEFINE32(sNeedBackupOffset, 10);
|
||||
@ -537,10 +539,12 @@ static uint8_t RestorePage(uint32_t index)
|
||||
|
||||
static void SyncPageInfo()
|
||||
{
|
||||
#ifndef USE_FLASH_MEM
|
||||
if (sSyncPageTimer != HTIMER_INVALID) {
|
||||
HTimerRemove(sSyncPageTimer);
|
||||
sSyncPageTimer = HTIMER_INVALID;
|
||||
}
|
||||
#endif
|
||||
|
||||
const uint32_t crcValue = GetFlashCrc32(AdjustPageAddr(sInfo.pageAddr), AdjustPageByte(sPageInfo.useNum));
|
||||
if (crcValue == sPageInfo.crc32) {
|
||||
@ -552,6 +556,7 @@ static void SyncPageInfo()
|
||||
StartSyncBackupTimer();
|
||||
}
|
||||
|
||||
#ifndef USE_FLASH_MEM
|
||||
static void StartSyncPageInfo()
|
||||
{
|
||||
if (sSyncPageTimer != HTIMER_INVALID) {
|
||||
@ -562,6 +567,7 @@ static void StartSyncPageInfo()
|
||||
sSyncPageTimer = HTimerAdd(HFLASH_TIMER_ID, HFLASH_SYNC_PAGE_INFO_TIME, SyncPageInfo, kHTimerOnce);
|
||||
StartSyncBackupTimer();
|
||||
}
|
||||
#endif
|
||||
|
||||
static void ReadPage(uint32_t index, HFlashPageInfo *info)
|
||||
{
|
||||
@ -583,16 +589,22 @@ static void WritePage(uint32_t index, HFlashPageInfo *info)
|
||||
|
||||
const HFlashAddr_t addr = AdjustPageAddrOffset(sInfo.pageAddr, index);
|
||||
WriteFlash(addr, info, sizeof(HFlashPageInfo));
|
||||
#ifdef USE_FLASH_MEM
|
||||
SyncPageInfo();
|
||||
#else
|
||||
StartSyncPageInfo();
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void SyncCachePage()
|
||||
{
|
||||
#ifndef USE_FLASH_MEM
|
||||
if (sSyncCacheTimer != HTIMER_INVALID) {
|
||||
HTimerRemove(sSyncCacheTimer);
|
||||
sSyncCacheTimer = HTIMER_INVALID;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (uint32_t i = 0; i < sInfo.pageCacheUseNum; ++i) {
|
||||
// 更新Crc32
|
||||
@ -608,9 +620,14 @@ static void SyncCachePage()
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_FLASH_MEM
|
||||
SyncPageInfo();
|
||||
#else
|
||||
StartSyncPageInfo();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef USE_FLASH_MEM
|
||||
static void StartSyncCachePage()
|
||||
{
|
||||
if (sSyncCacheTimer != HTIMER_INVALID) {
|
||||
@ -621,12 +638,18 @@ static void StartSyncCachePage()
|
||||
sSyncCacheTimer = HTimerAdd(HFLASH_TIMER_ID, HFLASH_SYNC_CACHE_PAGE_TIME, SyncCachePage, kHTimerOnce);
|
||||
StartSyncPageInfo();
|
||||
}
|
||||
#endif
|
||||
|
||||
static void WriteCachePage(HFlashCacheInfo *info)
|
||||
{
|
||||
++info->info.modifyCount;
|
||||
info->waitWrite = 1;
|
||||
#ifdef USE_FLASH_MEM
|
||||
SyncCachePage();
|
||||
SyncPageInfo();
|
||||
#else
|
||||
StartSyncCachePage();
|
||||
#endif
|
||||
}
|
||||
|
||||
/// 检查是否重叠, 重叠返回1, 非重叠返回0
|
||||
@ -1425,3 +1448,12 @@ void HFlashSync()
|
||||
HFlashMemSync();
|
||||
#endif
|
||||
}
|
||||
|
||||
void HFlashFreeCache()
|
||||
{
|
||||
HFlashSync();
|
||||
sInfo.pageCacheUseNum = 0;
|
||||
#ifdef USE_FLASH_MEM
|
||||
HFlashMemFreeCache();
|
||||
#endif
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user