Обновление

This commit is contained in:
cfif 2026-01-16 12:58:16 +03:00
parent 3dea623473
commit 2fedb1f691
1 changed files with 12 additions and 13 deletions

View File

@ -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;