This commit is contained in:
rusEfi 2019-02-27 17:12:52 -05:00
parent fb3d06aebf
commit 830e733053
9 changed files with 12 additions and 31 deletions

View File

@ -42,6 +42,7 @@ See https://rusefi.com/forum/viewtopic.php?f=5&t=9
| Release date | Revision | Details |
| ------------ | --------- | ------- |
| 02/27/2019 | r16886 | bugfix #698: concurrency defect with single timer executor initialization |
| 02/23/2019 | r16857 | improvement #688: better support for 144 and 176 pin packages |
| 02/05/2019 | r16713 | improvement #631: ChibiOS 18 |
| 01/11/2019 | r16346 | bugfix #663: SPI fixes for CJ125 for stm32 errata STM32f405/7/15/17 |

View File

@ -48,7 +48,6 @@ InjectionSignalPair::InjectionSignalPair() {
}
void initSignalExecutor(void) {
initSignalExecutorImpl();
}
#if FUEL_MATH_EXTREME_LOGGING

View File

@ -156,7 +156,7 @@ void SingleTimerExecutor::scheduleTimerCallback() {
hwSetTimerDuration = GET_TIMESTAMP() - beforeHwSetTimer;
}
void initSignalExecutorImpl(void) {
void initSingleTimerExecutorHardware(void) {
globalTimerCallback = executorCallback;
initMicrosecondTimer();
}

View File

@ -27,7 +27,7 @@ private:
void scheduleTimerCallback();
};
void initSignalExecutorImpl(void);
void initSingleTimerExecutorHardware(void);
void executorStatistics();
#endif /* SINGLETIMEREXECUTOR_H_ */

View File

@ -91,8 +91,4 @@ void SleepExecutor::scheduleForLater(scheduling_s *scheduling, int delayUs, schf
doScheduleForLater(scheduling, delayUs, callback, param);
}
void initSignalExecutorImpl(void) {
}
#endif /* EFI_SIGNAL_EXECUTOR_SLEEP */

View File

@ -375,6 +375,9 @@ void initHardware(Logging *l) {
resetConfigurationExt(sharedLogger, engineConfiguration->engineType PASS_ENGINE_PARAMETER_SUFFIX);
#endif /* EFI_INTERNAL_FLASH */
// it's important to initialize this pretty early in the game before any scheduling usages
initSingleTimerExecutorHardware();
#if EFI_HD44780_LCD
// initI2Cmodule();
lcd_HD44780_init(sharedLogger);

View File

@ -48,6 +48,7 @@ static char buff[32];
static int timerFreezeCounter = 0;
static volatile int setHwTimerCounter = 0;
static volatile bool hwStarted = false;
extern bool hasFirmwareErrorFlag;
@ -56,6 +57,7 @@ extern bool hasFirmwareErrorFlag;
* This function should be invoked under kernel lock which would disable interrupts.
*/
void setHardwareUsTimer(int32_t timeUs) {
efiAssertVoid(OBD_PCM_Processor_Fault, hwStarted, "HW.started");
setHwTimerCounter++;
/**
* #259 BUG error: not positive timeUs
@ -99,15 +101,6 @@ static void hwTimerCallback(GPTDriver *gptp) {
}
isTimerPending = false;
// // test code
// setOutputPinValue(LED_CRANKING, timerCallbackCounter % 2);
// int mod = timerCallbackCounter % 400;
// chSysLockFromISR()
// ;
// setHardwareUsTimer(400 - mod);
// chSysUnlockFromISR()
// ;
uint32_t before = GET_TIMESTAMP();
globalTimerCallback(NULL);
uint32_t precisionCallbackDuration = GET_TIMESTAMP() - before;
@ -116,7 +109,6 @@ static void hwTimerCallback(GPTDriver *gptp) {
}
}
class MicrosecondTimerWatchdogController : public PeriodicController<UTILITY_THREAD_STACK_SIZE>
{
public:
@ -151,18 +143,12 @@ void initMicrosecondTimer(void) {
gptStart(&GPTDEVICE, &gpt5cfg);
efiAssertVoid(CUSTOM_ERR_TIMER_STATE, GPTDEVICE.state == GPT_READY, "hw state");
hwStarted = true;
lastSetTimerTimeNt = getTimeNowNt();
#if EFI_EMULATE_POSITION_SENSORS
watchdogControllerInstance.Start();
#endif /* EFI_ENGINE_EMULATOR */
// // test code
// chSysLock()
// ;
// setHardwareUsTimer(300);
// chSysUnlock()
// ;
}
#endif /* EFI_PROD_CODE */

View File

@ -1,12 +1,12 @@
// This file was generated by Version2Header
// Sat Feb 23 08:50:46 EST 2019
// Wed Feb 27 16:59:18 EST 2019
#ifndef GIT_HASH
#define GIT_HASH "f3b64f5227a4160df076bc68d2c29094b185bfa5"
#define GIT_HASH "fb3d06aebfa19ceedc3619f50158fed13e7feadd"
#endif
#ifndef VCS_VERSION
#define VCS_VERSION "16857"
#define VCS_VERSION "16886"
#endif

View File

@ -43,7 +43,3 @@ void TestExecutor::scheduleByTimestamp(scheduling_s *scheduling, efitimeus_t tim
}
schedulingQueue.insertTask(scheduling, timeUs, callback, param);
}
void initSignalExecutorImpl(void) {
}