From 5d3d85d644bb3c2d1f1b0bce5dcddda7a7bc357f Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Wed, 18 Nov 2020 11:17:00 -0800 Subject: [PATCH] put getTimeNowLowerNt in to mpu_util (#1950) * put getTimeNowLowerNt in to mpu_util * move GPTDEVICE to port_mpu_util * and remove from efifeatures --- firmware/config/boards/hellen/cypress/efifeatures.h | 2 -- firmware/config/boards/kinetis/efifeatures.h | 2 -- firmware/global.h | 6 +++--- firmware/hw_layer/microsecond_timer_gpt.cpp | 5 ----- firmware/hw_layer/ports/cypress/mpu_util.cpp | 4 ++++ firmware/hw_layer/ports/cypress/port_mpu_util.h | 6 ++++++ firmware/hw_layer/ports/kinetis/mpu_util.cpp | 4 ++++ firmware/hw_layer/ports/kinetis/port_mpu_util.h | 6 ++++++ firmware/hw_layer/ports/mpu_util.h | 3 ++- firmware/hw_layer/ports/stm32/port_mpu_util.h | 6 ++++++ firmware/hw_layer/ports/stm32/stm32_common.cpp | 4 ++++ firmware/util/efitime.h | 8 +++----- unit_tests/unit_test_framework.cpp | 5 +++-- 13 files changed, 41 insertions(+), 20 deletions(-) diff --git a/firmware/config/boards/hellen/cypress/efifeatures.h b/firmware/config/boards/hellen/cypress/efifeatures.h index 7c6e692463..43af94b228 100644 --- a/firmware/config/boards/hellen/cypress/efifeatures.h +++ b/firmware/config/boards/hellen/cypress/efifeatures.h @@ -384,8 +384,6 @@ #define EFI_BOSCH_YAW FALSE -#define GPTDEVICE GPTD1 - #define EFI_BOARD_TEST FALSE #define EFI_JOYSTICK FALSE #define EFI_ENGINE_AUDI_AAN FALSE diff --git a/firmware/config/boards/kinetis/efifeatures.h b/firmware/config/boards/kinetis/efifeatures.h index da5a1e1ef5..c31a19311f 100644 --- a/firmware/config/boards/kinetis/efifeatures.h +++ b/firmware/config/boards/kinetis/efifeatures.h @@ -353,8 +353,6 @@ #define EFI_BOSCH_YAW FALSE -#define GPTDEVICE GPTD1 - #define EFI_BOARD_TEST FALSE #define EFI_JOYSTICK FALSE #define EFI_ENGINE_AUDI_AAN FALSE diff --git a/firmware/global.h b/firmware/global.h index 11cd1286f4..0587a02674 100644 --- a/firmware/global.h +++ b/firmware/global.h @@ -20,6 +20,9 @@ // *** https://github.com/rusefi/rusefi/issues/1007 *** #include "common_headers.h" +// for US_TO_NT_MULTIPLIER +#include "mpu_util.h" + // this is about MISRA not liking 'time.h'. todo: figure out something #if defined __GNUC__ // GCC @@ -96,9 +99,6 @@ typedef unsigned int time_t; #define CCM_OPTIONAL #endif /* EFI_USE_CCM */ -// 168 ticks in microsecond in case of 168MHz 407 -#define US_TO_NT_MULTIPLIER (CORE_CLOCK / 1000000) - /** * converts efitimeus_t to efitick_t */ diff --git a/firmware/hw_layer/microsecond_timer_gpt.cpp b/firmware/hw_layer/microsecond_timer_gpt.cpp index dc561570d0..a5774e9a93 100644 --- a/firmware/hw_layer/microsecond_timer_gpt.cpp +++ b/firmware/hw_layer/microsecond_timer_gpt.cpp @@ -39,11 +39,6 @@ EXTERN_ENGINE; */ uint32_t maxPrecisionCallbackDuration = 0; -// must be one of 32 bit times -#ifndef GPTDEVICE -#define GPTDEVICE GPTD5 -#endif /* GPTDEVICE */ - static volatile efitick_t lastSetTimerTimeNt; static int lastSetTimerValue; static volatile bool isTimerPending = false; diff --git a/firmware/hw_layer/ports/cypress/mpu_util.cpp b/firmware/hw_layer/ports/cypress/mpu_util.cpp index 0f65176254..0cffea7a78 100644 --- a/firmware/hw_layer/ports/cypress/mpu_util.cpp +++ b/firmware/hw_layer/ports/cypress/mpu_util.cpp @@ -257,5 +257,9 @@ uintptr_t getFlashAddrSecondCopy() { return FLASH_ADDR_SECOND_COPY; } +uint32_t getTimeNowLowerNt() { + return port_rt_get_counter_value(); +} + #endif /* EFI_PROD_CODE */ diff --git a/firmware/hw_layer/ports/cypress/port_mpu_util.h b/firmware/hw_layer/ports/cypress/port_mpu_util.h index 13f02c0d9c..51eb8fe30e 100644 --- a/firmware/hw_layer/ports/cypress/port_mpu_util.h +++ b/firmware/hw_layer/ports/cypress/port_mpu_util.h @@ -8,6 +8,12 @@ #pragma once +// 168 ticks in microsecond in case of 168MHz 407 +#define US_TO_NT_MULTIPLIER (CORE_CLOCK / 1000000) + +// Scheduler queue GPT device +#define GPTDEVICE GPTD1 + typedef enum { BOR_Level_None = 0, BOR_Level_1 = 1, diff --git a/firmware/hw_layer/ports/kinetis/mpu_util.cpp b/firmware/hw_layer/ports/kinetis/mpu_util.cpp index a22a4834c5..ab4b7403ca 100644 --- a/firmware/hw_layer/ports/kinetis/mpu_util.cpp +++ b/firmware/hw_layer/ports/kinetis/mpu_util.cpp @@ -262,5 +262,9 @@ uintptr_t getFlashAddrSecondCopy() { return nullptr; } +uint32_t getTimeNowLowerNt() { + return port_rt_get_counter_value(); +} + #endif /* EFI_PROD_CODE */ diff --git a/firmware/hw_layer/ports/kinetis/port_mpu_util.h b/firmware/hw_layer/ports/kinetis/port_mpu_util.h index dd4b4743b1..cc62dc3ed9 100644 --- a/firmware/hw_layer/ports/kinetis/port_mpu_util.h +++ b/firmware/hw_layer/ports/kinetis/port_mpu_util.h @@ -8,6 +8,12 @@ #pragma once +// 168 ticks in microsecond in case of 168MHz 407 +#define US_TO_NT_MULTIPLIER (CORE_CLOCK / 1000000) + +// Scheduler queue GPT device +#define GPTDEVICE GPTD1 + typedef enum { BOR_Level_None = 0, BOR_Level_1 = 1, diff --git a/firmware/hw_layer/ports/mpu_util.h b/firmware/hw_layer/ports/mpu_util.h index 007f2101e2..fe53703dea 100644 --- a/firmware/hw_layer/ports/mpu_util.h +++ b/firmware/hw_layer/ports/mpu_util.h @@ -4,6 +4,8 @@ #include "port_mpu_util.h" +#ifdef __cplusplus + // Base MCU void baseMCUInit(void); void jump_to_bootloader(); @@ -45,7 +47,6 @@ typedef enum { BOR_Level_t BOR_Get(void); BOR_Result_t BOR_Set(BOR_Level_t BORValue); -#ifdef __cplusplus extern "C" { #endif /* __cplusplus */ diff --git a/firmware/hw_layer/ports/stm32/port_mpu_util.h b/firmware/hw_layer/ports/stm32/port_mpu_util.h index 5cf406a2df..4ad414ea40 100644 --- a/firmware/hw_layer/ports/stm32/port_mpu_util.h +++ b/firmware/hw_layer/ports/stm32/port_mpu_util.h @@ -10,6 +10,12 @@ #include "device_mpu_util.h" +// 168 ticks in microsecond in case of 168MHz 407 +#define US_TO_NT_MULTIPLIER (CORE_CLOCK / 1000000) + +// Scheduler queue GPT device - use TIM5 +#define GPTDEVICE GPTD5 + typedef enum { BOR_Level_None = OB_BOR_OFF, // 0x0C=12 Supply voltage ranges from 1.62 to 2.10 V BOR_Level_1 = OB_BOR_LEVEL1, // 0x08 Supply voltage ranges from 2.10 to 2.40 V diff --git a/firmware/hw_layer/ports/stm32/stm32_common.cpp b/firmware/hw_layer/ports/stm32/stm32_common.cpp index 3969c4f618..b07cf95226 100644 --- a/firmware/hw_layer/ports/stm32/stm32_common.cpp +++ b/firmware/hw_layer/ports/stm32/stm32_common.cpp @@ -325,3 +325,7 @@ bool isValidSerialRxPin(brain_pin_e pin) { } #endif /*EFI_AUX_SERIAL*/ + +uint32_t getTimeNowLowerNt() { + return port_rt_get_counter_value(); +} diff --git a/firmware/util/efitime.h b/firmware/util/efitime.h index 872ee7ef72..38d260ead9 100644 --- a/firmware/util/efitime.h +++ b/firmware/util/efitime.h @@ -69,12 +69,10 @@ efitimems_t currentTimeMillis(void); */ efitimesec_t getTimeNowSeconds(void); +// Get a monotonically increasing (but wrapping) 32-bit timer value +uint32_t getTimeNowLowerNt(void); + #ifdef __cplusplus } #endif /* __cplusplus */ -#if EFI_PROD_CODE || EFI_SIMULATOR - #define getTimeNowLowerNt() port_rt_get_counter_value() -#else - #define getTimeNowLowerNt() 0 -#endif diff --git a/unit_tests/unit_test_framework.cpp b/unit_tests/unit_test_framework.cpp index 1ea42337d9..5a1465d54b 100644 --- a/unit_tests/unit_test_framework.cpp +++ b/unit_tests/unit_test_framework.cpp @@ -36,5 +36,6 @@ void chDbgAssert(int c, char *msg, void *arg) { } } - - +uint32_t getTimeNowLowerNt(void) { + return 0; +}