From 51dfe6faea77536dc95f0f53f67ec57bde63be99 Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 30 May 2017 20:50:33 +0300 Subject: [PATCH 1/2] Separate Serial & sdCard configs for bootloader use --- .../controllers/algo/engine_configuration.cpp | 49 +++++++++++++------ .../controllers/algo/engine_configuration.h | 4 ++ 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 23df107b2a..ee699e0397 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -344,6 +344,37 @@ void setDefaultBasePins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineConfiguration->configResetPin = GPIOB_1; } +// needed also by bootloader code +void setDefaultSerialParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + boardConfiguration->startConsoleInBinaryMode = true; + boardConfiguration->useSerialPort = true; + engineConfiguration->binarySerialTxPin = GPIOC_10; + engineConfiguration->binarySerialRxPin = GPIOC_11; + engineConfiguration->consoleSerialTxPin = GPIOC_10; + engineConfiguration->consoleSerialRxPin = GPIOC_11; + boardConfiguration->tunerStudioSerialSpeed = TS_DEFAULT_SPEED; + engineConfiguration->uartConsoleSerialSpeed = 115200; + +#if EFI_PROD_CODE || defined(__DOXYGEN__) + // call overrided board-specific serial configuration setup, if needed (for custom boards only) + setSerialConfigurationOverrides(); +#endif +} + +// needed also by bootloader code +void setDefaultSdCardParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + boardConfiguration->is_enabled_spi_3 = true; + engineConfiguration->sdCardSpiDevice = SPI_DEVICE_3; + boardConfiguration->sdCardCsPin = GPIOD_4; + boardConfiguration->isSdCardEnabled = true; + +#if EFI_PROD_CODE || defined(__DOXYGEN__) + // call overrided board-specific SD card configuration setup, if needed (for custom boards only) + setSdCardConfigurationOverrides(); +#endif +} + + // todo: move injector calibration somewhere else? // todo: add a enum? if we have enough data? static void setBosch02880155868(DECLARE_ENGINE_PARAMETER_SIGNATURE) { @@ -527,8 +558,6 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { boardConfiguration->mafSensorType = Bosch0280218037; setBosch0280218037(config); - boardConfiguration->startConsoleInBinaryMode = true; - setBosch02880155868(PASS_ENGINE_PARAMETER_SIGNATURE); engineConfiguration->acCutoffLowRpm = 700; @@ -765,7 +794,6 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineConfiguration->externalKnockSenseAdc = EFI_ADC_NONE; - boardConfiguration->useSerialPort = true; boardConfiguration->useStepperIdle = false; setDefaultStepperIdleParameters(PASS_ENGINE_PARAMETER_SIGNATURE); @@ -820,11 +848,8 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineConfiguration->communicationPin = GPIOD_15; // blue LED on discovery engineConfiguration->runningPin = GPIOD_12; // greeb LED on discovery setDefaultBasePins(PASS_ENGINE_PARAMETER_SIGNATURE); - engineConfiguration->binarySerialTxPin = GPIOC_10; - engineConfiguration->binarySerialRxPin = GPIOC_11; - engineConfiguration->consoleSerialTxPin = GPIOC_10; - engineConfiguration->consoleSerialRxPin = GPIOC_11; - + + setDefaultSerialParameters(PASS_ENGINE_PARAMETER_SIGNATURE); boardConfiguration->triggerSimulatorPins[0] = GPIOD_1; boardConfiguration->triggerSimulatorPins[1] = GPIOD_2; @@ -900,17 +925,13 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { setHip9011FrankensoPinout(); #endif - engineConfiguration->sdCardSpiDevice = SPI_DEVICE_3; - boardConfiguration->sdCardCsPin = GPIOD_4; - boardConfiguration->isSdCardEnabled = true; + setDefaultSdCardParameters(PASS_ENGINE_PARAMETER_SIGNATURE); + boardConfiguration->isFastAdcEnabled = true; boardConfiguration->isEngineControlEnabled = true; boardConfiguration->isVerboseAlternator = false; - boardConfiguration->tunerStudioSerialSpeed = TS_DEFAULT_SPEED; - engineConfiguration->uartConsoleSerialSpeed = 115200; - engineConfiguration->warmupAfrPid.offset = 1; engineConfiguration->warmupAfrThreshold = 60; diff --git a/firmware/controllers/algo/engine_configuration.h b/firmware/controllers/algo/engine_configuration.h index adad2b3a20..c9ff814885 100644 --- a/firmware/controllers/algo/engine_configuration.h +++ b/firmware/controllers/algo/engine_configuration.h @@ -53,6 +53,10 @@ void setWholeTimingTable(angle_t value DECLARE_ENGINE_PARAMETER_SUFFIX); void setConstantDwell(floatms_t dwellMs DECLARE_ENGINE_PARAMETER_SUFFIX); void printFloatArray(const char *prefix, float array[], int size); +// needed by bootloader +void setDefaultSerialParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE); +void setDefaultSdCardParameters(DECLARE_ENGINE_PARAMETER_SIGNATURE); + void rememberCurrentConfiguration(void); void incrementGlobalConfigurationVersion(DECLARE_ENGINE_PARAMETER_SIGNATURE); int getGlobalConfigurationVersion(void); From aa7e4dbbb6d8e76a945ed2238c15e04ea6c242c4 Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 30 May 2017 21:29:51 +0300 Subject: [PATCH 2/2] Add board *Overrides() --- firmware/config/boards/ST_STM32F4/board.c | 14 ++++++++++++++ firmware/config/boards/ST_STM32F4/board.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/firmware/config/boards/ST_STM32F4/board.c b/firmware/config/boards/ST_STM32F4/board.c index ebab7df998..23b17bd820 100644 --- a/firmware/config/boards/ST_STM32F4/board.c +++ b/firmware/config/boards/ST_STM32F4/board.c @@ -134,3 +134,17 @@ void boardInit(void) { */ void setBoardConfigurationOverrides(void) { } + +/** + * @brief Board-specific Serial configuration code overrides. Needed by bootloader code. + * @todo Add your board-specific code, if any. + */ +void setSerialConfigurationOverrides(void) { +} + +/** + * @brief Board-specific SD card configuration code overrides. Needed by bootloader code. + * @todo Add your board-specific code, if any. + */ +void setSdCardConfigurationOverrides(void) { +} diff --git a/firmware/config/boards/ST_STM32F4/board.h b/firmware/config/boards/ST_STM32F4/board.h index 96b9532001..88be52846a 100644 --- a/firmware/config/boards/ST_STM32F4/board.h +++ b/firmware/config/boards/ST_STM32F4/board.h @@ -1345,6 +1345,8 @@ extern "C" { #endif void boardInit(void); void setBoardConfigurationOverrides(void); + void setSerialConfigurationOverrides(void); + void setSdCardConfigurationOverrides(void); #ifdef __cplusplus } #endif