From 17c6a46e842b41649ec363745752a0efb7a35a6c Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sat, 6 Jan 2024 19:37:35 -0800 Subject: [PATCH] optimize for hot thread stacks and data in CCM --- firmware/console/binary/tooth_logger.cpp | 4 ++-- firmware/console/usb_console.cpp | 2 +- firmware/controllers/actuators/idle_hardware.cpp | 6 +++--- firmware/controllers/lua/can_filter.cpp | 2 +- .../controllers/sensors/impl/software_knock.cpp | 2 +- firmware/controllers/system/efi_gpio.cpp | 2 +- firmware/development/engine_sniffer.cpp | 2 +- firmware/development/sensor_chart.cpp | 2 +- firmware/hw_layer/adc/adc_inputs.cpp | 2 +- .../digital_input/digital_input_exti.cpp | 2 +- .../hw_layer/mass_storage/mass_storage_init.cpp | 2 +- firmware/init/sensor/init_thermistors.cpp | 16 ++++++++-------- firmware/util/cli_registry.cpp | 2 +- 13 files changed, 23 insertions(+), 23 deletions(-) diff --git a/firmware/console/binary/tooth_logger.cpp b/firmware/console/binary/tooth_logger.cpp index 4fe6f50972..2dc31aef3b 100644 --- a/firmware/console/binary/tooth_logger.cpp +++ b/firmware/console/binary/tooth_logger.cpp @@ -65,8 +65,8 @@ static constexpr size_t totalEntryCount = BIG_BUFFER_SIZE / sizeof(composite_log static constexpr size_t bufferCount = totalEntryCount / toothLoggerEntriesPerBuffer; static CompositeBuffer* buffers = nullptr; -static chibios_rt::Mailbox freeBuffers CCM_OPTIONAL; -static chibios_rt::Mailbox filledBuffers CCM_OPTIONAL; +static chibios_rt::Mailbox freeBuffers; +static chibios_rt::Mailbox filledBuffers; static CompositeBuffer* currentBuffer = nullptr; diff --git a/firmware/console/usb_console.cpp b/firmware/console/usb_console.cpp index a1ecc96673..6f4cc4d074 100644 --- a/firmware/console/usb_console.cpp +++ b/firmware/console/usb_console.cpp @@ -48,7 +48,7 @@ struct UsbThread : public TunerstudioThread { } }; -static UsbThread usbConsole; +static CCM_OPTIONAL UsbThread usbConsole; void startUsbConsole() { usbConsole.start(); diff --git a/firmware/controllers/actuators/idle_hardware.cpp b/firmware/controllers/actuators/idle_hardware.cpp index 9cc79a4997..192f54c2f9 100644 --- a/firmware/controllers/actuators/idle_hardware.cpp +++ b/firmware/controllers/actuators/idle_hardware.cpp @@ -19,9 +19,9 @@ #include "stepper.h" /* Storing two following structs in CCM memory cause HardFault (at least on F4) * This need deep debuging. Until it is moved out of CMM. */ -static StepDirectionStepper iacStepperHw /*CCM_OPTIONAL*/; -static DualHBridgeStepper iacHbridgeHw /*CCM_OPTIONAL*/; -StepperMotor iacMotor CCM_OPTIONAL; +static StepDirectionStepper iacStepperHw; +static DualHBridgeStepper iacHbridgeHw; +StepperMotor iacMotor; #endif /* EFI_UNIT_TEST */ static SimplePwm idleSolenoidOpen("idle open"); diff --git a/firmware/controllers/lua/can_filter.cpp b/firmware/controllers/lua/can_filter.cpp index e39359c9f9..1a568ebb39 100644 --- a/firmware/controllers/lua/can_filter.cpp +++ b/firmware/controllers/lua/can_filter.cpp @@ -5,7 +5,7 @@ static constexpr size_t maxFilterCount = 48; static size_t filterCount = 0; -static CanFilter filters[maxFilterCount]; +static CCM_OPTIONAL CanFilter filters[maxFilterCount]; CanFilter* getFilterForId(CanBusIndex busIndex, int Id) { for (size_t i = 0; i < filterCount; i++) { diff --git a/firmware/controllers/sensors/impl/software_knock.cpp b/firmware/controllers/sensors/impl/software_knock.cpp index 4a7c26e853..816a83ef8e 100644 --- a/firmware/controllers/sensors/impl/software_knock.cpp +++ b/firmware/controllers/sensors/impl/software_knock.cpp @@ -139,7 +139,7 @@ public: void ThreadTask() override; }; -static KnockThread kt; +static CCM_OPTIONAL KnockThread kt; void initSoftwareKnock() { if (engineConfiguration->enableSoftwareKnock) { diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index 7c66253411..d6dabffa33 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -20,7 +20,7 @@ #endif /* EFI_ELECTRONIC_THROTTLE_BODY */ // todo: clean this mess, this should become 'static'/private -EnginePins enginePins; +CCM_OPTIONAL EnginePins enginePins; static const char* const sparkNames[] = { "Coil 1", "Coil 2", "Coil 3", "Coil 4", "Coil 5", "Coil 6", "Coil 7", "Coil 8", "Coil 9", "Coil 10", "Coil 11", "Coil 12"}; diff --git a/firmware/development/engine_sniffer.cpp b/firmware/development/engine_sniffer.cpp index 8ebc4d908b..a539cc428e 100644 --- a/firmware/development/engine_sniffer.cpp +++ b/firmware/development/engine_sniffer.cpp @@ -54,7 +54,7 @@ static char shaft_signal_msg_index[15]; #define WAVE_LOGGING_SIZE 35000 #endif -static char WAVE_LOGGING_BUFFER[WAVE_LOGGING_SIZE] CCM_OPTIONAL; +static char WAVE_LOGGING_BUFFER[WAVE_LOGGING_SIZE]; int waveChartUsedSize; diff --git a/firmware/development/sensor_chart.cpp b/firmware/development/sensor_chart.cpp index cfe5504521..1546840b0e 100644 --- a/firmware/development/sensor_chart.cpp +++ b/firmware/development/sensor_chart.cpp @@ -13,7 +13,7 @@ #include "status_loop.h" #if EFI_TEXT_LOGGING -static char LOGGING_BUFFER[SC_BUFFER_SIZE] CCM_OPTIONAL; +static char LOGGING_BUFFER[SC_BUFFER_SIZE]; static Logging scLogging("analog chart", LOGGING_BUFFER, sizeof(LOGGING_BUFFER)); #endif /* EFI_TEXT_LOGGING */ diff --git a/firmware/hw_layer/adc/adc_inputs.cpp b/firmware/hw_layer/adc/adc_inputs.cpp index 92a59722f4..ff16cbdfc0 100644 --- a/firmware/hw_layer/adc/adc_inputs.cpp +++ b/firmware/hw_layer/adc/adc_inputs.cpp @@ -431,7 +431,7 @@ static void configureInputs() { setAdcChannelOverrides(); } -static SlowAdcController slowAdcController; +static CCM_OPTIONAL SlowAdcController slowAdcController; void initAdcInputs() { efiPrintf("initAdcInputs()"); diff --git a/firmware/hw_layer/digital_input/digital_input_exti.cpp b/firmware/hw_layer/digital_input/digital_input_exti.cpp index 70d217f410..5af40e747e 100644 --- a/firmware/hw_layer/digital_input/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input/digital_input_exti.cpp @@ -159,7 +159,7 @@ private: uint8_t m_write = 0; }; -static ExtiQueue queue; +static CCM_OPTIONAL ExtiQueue queue; static uint8_t overflowCounter = 0; diff --git a/firmware/hw_layer/mass_storage/mass_storage_init.cpp b/firmware/hw_layer/mass_storage/mass_storage_init.cpp index a7a6df81dd..fdd59fbce9 100644 --- a/firmware/hw_layer/mass_storage/mass_storage_init.cpp +++ b/firmware/hw_layer/mass_storage/mass_storage_init.cpp @@ -42,7 +42,7 @@ static NO_CACHE uint8_t blkbuf0[MMCSD_BLOCK_SIZE]; static NO_CACHE uint8_t blkbuf1[MMCSD_BLOCK_SIZE]; -static MassStorageController msd(usb_driver); +static CCM_OPTIONAL MassStorageController msd(usb_driver); static const scsi_inquiry_response_t iniDriveInquiry = { 0x00, /* direct access block device */ diff --git a/firmware/init/sensor/init_thermistors.cpp b/firmware/init/sensor/init_thermistors.cpp index d3d66b75f4..a011a7bfb6 100644 --- a/firmware/init/sensor/init_thermistors.cpp +++ b/firmware/init/sensor/init_thermistors.cpp @@ -16,15 +16,15 @@ struct FuncPair { FuncChain thermistor; }; -static CCM_OPTIONAL FunctionalSensor clt(SensorType::Clt, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor iat(SensorType::Iat, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor aux1(SensorType::AuxTemp1, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor aux2(SensorType::AuxTemp2, MS2NT(10)); +static FunctionalSensor clt(SensorType::Clt, MS2NT(10)); +static FunctionalSensor iat(SensorType::Iat, MS2NT(10)); +static FunctionalSensor aux1(SensorType::AuxTemp1, MS2NT(10)); +static FunctionalSensor aux2(SensorType::AuxTemp2, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor oilTempSensor(SensorType::OilTemperature, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor fuelTempSensor(SensorType::FuelTemperature, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor ambientTempSensor(SensorType::AmbientTemperature, MS2NT(10)); -static CCM_OPTIONAL FunctionalSensor compressorDischargeTemp(SensorType::CompressorDischargeTemperature, MS2NT(10)); +static FunctionalSensor oilTempSensor(SensorType::OilTemperature, MS2NT(10)); +static FunctionalSensor fuelTempSensor(SensorType::FuelTemperature, MS2NT(10)); +static FunctionalSensor ambientTempSensor(SensorType::AmbientTemperature, MS2NT(10)); +static FunctionalSensor compressorDischargeTemp(SensorType::CompressorDischargeTemperature, MS2NT(10)); static FuncPair fclt, fiat, faux1, faux2, foil, ffuel, fambient, fcdt; diff --git a/firmware/util/cli_registry.cpp b/firmware/util/cli_registry.cpp index 6fe0daf37a..ad987556fe 100644 --- a/firmware/util/cli_registry.cpp +++ b/firmware/util/cli_registry.cpp @@ -32,7 +32,7 @@ #define CONSOLE_MAX_ACTIONS 150 static int consoleActionCount = 0; -static TokenCallback consoleActions[CONSOLE_MAX_ACTIONS] CCM_OPTIONAL; +static TokenCallback consoleActions[CONSOLE_MAX_ACTIONS]; void resetConsoleActions(void) { consoleActionCount = 0;