Обновление
This commit is contained in:
parent
3dea623473
commit
2fedb1f691
|
|
@ -97,18 +97,17 @@ static uint8_t xStorageOnFlashFlagchip_Dump(tStorageOnFlashFlagchip *env, void *
|
||||||
|
|
||||||
eStorageStatus xStorageOnFlashFlagchip_Load(tStorageOnFlashFlagchip *env, void *data, size_t size) {
|
eStorageStatus xStorageOnFlashFlagchip_Load(tStorageOnFlashFlagchip *env, void *data, size_t size) {
|
||||||
|
|
||||||
size = size - 8;
|
|
||||||
|
|
||||||
size_t dataSizeOnFlash = size;//(size + 3) & (~3); // выравниваем до кратного 4 (целое количество слов)
|
size_t offset_crc = size - 8;
|
||||||
|
|
||||||
uint32_t recoveryCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->recoveryFlashPageAddress, size);
|
uint32_t recoveryCrcCalc = xStorageOnFlashArtery_CrcFlash((uint8_t *) env->recoveryFlashPageAddress, offset_crc);
|
||||||
uint32_t recoveryCrcReed = iInternalFlashPage_ReadWord(env->recoveryFlashPageAddress + dataSizeOnFlash);
|
uint32_t recoveryCrcReed = iInternalFlashPage_ReadWord(env->recoveryFlashPageAddress + offset_crc);
|
||||||
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc recovery page (calc): 0x%08X", recoveryCrcCalc)
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc recovery page (calc): 0x%08X", recoveryCrcCalc)
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc recovery page (flash): 0x%08X", recoveryCrcReed)
|
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, offset_crc);
|
||||||
uint32_t mainCrcReed = iInternalFlashPage_ReadWord(env->mainFlashPageAddress + dataSizeOnFlash);
|
uint32_t mainCrcReed = iInternalFlashPage_ReadWord(env->mainFlashPageAddress + offset_crc);
|
||||||
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (calc): 0x%08X", mainCrcCalc)
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (calc): 0x%08X", mainCrcCalc)
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (flash): 0x%08X", mainCrcReed)
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Crc main page (flash): 0x%08X", mainCrcReed)
|
||||||
|
|
@ -118,22 +117,22 @@ eStorageStatus xStorageOnFlashFlagchip_Load(tStorageOnFlashFlagchip *env, void *
|
||||||
|
|
||||||
if (recoveryCrcOk && mainCrcOk) {
|
if (recoveryCrcOk && mainCrcOk) {
|
||||||
if (recoveryCrcReed == mainCrcReed) {
|
if (recoveryCrcReed == mainCrcReed) {
|
||||||
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size);
|
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, offset_crc);
|
||||||
return STORAGE_OK;
|
return STORAGE_OK;
|
||||||
} else {
|
} else {
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page (main page <- recovery) ")
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page (main page <- recovery) ")
|
||||||
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size);
|
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, offset_crc);
|
||||||
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size);
|
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, offset_crc);
|
||||||
}
|
}
|
||||||
} else if (recoveryCrcOk || mainCrcOk) {
|
} else if (recoveryCrcOk || mainCrcOk) {
|
||||||
if (recoveryCrcOk) {
|
if (recoveryCrcOk) {
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page (main page <- recovery)")
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery main page (main page <- recovery)")
|
||||||
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, size);
|
sInternalFlashPage_Read(env->recoveryFlashPageAddress, 0x0, data, offset_crc);
|
||||||
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, size);
|
return xStorageOnFlashFlagchip_DumpOn(env, recoveryCrcCalc, env->mainFlashPageAddress, data, offset_crc);
|
||||||
} else {
|
} else {
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery recovery page (main page -> recovery)")
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Data recovery recovery page (main page -> recovery)")
|
||||||
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, size);
|
sInternalFlashPage_Read(env->mainFlashPageAddress, 0x0, data, offset_crc);
|
||||||
return xStorageOnFlashFlagchip_DumpOn(env, mainCrcCalc, env->recoveryFlashPageAddress, data, size);
|
return xStorageOnFlashFlagchip_DumpOn(env, mainCrcCalc, env->recoveryFlashPageAddress, data, offset_crc);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return STORAGE_ERR_DATA;
|
return STORAGE_ERR_DATA;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue