diff --git a/firmware/CHANGELOG.md b/firmware/CHANGELOG.md index a2020aba28..dabebe5651 100644 --- a/firmware/CHANGELOG.md +++ b/firmware/CHANGELOG.md @@ -53,6 +53,7 @@ or - Fix decel fuel cutoff (DFCO) on engines without a MAP sensor #457 - Automatic calculation of knock sense frequency based on cylinder bore #379 - Removed MAP sampling option that can result in inaccurate MAP sensor readings + - Improve TunerStudio performance on STM32F4-based ECUs #474 ## December 2023 Release diff --git a/firmware/config/boards/atlas/prepend.txt b/firmware/config/boards/atlas/prepend.txt index 787227bf91..a0b0fc96ab 100644 --- a/firmware/config/boards/atlas/prepend.txt +++ b/firmware/config/boards/atlas/prepend.txt @@ -3,5 +3,3 @@ ! Atlas is guaranteed dual bank flash, so there's no delay when sending the burn command. ! All commands should complete effectively instantly. #define TS_BLOCK_READ_TIMEOUT 250 - -#define BLOCKING_FACTOR 1500 diff --git a/firmware/config/boards/nucleo_f767/prepend.txt b/firmware/config/boards/nucleo_f767/prepend.txt index 1615a2926b..e69de29bb2 100644 --- a/firmware/config/boards/nucleo_f767/prepend.txt +++ b/firmware/config/boards/nucleo_f767/prepend.txt @@ -1 +0,0 @@ -#define BLOCKING_FACTOR 1500 diff --git a/firmware/config/boards/proteus/prepend.txt b/firmware/config/boards/proteus/prepend.txt index e13a2547d7..79c6dda983 100644 --- a/firmware/config/boards/proteus/prepend.txt +++ b/firmware/config/boards/proteus/prepend.txt @@ -23,4 +23,3 @@ #define show_Proteus_presets true #define LUA_SCRIPT_SIZE 12000 -#define BLOCKING_FACTOR 1500 diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index 421b684b94..395ace3082 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -262,7 +262,7 @@ #if MODULE_ETHERNET_CONSOLE // F4 ethernet needs some extra space - #define LUA_USER_HEAP 40000 + #define LUA_USER_HEAP 25000 #else // MODULE_ETHERNET_CONSOLE #define LUA_USER_HEAP 50000 #endif diff --git a/firmware/console/binary/output_channels.txt b/firmware/console/binary/output_channels.txt index 2b58735da2..931291f760 100644 --- a/firmware/console/binary/output_channels.txt +++ b/firmware/console/binary/output_channels.txt @@ -373,6 +373,4 @@ float mapFast uint16_t mapAveragingSamples uint8_t[12 iterate] mapPerCylinder;;"kPa", 1, 0, 0, 0, 0 - - uint8_t[102 iterate] unusedAtTheEnd;;"",1, 0, 0, 0, 0 end_struct diff --git a/firmware/console/binary/tunerstudio_commands.cpp b/firmware/console/binary/tunerstudio_commands.cpp index 74a4018213..ea946b3065 100644 --- a/firmware/console/binary/tunerstudio_commands.cpp +++ b/firmware/console/binary/tunerstudio_commands.cpp @@ -42,6 +42,9 @@ static Timer requestPeriodTimer; * Gauges refresh */ void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, uint16_t count) { + // Assert that the entire output channels block will fit in a single TS transaction + static_assert(BLOCKING_FACTOR >= TS_TOTAL_OUTPUT_SIZE + 10); + if (offset + count > TS_TOTAL_OUTPUT_SIZE) { efiPrintf("TS: Version Mismatch? Too much outputs requested %d/%d/%d", offset, count, sizeof(TunerStudioOutputChannels)); @@ -49,10 +52,8 @@ void TunerStudio::cmdOutputChannels(TsChannelBase* tsChannel, uint16_t offset, u return; } - if (offset < BLOCKING_FACTOR) { - engine->outputChannels.outputRequestPeriod - = 1e6 * requestPeriodTimer.getElapsedSecondsAndReset(getTimeNowNt()); - } + engine->outputChannels.outputRequestPeriod + = 1e6 * requestPeriodTimer.getElapsedSecondsAndReset(getTimeNowNt()); tsState.outputChannelsCommandCounter++; updateTunerStudioState(); diff --git a/firmware/console/usb_console.cpp b/firmware/console/usb_console.cpp index b8048f9405..57eeb2f4a7 100644 --- a/firmware/console/usb_console.cpp +++ b/firmware/console/usb_console.cpp @@ -6,7 +6,6 @@ #include "thread_controller.h" #include "tunerstudio.h" - // Assert that the USB tx/rx buffers are large enough to fit one full packet static_assert(SERIAL_USB_BUFFERS_SIZE >= BLOCKING_FACTOR + 10); diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 72cb874972..8129c9addd 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -106,7 +106,7 @@ struct_no_prefix persistent_config_s struct_no_prefix engine_configuration_s -#define BLOCKING_FACTOR 750 +#define BLOCKING_FACTOR 1320 #define SENT_INPUT_COUNT 1