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