Обновление
This commit is contained in:
parent
d543c67e5f
commit
7fc05c077e
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue