diff --git a/firmware/config/boards/cypress/efifeatures.h b/firmware/config/boards/cypress/efifeatures.h index 855b4aef22..4d8232c84a 100644 --- a/firmware/config/boards/cypress/efifeatures.h +++ b/firmware/config/boards/cypress/efifeatures.h @@ -355,6 +355,8 @@ #define RAM_UNUSED_SIZE 1 #define CCM_UNUSED_SIZE 1 +#define EFI_BACKUP_SRAM FALSE + #define EFI_PRINT_ERRORS_AS_WARNINGS TRUE //#define EFI_PRINT_MESSAGES_TO_TERMINAL TRUE diff --git a/firmware/config/boards/kinetis/efifeatures.h b/firmware/config/boards/kinetis/efifeatures.h index 29fe4bcfc0..8fc5d92be3 100644 --- a/firmware/config/boards/kinetis/efifeatures.h +++ b/firmware/config/boards/kinetis/efifeatures.h @@ -336,6 +336,8 @@ #define RAM_UNUSED_SIZE 1 #define CCM_UNUSED_SIZE 1 +#define EFI_BACKUP_SRAM FALSE + #define EFI_PRINT_ERRORS_AS_WARNINGS TRUE // #define EFI_PRINT_MESSAGES_TO_TERMINAL TRUE diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index 0ee6ea78f0..c096fb0eea 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -25,6 +25,10 @@ #define EFI_ANTILAG_SYSTEM TRUE #endif +#ifndef EFI_BACKUP_SRAM +#define EFI_BACKUP_SRAM TRUE +#endif + #define EFI_DYNO_VIEW TRUE #ifndef EFI_CDM_INTEGRATION diff --git a/firmware/controllers/core/error_handling.cpp b/firmware/controllers/core/error_handling.cpp index 584dedda6a..c77b26e02b 100644 --- a/firmware/controllers/core/error_handling.cpp +++ b/firmware/controllers/core/error_handling.cpp @@ -25,6 +25,7 @@ const char* getCriticalErrorMessage(void) { #if EFI_PROD_CODE void checkLastBootError() { +#if EFI_BACKUP_SRAM auto sramState = getBackupSram(); switch (sramState->Cookie) { @@ -57,15 +58,18 @@ void checkLastBootError() { efiPrintf("Power cycle count: %d", sramState->BootCount); sramState->BootCount++; +#endif // EFI_BACKUP_SRAM } void logHardFault(uint32_t type, uintptr_t faultAddress, port_extctx* ctx, uint32_t csfr) { +#if EFI_BACKUP_SRAM auto sramState = getBackupSram(); sramState->Cookie = ErrorCookie::HardFault; sramState->FaultType = type; sramState->FaultAddress = faultAddress; sramState->Csfr = csfr; memcpy(&sramState->FaultCtx, ctx, sizeof(port_extctx)); +#endif // EFI_BACKUP_SRAM } extern ioportid_t criticalErrorLedPort; @@ -258,11 +262,13 @@ void firmwareError(ObdCode code, const char *fmt, ...) { strcpy((char*)(criticalErrorMessageBuffer) + errorMessageSize, versionBuffer); } +#if EFI_BACKUP_SRAM auto sramState = getBackupSram(); if (sramState != nullptr) { strncpy(sramState->ErrorString, criticalErrorMessageBuffer, efi::size(sramState->ErrorString)); sramState->Cookie = ErrorCookie::FirmwareError; } +#endif // EFI_BACKUP_SRAM #else char errorBuffer[200];