Обновление

This commit is contained in:
cfif 2025-12-23 15:22:57 +03:00
parent d543c67e5f
commit 7fc05c077e
2 changed files with 14 additions and 0 deletions

View File

@ -7,10 +7,12 @@
#include "stddef.h" #include "stddef.h"
#include "StorageIO.h" #include "StorageIO.h"
#include "LoggerInterface.h"
typedef struct { typedef struct {
uint32_t mainFlashPageAddress; uint32_t mainFlashPageAddress;
uint32_t recoveryFlashPageAddress; uint32_t recoveryFlashPageAddress;
tLoggerInterface *logger;
} tStorageOnFlashFlagchip; } tStorageOnFlashFlagchip;
void vStorageOnFlashFlagchip_Init( void vStorageOnFlashFlagchip_Init(

View File

@ -4,6 +4,9 @@
#include "InternalFlashPage.h" #include "InternalFlashPage.h"
#include "StorageOnFlashFlagchip.h" #include "StorageOnFlashFlagchip.h"
#define LOGGER env->logger
#define LOG_SIGN "Storage"
static uint32_t xStorageOnFlashArtery_Crc(uint8_t *data, size_t len) { static uint32_t xStorageOnFlashArtery_Crc(uint8_t *data, size_t len) {
uint32_t crc = 0; uint32_t crc = 0;
@ -101,9 +104,15 @@ eStorageStatus xStorageOnFlashFlagchip_Load(tStorageOnFlashFlagchip *env, void *
uint32_t recoveryCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->recoveryFlashPageAddress, size); uint32_t recoveryCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->recoveryFlashPageAddress, size);
uint32_t recoveryCrcReed = iInternalFlashPage_ReadWord(env->recoveryFlashPageAddress + dataSizeOnFlash); uint32_t recoveryCrcReed = iInternalFlashPage_ReadWord(env->recoveryFlashPageAddress + dataSizeOnFlash);
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc recovery page (calc): 0x%08X", recoveryCrcCalc)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc recovery page (flash): 0x%08X", recoveryCrcReed)
uint32_t mainCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->mainFlashPageAddress, size); uint32_t mainCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->mainFlashPageAddress, size);
uint32_t mainCrcReed = iInternalFlashPage_ReadWord(env->mainFlashPageAddress + dataSizeOnFlash); uint32_t mainCrcReed = iInternalFlashPage_ReadWord(env->mainFlashPageAddress + dataSizeOnFlash);
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (calc): 0x%08X", mainCrcCalc)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (flash): 0x%08X", mainCrcReed)
bool recoveryCrcOk = (recoveryCrcCalc == recoveryCrcReed); bool recoveryCrcOk = (recoveryCrcCalc == recoveryCrcReed);
bool mainCrcOk = (mainCrcReed == mainCrcCalc); bool mainCrcOk = (mainCrcReed == mainCrcCalc);
@ -112,14 +121,17 @@ eStorageStatus xStorageOnFlashFlagchip_Load(tStorageOnFlashFlagchip *env, void *
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size); sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size);
return STORAGE_OK; return STORAGE_OK;
} else { } else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page ")
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size); sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size);
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size); return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size);
} }
} else if (recoveryCrcOk || mainCrcOk) { } else if (recoveryCrcOk || mainCrcOk) {
if (recoveryCrcOk) { if (recoveryCrcOk) {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page")
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size); sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size);
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size); return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size);
} else { } else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery recovery page")
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size); sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size);
return xStorageOnFlashFlagchip_DumpOn(env, mainCrcCalc, env->recoveryFlashPageAddress, data, size); return xStorageOnFlashFlagchip_DumpOn(env, mainCrcCalc, env->recoveryFlashPageAddress, data, size);
} }