diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index b10a88a4d6..71a7f0264e 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -147,11 +147,11 @@ #define EFI_POTENTIOMETER FALSE #ifndef BOARD_TLE6240_COUNT -#define BOARD_TLE6240_COUNT 1 +#define BOARD_TLE6240_COUNT 0 #endif #ifndef BOARD_MC33972_COUNT -#define BOARD_MC33972_COUNT 1 +#define BOARD_MC33972_COUNT 0 #endif #ifndef BOARD_TLE8888_COUNT diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index b0f3649de4..bc39314893 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -584,7 +584,7 @@ void handleQueryCommand(TsChannelBase* tsChannel, ts_response_format_e mode) { */ static void handleTestCommand(TsChannelBase* tsChannel) { tsState.testCommandCounter++; - static char testOutputBuffer[64]; + char testOutputBuffer[64]; /** * this is NOT a standard TunerStudio command, this is my own * extension of the protocol to simplify troubleshooting @@ -611,7 +611,7 @@ static void handleTestCommand(TsChannelBase* tsChannel) { extern CommandHandler console_line_callback; static void handleGetVersion(TsChannelBase* tsChannel) { - static char versionBuffer[32]; + char versionBuffer[32]; chsnprintf(versionBuffer, sizeof(versionBuffer), "rusEFI v%d@%s", getRusEfiVersion(), VCS_VERSION); tsChannel->sendResponse(TS_CRC, (const uint8_t *) versionBuffer, strlen(versionBuffer) + 1); } diff --git a/firmware/controllers/actuators/idle_hardware.cpp b/firmware/controllers/actuators/idle_hardware.cpp index 8467f4b4ff..ce45d178a9 100644 --- a/firmware/controllers/actuators/idle_hardware.cpp +++ b/firmware/controllers/actuators/idle_hardware.cpp @@ -17,9 +17,9 @@ #include "dc_motors.h" #if ! EFI_UNIT_TEST #include "stepper.h" -static StepDirectionStepper iacStepperHw; -static DualHBridgeStepper iacHbridgeHw; -StepperMotor iacMotor; +static StepDirectionStepper iacStepperHw CCM_OPTIONAL; +static DualHBridgeStepper iacHbridgeHw CCM_OPTIONAL; +StepperMotor iacMotor CCM_OPTIONAL; #endif /* EFI_UNIT_TEST */ static SimplePwm idleSolenoidOpen("idle open"); diff --git a/firmware/controllers/actuators/vvt.cpp b/firmware/controllers/actuators/vvt.cpp index 2180c3f730..58462441b0 100644 --- a/firmware/controllers/actuators/vvt.cpp +++ b/firmware/controllers/actuators/vvt.cpp @@ -99,7 +99,7 @@ void VvtController::setOutput(expected outputValue) { #if EFI_AUX_PID -static VvtController instances[CAM_INPUTS_COUNT]; +static VvtController instances[CAM_INPUTS_COUNT] CCM_OPTIONAL; static void turnAuxPidOn(int index) { if (!isBrainPinValid(engineConfiguration->auxPidPins[index])) { diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index a736303184..ad653577a8 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -76,10 +76,10 @@ static LENameOrdinalPair leFuelRate(LE_METHOD_FUEL_FLOW_RATE, "fuel_flow"); #define UD_ELEMENT_POOL_SIZE 64 static LEElement sysElements[SYS_ELEMENT_POOL_SIZE] CCM_OPTIONAL; -LEElementPool sysPool(sysElements, SYS_ELEMENT_POOL_SIZE); +CCM_OPTIONAL LEElementPool sysPool(sysElements, SYS_ELEMENT_POOL_SIZE); static LEElement userElements[UD_ELEMENT_POOL_SIZE] CCM_OPTIONAL; -LEElementPool userPool(userElements, UD_ELEMENT_POOL_SIZE); +CCM_OPTIONAL LEElementPool userPool(userElements, UD_ELEMENT_POOL_SIZE); class FsioPointers { public: @@ -277,7 +277,7 @@ void onConfigurationChangeFsioCallback(engine_configuration_s *previousConfigura #endif } -static LECalculator calc; +static LECalculator calc CCM_OPTIONAL; static SimplePwm fsioPwm[FSIO_COMMAND_COUNT] CCM_OPTIONAL; diff --git a/firmware/controllers/gauges/malfunction_indicator.cpp b/firmware/controllers/gauges/malfunction_indicator.cpp index d5cb7a521e..be3ecd427c 100644 --- a/firmware/controllers/gauges/malfunction_indicator.cpp +++ b/firmware/controllers/gauges/malfunction_indicator.cpp @@ -103,7 +103,7 @@ private: } }; -static MILController instance; +static MILController instance CCM_OPTIONAL; #if TEST_MIL_CODE static void testMil(void) { diff --git a/firmware/controllers/sensors/map.cpp b/firmware/controllers/sensors/map.cpp index 208b6ffd1b..ec2f03f889 100644 --- a/firmware/controllers/sensors/map.cpp +++ b/firmware/controllers/sensors/map.cpp @@ -244,7 +244,7 @@ static void printMAPInfo(void) { #endif // EFI_MAP_AVERAGING adc_channel_e mapAdc = engineConfiguration->map.sensor.hwChannel; - static char pinNameBuffer[16]; + char pinNameBuffer[16]; efiPrintf("MAP %.2fv @%s", getVoltage("mapinfo", mapAdc PASS_ENGINE_PARAMETER_SUFFIX), getPinNameByAdcChannel("map", mapAdc, pinNameBuffer)); diff --git a/firmware/hw_layer/adc/adc_subscription.cpp b/firmware/hw_layer/adc/adc_subscription.cpp index 7d5167e170..a482411f85 100644 --- a/firmware/hw_layer/adc/adc_subscription.cpp +++ b/firmware/hw_layer/adc/adc_subscription.cpp @@ -17,8 +17,8 @@ struct AdcSubscriptionEntry { FunctionalSensor *Sensor; float VoltsPerAdcVolt; - adc_channel_e Channel; Biquad Filter; + adc_channel_e Channel; bool HasUpdated = false; }; diff --git a/firmware/hw_layer/microsecond_timer/microsecond_timer.cpp b/firmware/hw_layer/microsecond_timer/microsecond_timer.cpp index 4a47e2d8ef..c2c2a9125e 100644 --- a/firmware/hw_layer/microsecond_timer/microsecond_timer.cpp +++ b/firmware/hw_layer/microsecond_timer/microsecond_timer.cpp @@ -41,8 +41,6 @@ static int timerRestartCounter = 0; static const char * msg; -static char buff[32]; - static int timerFreezeCounter = 0; static int setHwTimerCounter = 0; static bool hwStarted = false; @@ -110,9 +108,7 @@ class MicrosecondTimerWatchdogController : public PeriodicTimerController { void PeriodicTask() override { efitick_t nowNt = getTimeNowNt(); if (nowNt >= lastSetTimerTimeNt + 2 * CORE_CLOCK) { - strcpy(buff, "no_event"); - itoa10(&buff[8], lastSetTimerTimeNt); - firmwareError(CUSTOM_ERR_SCHEDULING_ERROR, buff); + firmwareError(CUSTOM_ERR_SCHEDULING_ERROR, "no event %d", lastSetTimerTimeNt); return; } diff --git a/firmware/hw_layer/mmc_card.cpp b/firmware/hw_layer/mmc_card.cpp index 6b82dd8ed3..897868b8d4 100644 --- a/firmware/hw_layer/mmc_card.cpp +++ b/firmware/hw_layer/mmc_card.cpp @@ -106,7 +106,6 @@ static void printError(const char *str, FRESULT f_error) { } static FIL FDLogFile NO_CACHE; -static FIL FDCurrFile NO_CACHE; // 10 because we want at least 4 character name #define MIN_FILE_INDEX 10 @@ -132,8 +131,8 @@ static void sdStatistics(void) { } static void incLogFileName(void) { - memset(&FDCurrFile, 0, sizeof(FIL)); // clear the memory - FRESULT err = f_open(&FDCurrFile, LOG_INDEX_FILENAME, FA_READ); // This file has the index for next log file name + memset(&FDLogFile, 0, sizeof(FIL)); // clear the memory + FRESULT err = f_open(&FDLogFile, LOG_INDEX_FILENAME, FA_READ); // This file has the index for next log file name char data[_MAX_FILLER]; UINT result = 0; @@ -141,10 +140,10 @@ static void incLogFileName(void) { logFileIndex = MIN_FILE_INDEX; efiPrintf("%s: not found or error: %d", LOG_INDEX_FILENAME, err); } else { - f_read(&FDCurrFile, (void*)data, sizeof(data), &result); + f_read(&FDLogFile, (void*)data, sizeof(data), &result); efiPrintf("Got content [%s] size %d", data, result); - f_close(&FDCurrFile); + f_close(&FDLogFile); if (result < 5) { data[result] = 0; logFileIndex = maxI(MIN_FILE_INDEX, atoi(data)); @@ -158,10 +157,10 @@ static void incLogFileName(void) { } } - err = f_open(&FDCurrFile, LOG_INDEX_FILENAME, FA_OPEN_ALWAYS | FA_WRITE); + err = f_open(&FDLogFile, LOG_INDEX_FILENAME, FA_OPEN_ALWAYS | FA_WRITE); itoa10(data, logFileIndex); - f_write(&FDCurrFile, (void*)data, strlen(data), &result); - f_close(&FDCurrFile); + f_write(&FDLogFile, (void*)data, strlen(data), &result); + f_close(&FDLogFile); efiPrintf("Done %d", logFileIndex); } @@ -402,8 +401,6 @@ static bool mountMmc() { bool hasUsb = usbResult == MSG_OK; - msdObjectInit(&USBMSD1); - // If we have a device AND USB is connected, mount the card to USB, otherwise // mount the null device and try to mount the filesystem ourselves if (cardBlockDevice && hasUsb) {