More portability & small fixes (#719)

* Use hw_stm32.mk

* Fix bootloader

* Use more common hw_ports.mk filename instead of hw_stm32.mk

* More CPU compatibility for Makefile

* TS_UART_MODE & rename TS_SERIAL_UART_DEVICE->TS_SERIAL_DEVICE

* Move lockAnyContext()/unlockAnyContext() to rfiutil.c

* USE_FATFS

* EFI_LCD

* Less compilation errors

* STATUS_LOGGING_BUFFER_SIZE & SETTINGS_LOGGING_BUFFER_SIZE

* EFI_ALTERNATOR_CONTROL, EFI_SERVO, EFI_DISABLE_CONSOLE_ACTIONS

* #ifndef PWM_PHASE_MAX_COUNT & more flexible GPIO inside portname()

* merge

* EFI_ALTERNATOR_CONTROL, EFI_ELECTRONIC_THROTTLE_BODY
This commit is contained in:
andreika-git 2019-03-29 16:29:01 +02:00 committed by rusefi
parent aff03cdbc5
commit b80806182f
34 changed files with 175 additions and 104 deletions

View File

@ -7,6 +7,13 @@ CHIBIOS = ChibiOS
RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
RULESFILE = $(RULESPATH)/rules.mk RULESFILE = $(RULESPATH)/rules.mk
# Define project name here
PROJECT = rusefi
PROJECT_DIR = .
# Imported source files and paths
CHIBIOS_CONTRIB = ChibiOS-Contrib
include rusefi.mk include rusefi.mk
# by default EXTRA_PARAMS is empty and we create 'debug' version of the firmware with additional assertions and statistics # by default EXTRA_PARAMS is empty and we create 'debug' version of the firmware with additional assertions and statistics
@ -69,6 +76,10 @@ ifeq ($(USE_BOOTLOADER),)
USE_BOOTLOADER = no USE_BOOTLOADER = no
endif endif
ifeq ($(USE_FATFS),)
USE_FATFS = yes
endif
# #
# Build global options # Build global options
############################################################################## ##############################################################################
@ -108,28 +119,25 @@ MAKEFLAGS += ${NUMJOBS}
# Project, sources and paths # Project, sources and paths
# #
# Define project name here
PROJECT = rusefi
PROJECT_DIR = .
# Imported source files and paths
CHIBIOS_CONTRIB = ChibiOS-Contrib
# Startup files. # Startup files.
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/$(CPU_STARTUP) include $(CPU_STARTUP_DIR)
# HAL-OSAL files (optional). # HAL-OSAL files (optional).
include $(CHIBIOS_CONTRIB)/os/hal/hal.mk include $(CHIBIOS_CONTRIB)/os/hal/hal.mk
include $(CHIBIOS)/os/hal/ports/STM32/$(CPU_PLATFORM) include $(CPU_PLATFORM_DIR)
include $(CHIBIOS)/os/hal/osal/rt/osal.mk include $(CHIBIOS)/os/hal/osal/rt/osal.mk
# RTOS files (optional). # RTOS files (optional).
include $(CHIBIOS)/os/rt/rt.mk include $(CHIBIOS)/os/rt/rt.mk
include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk
ifeq ($(USE_FATFS),yes)
include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk include $(CHIBIOS)/os/various/fatfs_bindings/fatfs.mk
endif
include $(CHIBIOS)/os/various/cpp_wrappers/chcpp.mk include $(CHIBIOS)/os/various/cpp_wrappers/chcpp.mk
include console/binary/tunerstudio.mk include console/binary/tunerstudio.mk
ifeq ($(USE_FATFS),yes)
include $(PROJECT_DIR)/ext/fatfs.mk include $(PROJECT_DIR)/ext/fatfs.mk
endif
include $(PROJECT_DIR)/hw_layer/hw_layer.mk include $(PROJECT_DIR)/hw_layer/hw_layer.mk
include $(PROJECT_DIR)/hw_layer/drivers/drivers.mk include $(PROJECT_DIR)/hw_layer/drivers/drivers.mk

View File

@ -1,5 +1,4 @@
@echo off @echo off
rm -rf .dep/
rm -rf build\rusefi.hex rm -rf build\rusefi.hex
rm -rf build\rusefi.bin rm -rf build\rusefi.bin

View File

@ -229,18 +229,18 @@ void setBoardConfigurationOverrides(void) {
boardConfiguration->is_enabled_spi_3 = true; boardConfiguration->is_enabled_spi_3 = true;
boardConfiguration->spi1mosiPin = GPIOB_5; boardConfiguration->spi1mosiPin = GPIOB_5;
engineConfiguration->spi1MosiMode = 0; // PAL_STM32_OTYPE_PUSHPULL engineConfiguration->spi1MosiMode = PO_DEFAULT; // PAL_STM32_OTYPE_PUSHPULL
boardConfiguration->spi1misoPin = GPIOB_4; boardConfiguration->spi1misoPin = GPIOB_4;
engineConfiguration->spi1MisoMode = 0; // PAL_STM32_OTYPE_PUSHPULL engineConfiguration->spi1MisoMode = PO_DEFAULT; // PAL_STM32_OTYPE_PUSHPULL
boardConfiguration->spi1sckPin = GPIOB_3; boardConfiguration->spi1sckPin = GPIOB_3;
engineConfiguration->spi1SckMode = 0; // PAL_STM32_OTYPE_PUSHPULL engineConfiguration->spi1SckMode = PO_DEFAULT; // PAL_STM32_OTYPE_PUSHPULL
boardConfiguration->spi3mosiPin = GPIOC_12; boardConfiguration->spi3mosiPin = GPIOC_12;
engineConfiguration->spi3MosiMode = PAL_STM32_OTYPE_OPENDRAIN; // 4 engineConfiguration->spi3MosiMode = PO_OPENDRAIN; // 4
boardConfiguration->spi3misoPin = GPIOC_11; boardConfiguration->spi3misoPin = GPIOC_11;
engineConfiguration->spi3MisoMode = PAL_STM32_PUPDR_PULLUP; // 32 engineConfiguration->spi3MisoMode = PO_PULLUP; // 32
boardConfiguration->spi3sckPin = GPIOC_10; boardConfiguration->spi3sckPin = GPIOC_10;
engineConfiguration->spi3SckMode = PAL_STM32_OTYPE_OPENDRAIN; // 4 engineConfiguration->spi3SckMode = PO_OPENDRAIN; // 4
engineConfiguration->hip9011SpiDevice = SPI_DEVICE_3; engineConfiguration->hip9011SpiDevice = SPI_DEVICE_3;
boardConfiguration->hip9011CsPin = is469 ? GPIOD_1 : GPIOD_2; boardConfiguration->hip9011CsPin = is469 ? GPIOD_1 : GPIOD_2;

View File

@ -24,6 +24,9 @@
#undef EFI_HD44780_LCD #undef EFI_HD44780_LCD
#define EFI_HD44780_LCD FALSE #define EFI_HD44780_LCD FALSE
#undef EFI_LCD
#define EFI_LCD FALSE
#undef EFI_USB_SERIAL #undef EFI_USB_SERIAL
#define EFI_USB_SERIAL FALSE #define EFI_USB_SERIAL FALSE
@ -42,11 +45,11 @@
#undef TS_UART_DMA_MODE #undef TS_UART_DMA_MODE
#define TS_UART_DMA_MODE TRUE #define TS_UART_DMA_MODE TRUE
#undef TS_DMA_UART_DEVICE #undef TS_UART_DEVICE
#define TS_DMA_UART_DEVICE (&UARTD4) #define TS_UART_DEVICE (&UARTD4)
#undef TS_SERIAL_UART_DEVICE #undef TS_SERIAL_DEVICE
#define TS_SERIAL_UART_DEVICE (&SD4) #define TS_SERIAL_DEVICE (&SD4)
#undef EFI_BLUETOOTH_SETUP #undef EFI_BLUETOOTH_SETUP
#define EFI_BLUETOOTH_SETUP TRUE #define EFI_BLUETOOTH_SETUP TRUE

View File

@ -24,7 +24,7 @@
#define HAL_USE_SERIAL FALSE #define HAL_USE_SERIAL FALSE
#undef HAL_USE_UART #undef HAL_USE_UART
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define HAL_USE_UART TRUE #define HAL_USE_UART TRUE
#else #else
#define HAL_USE_UART FALSE #define HAL_USE_UART FALSE

View File

@ -43,7 +43,7 @@
#define STM32_SERIAL_USE_USART3 FALSE #define STM32_SERIAL_USE_USART3 FALSE
#undef STM32_SERIAL_USE_UART4 #undef STM32_SERIAL_USE_UART4
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define STM32_SERIAL_USE_UART4 FALSE #define STM32_SERIAL_USE_UART4 FALSE
#else #else
#define STM32_SERIAL_USE_UART4 TRUE #define STM32_SERIAL_USE_UART4 TRUE

View File

@ -283,12 +283,12 @@ void setEtbTestConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
CONFIGB(etb1.directionPin2) = GPIOC_9; CONFIGB(etb1.directionPin2) = GPIOC_9;
CONFIGB(etb1.controlPin1) = GPIOE_14; CONFIGB(etb1.controlPin1) = GPIOE_14;
#if EFI_PROD_CODE || defined(__DOXYGEN__) #if EFI_ELECTRONIC_THROTTLE_BODY || defined(__DOXYGEN__)
setDefaultEtbParameters(PASS_ENGINE_PARAMETER_SIGNATURE); setDefaultEtbParameters(PASS_ENGINE_PARAMETER_SIGNATURE);
// values are above 100% since we have feedforward part of the total summation // values are above 100% since we have feedforward part of the total summation
engineConfiguration->etb.minValue = -200; engineConfiguration->etb.minValue = -200;
engineConfiguration->etb.maxValue = 200; engineConfiguration->etb.maxValue = 200;
#endif #endif /* EFI_ELECTRONIC_THROTTLE_BODY */
engineConfiguration->tpsAdcChannel = EFI_ADC_2; // PA2 engineConfiguration->tpsAdcChannel = EFI_ADC_2; // PA2
engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_9; // PB1 engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_9; // PB1

View File

@ -15,6 +15,7 @@
* @author Andrey Belomutskiy, (c) 2012-2018 * @author Andrey Belomutskiy, (c) 2012-2018
*/ */
#include "global.h"
#include "fsio_impl.h" #include "fsio_impl.h"
#include "mazda_miata.h" #include "mazda_miata.h"
#include "engine_math.h" #include "engine_math.h"

View File

@ -9,6 +9,7 @@
* @author Andrey Belomutskiy, (c) 2012-2018 * @author Andrey Belomutskiy, (c) 2012-2018
*/ */
#include "global.h"
#include "fsio_impl.h" #include "fsio_impl.h"
#include "mitsubishi.h" #include "mitsubishi.h"
#include "allsensors.h" #include "allsensors.h"

View File

@ -18,7 +18,7 @@
#define EFI_CONSOLE_UART_DEVICE (&SD1) #define EFI_CONSOLE_UART_DEVICE (&SD1)
#define TS_SERIAL_UART_DEVICE (&SD3) #define TS_SERIAL_DEVICE (&SD3)
#define EFI_CONSOLE_TX_PORT GPIOC #define EFI_CONSOLE_TX_PORT GPIOC
#define EFI_CONSOLE_TX_PIN 10 #define EFI_CONSOLE_TX_PIN 10

View File

@ -163,6 +163,10 @@
#define EFI_HD44780_LCD TRUE #define EFI_HD44780_LCD TRUE
#endif #endif
#ifndef EFI_LCD
#define EFI_LCD TRUE
#endif
#ifndef EFI_IDLE_CONTROL #ifndef EFI_IDLE_CONTROL
#define EFI_IDLE_CONTROL TRUE #define EFI_IDLE_CONTROL TRUE
#endif #endif
@ -318,11 +322,11 @@
*/ */
#define TS_UART_DMA_MODE FALSE #define TS_UART_DMA_MODE FALSE
#define TS_DMA_UART_DEVICE (&UARTD3) #define TS_UART_DEVICE (&UARTD3)
#define TS_SERIAL_UART_DEVICE (&SD3) #define TS_SERIAL_DEVICE (&SD3)
// todo: add DMA-mode for Console? // todo: add DMA-mode for Console?
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#undef EFI_CONSOLE_UART_DEVICE #undef EFI_CONSOLE_UART_DEVICE
#endif #endif

View File

@ -154,7 +154,7 @@
*/ */
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) #if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
/* Configured in efifeatures.h */ /* Configured in efifeatures.h */
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define HAL_USE_UART TRUE #define HAL_USE_UART TRUE
#else #else
#define HAL_USE_UART FALSE #define HAL_USE_UART FALSE
@ -359,7 +359,7 @@
*/ */
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) #if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
/* Configured in efifeatures.h */ /* Configured in efifeatures.h */
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define UART_USE_WAIT TRUE #define UART_USE_WAIT TRUE
#else #else
#define UART_USE_WAIT FALSE #define UART_USE_WAIT FALSE

View File

@ -52,6 +52,9 @@
#undef EFI_HD44780_LCD #undef EFI_HD44780_LCD
#define EFI_HD44780_LCD FALSE #define EFI_HD44780_LCD FALSE
#undef EFI_LCD
#define EFI_LCD FALSE
/** /**
* Do we need file logging (like SD card) logic? * Do we need file logging (like SD card) logic?
*/ */
@ -75,13 +78,13 @@
#undef TS_UART_DMA_MODE #undef TS_UART_DMA_MODE
#define TS_UART_DMA_MODE FALSE #define TS_UART_DMA_MODE FALSE
#undef TS_DMA_UART_DEVICE #undef TS_UART_DEVICE
#define TS_DMA_UART_DEVICE (&UARTD3) #define TS_UART_DEVICE (&UARTD3)
#undef TS_SERIAL_UART_DEVICE #undef TS_SERIAL_DEVICE
#define TS_SERIAL_UART_DEVICE (&SD3) #define TS_SERIAL_DEVICE (&SD3)
// todo: add DMA-mode for Console? // todo: add DMA-mode for Console?
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#undef EFI_CONSOLE_UART_DEVICE #undef EFI_CONSOLE_UART_DEVICE
#endif #endif

View File

@ -161,7 +161,7 @@
*/ */
#if !defined(HAL_USE_UART) || defined(__DOXYGEN__) #if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
/* Configured in efifeatures.h */ /* Configured in efifeatures.h */
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define HAL_USE_UART TRUE #define HAL_USE_UART TRUE
#else #else
#define HAL_USE_UART FALSE #define HAL_USE_UART FALSE
@ -366,7 +366,7 @@
*/ */
#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__) #if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
/* Configured in efifeatures.h */ /* Configured in efifeatures.h */
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
#define UART_USE_WAIT TRUE #define UART_USE_WAIT TRUE
#else #else
#define UART_USE_WAIT FALSE #define UART_USE_WAIT FALSE

View File

@ -34,7 +34,7 @@ static uart_dma_s tsUartDma;
static void tsCopyDataFromDMA() { static void tsCopyDataFromDMA() {
chSysLockFromISR(); chSysLockFromISR();
// get 0-based DMA buffer position // get 0-based DMA buffer position
int dmaPos = TS_DMA_BUFFER_SIZE - dmaStreamGetTransactionSize(TS_DMA_UART_DEVICE->dmarx); int dmaPos = TS_DMA_BUFFER_SIZE - dmaStreamGetTransactionSize(TS_UART_DEVICE->dmarx);
// if the position is wrapped (circular DMA-mode enabled) // if the position is wrapped (circular DMA-mode enabled)
if (dmaPos < tsUartDma.readPos) if (dmaPos < tsUartDma.readPos)
dmaPos += TS_DMA_BUFFER_SIZE; dmaPos += TS_DMA_BUFFER_SIZE;
@ -70,6 +70,12 @@ static UARTConfig tsDmaUartConfig = {
0, 0, 0/*USART_CR2_STOP1_BITS*/ | USART_CR2_LINEN, 0, 0, 0, 0/*USART_CR2_STOP1_BITS*/ | USART_CR2_LINEN, 0,
/*timeout_cb*/tsRxIRQIdleHandler, /*rxhalf_cb*/tsRxIRQHalfHandler /*timeout_cb*/tsRxIRQIdleHandler, /*rxhalf_cb*/tsRxIRQHalfHandler
}; };
#elif TS_UART_MODE
/* Note: This structure is modified from the default ChibiOS layout! */
static UARTConfig tsUartConfig = {
NULL, NULL, NULL, NULL, NULL,
0, 0, 0/*USART_CR2_STOP1_BITS*/ | USART_CR2_LINEN, 0
};
#else #else
static SerialConfig tsSerialConfig = { 0, 0, USART_CR2_STOP1_BITS | USART_CR2_LINEN, 0 }; static SerialConfig tsSerialConfig = { 0, 0, USART_CR2_STOP1_BITS | USART_CR2_LINEN, 0 };
#endif /* TS_UART_DMA_MODE */ #endif /* TS_UART_DMA_MODE */
@ -103,18 +109,23 @@ void startTsPort(ts_channel_s *tsChannel) {
// start DMA driver // start DMA driver
tsDmaUartConfig.speed = CONFIGB(tunerStudioSerialSpeed); tsDmaUartConfig.speed = CONFIGB(tunerStudioSerialSpeed);
uartStart(TS_DMA_UART_DEVICE, &tsDmaUartConfig); uartStart(TS_UART_DEVICE, &tsDmaUartConfig);
// start continuous DMA transfer using our circular buffer // start continuous DMA transfer using our circular buffer
tsUartDma.readPos = 0; tsUartDma.readPos = 0;
uartStartReceive(TS_DMA_UART_DEVICE, sizeof(tsUartDma.dmaBuffer), tsUartDma.dmaBuffer); uartStartReceive(TS_UART_DEVICE, sizeof(tsUartDma.dmaBuffer), tsUartDma.dmaBuffer);
#elif TS_UART_MODE
print("Using UART mode");
// start DMA driver
tsUartConfig.speed = CONFIGB(tunerStudioSerialSpeed);
uartStart(TS_UART_DEVICE, &tsUartConfig);
#else #else
print("Using Serial mode"); print("Using Serial mode");
tsSerialConfig.speed = CONFIGB(tunerStudioSerialSpeed); tsSerialConfig.speed = CONFIGB(tunerStudioSerialSpeed);
sdStart(TS_SERIAL_UART_DEVICE, &tsSerialConfig); sdStart(TS_SERIAL_DEVICE, &tsSerialConfig);
tsChannel->channel = (BaseChannel *) TS_SERIAL_UART_DEVICE; tsChannel->channel = (BaseChannel *) TS_SERIAL_DEVICE;
#endif /* TS_UART_DMA_MODE */ #endif /* TS_UART_DMA_MODE */
} else } else
tsChannel->channel = (BaseChannel *) NULL; // actually not used tsChannel->channel = (BaseChannel *) NULL; // actually not used
@ -138,10 +149,10 @@ bool stopTsPort(ts_channel_s *tsChannel) {
{ {
if (CONFIGB(useSerialPort)) { if (CONFIGB(useSerialPort)) {
// todo: disable Rx/Tx pads? // todo: disable Rx/Tx pads?
#if TS_UART_DMA_MODE #if (TS_UART_DMA_MODE || TS_UART_MODE)
uartStop(TS_DMA_UART_DEVICE); uartStop(TS_UART_DEVICE);
#else #else
sdStop(TS_SERIAL_UART_DEVICE); sdStop(TS_SERIAL_DEVICE);
#endif /* TS_UART_DMA_MODE */ #endif /* TS_UART_DMA_MODE */
} }
} }
@ -160,10 +171,10 @@ void sr5WriteData(ts_channel_s *tsChannel, const uint8_t * buffer, int size) {
logMsg("chSequentialStreamWrite [%d]\r\n", size); logMsg("chSequentialStreamWrite [%d]\r\n", size);
#endif #endif
#if TS_UART_DMA_MODE && EFI_PROD_CODE #if (TS_UART_DMA_MODE || TS_UART_MODE) && EFI_PROD_CODE
UNUSED(tsChannel); UNUSED(tsChannel);
int transferred = size; int transferred = size;
uartSendTimeout(TS_DMA_UART_DEVICE, (size_t *)&transferred, buffer, BINARY_IO_TIMEOUT); uartSendTimeout(TS_UART_DEVICE, (size_t *)&transferred, buffer, BINARY_IO_TIMEOUT);
#else #else
if (tsChannel->channel == NULL) if (tsChannel->channel == NULL)
return; return;
@ -197,6 +208,11 @@ int sr5ReadDataTimeout(ts_channel_s *tsChannel, uint8_t * buffer, int size, int
#if TS_UART_DMA_MODE || defined(__DOXYGEN__) #if TS_UART_DMA_MODE || defined(__DOXYGEN__)
UNUSED(tsChannel); UNUSED(tsChannel);
return (int)iqReadTimeout(&tsUartDma.fifoRxQueue, (uint8_t * )buffer, (size_t)size, timeout); return (int)iqReadTimeout(&tsUartDma.fifoRxQueue, (uint8_t * )buffer, (size_t)size, timeout);
#elif TS_UART_MODE
UNUSED(tsChannel);
size_t received = (size_t)size;
uartReceiveTimeout(TS_UART_DEVICE, &received, buffer, timeout);
return (int)received;
#else /* TS_UART_DMA_MODE */ #else /* TS_UART_DMA_MODE */
if (tsChannel->channel == NULL) if (tsChannel->channel == NULL)
return 0; return 0;

View File

@ -19,6 +19,7 @@
*/ */
#include "global.h" #include "global.h"
#include "engine.h"
#include "console_io.h" #include "console_io.h"
#include "rfiutil.h" #include "rfiutil.h"
#include "tunerstudio.h" #include "tunerstudio.h"
@ -293,37 +294,3 @@ void startConsole(Logging *sharedLogger, CommandHandler console_line_callback_p)
addConsoleAction(SWITCH_TO_BINARY_COMMAND, switchToBinaryProtocol); addConsoleAction(SWITCH_TO_BINARY_COMMAND, switchToBinaryProtocol);
} }
/**
* @return TRUE if already in locked context
*/
bool lockAnyContext(void) {
int alreadyLocked = isLocked();
if (alreadyLocked)
return true;
#if USE_PORT_LOCK
port_lock();
#else /* #if USE_PORT_LOCK */
if (isIsrContext()) {
chSysLockFromISR()
;
} else {
chSysLock()
;
}
#endif /* #if USE_PORT_LOCK */
return false;
}
void unlockAnyContext(void) {
#if USE_PORT_LOCK
port_unlock();
#else /* #if USE_PORT_LOCK */
if (isIsrContext()) {
chSysUnlockFromISR()
;
} else {
chSysUnlock()
;
}
#endif /* #if USE_PORT_LOCK */
}

View File

@ -102,8 +102,11 @@ extern int maxTriggerReentraint;
extern uint32_t maxLockedDuration; extern uint32_t maxLockedDuration;
#define FULL_LOGGING_KEY "fl" #define FULL_LOGGING_KEY "fl"
#if !defined(STATUS_LOGGING_BUFFER_SIZE) || defined(__DOXYGEN__)
#define STATUS_LOGGING_BUFFER_SIZE 1800
#endif /* STATUS_LOGGING_BUFFER_SIZE */
static char LOGGING_BUFFER[1800] CCM_OPTIONAL; static char LOGGING_BUFFER[STATUS_LOGGING_BUFFER_SIZE] CCM_OPTIONAL;
static Logging logger("status loop", LOGGING_BUFFER, sizeof(LOGGING_BUFFER)); static Logging logger("status loop", LOGGING_BUFFER, sizeof(LOGGING_BUFFER));
static void setWarningEnabled(int value) { static void setWarningEnabled(int value) {
@ -650,6 +653,7 @@ static void blinkingThread(void *arg) {
#endif /* EFI_PROD_CODE */ #endif /* EFI_PROD_CODE */
#if EFI_LCD || defined(__DOXYGEN__)
class LcdController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> { class LcdController : public PeriodicController<UTILITY_THREAD_STACK_SIZE> {
public: public:
LcdController() : PeriodicController("BenchThread") { } LcdController() : PeriodicController("BenchThread") { }
@ -666,6 +670,7 @@ private:
}; };
static LcdController lcdInstance; static LcdController lcdInstance;
#endif /* EFI_LCD */
#if EFI_HIP_9011 || defined(__DOXYGEN__) #if EFI_HIP_9011 || defined(__DOXYGEN__)
extern HIP9011 instance; extern HIP9011 instance;
@ -984,7 +989,9 @@ void startStatusThreads(void) {
initStatusLeds(); initStatusLeds();
chThdCreateStatic(blinkingStack, sizeof(blinkingStack), NORMALPRIO, (tfunc_t) blinkingThread, NULL); chThdCreateStatic(blinkingStack, sizeof(blinkingStack), NORMALPRIO, (tfunc_t) blinkingThread, NULL);
#endif /* EFI_PROD_CODE */ #endif /* EFI_PROD_CODE */
#if EFI_LCD || defined(__DOXYGEN__)
lcdInstance.Start(); lcdInstance.Start();
#endif /* EFI_LCD */
} }
void setFullLog(int value) { void setFullLog(int value) {

View File

@ -339,16 +339,16 @@ void prepareVoidConfiguration(engine_configuration_s *engineConfiguration) {
boardConfiguration->acRelayPin = GPIO_UNASSIGNED; boardConfiguration->acRelayPin = GPIO_UNASSIGNED;
boardConfiguration->acRelayPinMode = OM_DEFAULT; boardConfiguration->acRelayPinMode = OM_DEFAULT;
#if EFI_PROD_CODE || defined(__DOXYGEN__) #if EFI_ALTERNATOR_CONTROL || defined(__DOXYGEN__)
setDefaultAlternatorParameters(); setDefaultAlternatorParameters();
#endif #endif /* EFI_ALTERNATOR_CONTROL */
#if EFI_ELECTRONIC_THROTTLE_BODY || defined(__DOXYGEN__) #if EFI_ELECTRONIC_THROTTLE_BODY || defined(__DOXYGEN__)
setDefaultEtbParameters(PASS_ENGINE_PARAMETER_SIGNATURE); setDefaultEtbParameters(PASS_ENGINE_PARAMETER_SIGNATURE);
setDefaultEtbBiasCurve(PASS_ENGINE_PARAMETER_SIGNATURE); setDefaultEtbBiasCurve(PASS_ENGINE_PARAMETER_SIGNATURE);
#endif #endif /* EFI_ELECTRONIC_THROTTLE_BODY */
#if EFI_IDLE_CONTROL || defined(__DOXYGEN__) #if EFI_IDLE_CONTROL || defined(__DOXYGEN__)
setDefaultIdleParameters(); setDefaultIdleParameters();
#endif #endif /* EFI_IDLE_CONTROL */
boardConfiguration->wboHeaterPin = GPIO_UNASSIGNED; boardConfiguration->wboHeaterPin = GPIO_UNASSIGNED;
boardConfiguration->cj125CsPin = GPIO_UNASSIGNED; boardConfiguration->cj125CsPin = GPIO_UNASSIGNED;

View File

@ -9,7 +9,9 @@
#include "global.h" #include "global.h"
#ifndef PWM_PHASE_MAX_COUNT
#define PWM_PHASE_MAX_COUNT 252 #define PWM_PHASE_MAX_COUNT 252
#endif /* PWM_PHASE_MAX_COUNT */
#define PWM_PHASE_MAX_WAVE_PER_PWM 3 #define PWM_PHASE_MAX_WAVE_PER_PWM 3
/** /**

View File

@ -47,7 +47,11 @@ extern int waveChartUsedSize;
extern WaveChart waveChart; extern WaveChart waveChart;
#endif /* EFI_ENGINE_SNIFFER */ #endif /* EFI_ENGINE_SNIFFER */
static char LOGGING_BUFFER[1000]; #if !defined(SETTINGS_LOGGING_BUFFER_SIZE) || defined(__DOXYGEN__)
#define SETTINGS_LOGGING_BUFFER_SIZE 1000
#endif /* SETTINGS_LOGGING_BUFFER_SIZE */
static char LOGGING_BUFFER[SETTINGS_LOGGING_BUFFER_SIZE];
static Logging logger("settings control", LOGGING_BUFFER, sizeof(LOGGING_BUFFER)); static Logging logger("settings control", LOGGING_BUFFER, sizeof(LOGGING_BUFFER));
extern int maxNesting; extern int maxNesting;
@ -1276,7 +1280,7 @@ static void setValue(const char *paramStr, const char *valueStr) {
if (strEqualCaseInsensitive(paramStr, "vsscoeff")) { if (strEqualCaseInsensitive(paramStr, "vsscoeff")) {
engineConfiguration->vehicleSpeedCoef = valueF; engineConfiguration->vehicleSpeedCoef = valueF;
#if EFI_PROD_CODE || defined(__DOXYGEN__) #if EFI_ALTERNATOR_CONTROL || defined(__DOXYGEN__)
} else if (strEqualCaseInsensitive(paramStr, "alt_t")) { } else if (strEqualCaseInsensitive(paramStr, "alt_t")) {
if (valueI > 10) { if (valueI > 10) {
engineConfiguration->alternatorControl.periodMs = valueI; engineConfiguration->alternatorControl.periodMs = valueI;
@ -1286,7 +1290,7 @@ static void setValue(const char *paramStr, const char *valueStr) {
engineConfiguration->alternatorControl.offset = valueI; engineConfiguration->alternatorControl.offset = valueI;
} else if (strEqualCaseInsensitive(paramStr, "alt_p")) { } else if (strEqualCaseInsensitive(paramStr, "alt_p")) {
setAltPFactor(valueF); setAltPFactor(valueF);
#endif #endif /* EFI_ALTERNATOR_CONTROL */
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) { // } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) { // } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {
// } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) { // } else if (strEqualCaseInsensitive(paramStr, "cranking_rpm")) {

View File

@ -452,16 +452,22 @@ const char *portname(ioportid_t GPIOx) {
return "PC"; return "PC";
if (GPIOx == GPIOD) if (GPIOx == GPIOD)
return "PD"; return "PD";
#if defined(STM32F4XX) || defined(STM32F7XX) #if STM32_HAS_GPIOE
if (GPIOx == GPIOE) if (GPIOx == GPIOE)
return "PE"; return "PE";
if (GPIOx == GPIOG) #endif /* STM32_HAS_GPIOE */
return "PG"; #if STM32_HAS_GPIOF
if (GPIOx == GPIOH)
return "PH";
#endif
if (GPIOx == GPIOF) if (GPIOx == GPIOF)
return "PF"; return "PF";
#endif /* STM32_HAS_GPIOF */
#if STM32_HAS_GPIOG
if (GPIOx == GPIOG)
return "PG";
#endif /* STM32_HAS_GPIOG */
#if STM32_HAS_GPIOH
if (GPIOx == GPIOH)
return "PH";
#endif /* STM32_HAS_GPIOH */
return "unknown"; return "unknown";
} }

View File

@ -10,6 +10,7 @@
#include "global.h" #include "global.h"
#include "pwm_generator_logic.h" #include "pwm_generator_logic.h"
#include "pwm_generator.h"
#include "error_handling.h" #include "error_handling.h"
/** /**

View File

@ -151,7 +151,7 @@ int gpiochip_register(const char *name, struct gpiochip_ops *ops, size_t size, v
int gpiochips_init(void) int gpiochips_init(void)
{ {
int i; int i;
int ret; int ret = -1;
int pins_added = 0; int pins_added = 0;
for (i = 0; i < BOARD_EXT_GPIOCHIPS; i++) { for (i = 0; i < BOARD_EXT_GPIOCHIPS; i++) {

View File

@ -36,16 +36,15 @@ HW_LAYER_EMS_CPP = $(HW_LAYER_EGT_CPP) \
ifeq ($(PROJECT_CPU),ST_STM32F7) ifeq ($(PROJECT_CPU),ST_STM32F7)
HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/stm32f7xx_hal_flash.c \ HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/stm32f7xx_hal_flash.c \
$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/stm32f7xx_hal_flash_ex.c $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/stm32f7xx_hal_flash_ex.c
include $(PROJECT_DIR)/hw_layer/$(CPU_HWLAYER)/hw_stm32.mk
endif endif
ifeq ($(PROJECT_CPU),ST_STM32F4) ifeq ($(PROJECT_CPU),ST_STM32F4)
HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash.c \ HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash.c \
$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash_ex.c $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash_ex.c
include $(PROJECT_DIR)/hw_layer/$(CPU_HWLAYER)/hw_stm32.mk
endif endif
ifeq ($(PROJECT_CPU),ST_STM32F1) ifeq ($(PROJECT_CPU),ST_STM32F1)
include $(PROJECT_DIR)/hw_layer/$(CPU_HWLAYER)/hw_stm32.mk
endif endif
-include $(PROJECT_DIR)/hw_layer/$(CPU_HWLAYER)/hw_ports.mk

View File

@ -14,8 +14,7 @@
#include "engine.h" #include "engine.h"
// todo: EFI_SERVO macro #if EFI_SERVO || EFI_SIMULATOR
#if EFI_PROD_CODE || EFI_SIMULATOR
#include "servo.h" #include "servo.h"
#include "pin_repository.h" #include "pin_repository.h"
@ -84,5 +83,5 @@ void initServo(void) {
chThdCreateStatic(seThreadStack, sizeof(seThreadStack), NORMALPRIO, (tfunc_t)(void*) seThread, NULL); chThdCreateStatic(seThreadStack, sizeof(seThreadStack), NORMALPRIO, (tfunc_t)(void*) seThread, NULL);
} }
#endif #endif /* EFI_SERVO */

View File

@ -17,6 +17,8 @@ ifeq ($(PROJECT_CPU),)
endif endif
DDEFS += -D$(PROJECT_CPU) DDEFS += -D$(PROJECT_CPU)
-include $(PROJECT_DIR)/config/boards/$(PROJECT_BOARD)/config.mk
# CPU-dependent defs # CPU-dependent defs
ifeq ($(PROJECT_CPU),ST_STM32F7) ifeq ($(PROJECT_CPU),ST_STM32F7)
CPU_STARTUP = startup_stm32f7xx.mk CPU_STARTUP = startup_stm32f7xx.mk
@ -36,3 +38,11 @@ CPU_STARTUP = startup_stm32f1xx.mk
CPU_PLATFORM = STM32F1xx/platform.mk CPU_PLATFORM = STM32F1xx/platform.mk
CPU_HWLAYER = ports/stm32/stm32f1 CPU_HWLAYER = ports/stm32/stm32f1
endif endif
ifeq ($(CPU_STARTUP_DIR),)
CPU_STARTUP_DIR = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/$(CPU_STARTUP)
endif
ifeq ($(CPU_PLATFORM_DIR),)
CPU_PLATFORM_DIR = $(CHIBIOS)/os/hal/ports/STM32/$(CPU_PLATFORM)
endif

View File

@ -43,6 +43,7 @@ void resetConsoleActions(void) {
} }
static void doAddAction(const char *token, action_type_e type, Void callback, void *param) { static void doAddAction(const char *token, action_type_e type, Void callback, void *param) {
#if !defined(EFI_DISABLE_CONSOLE_ACTIONS) || defined(__DOXYGEN__)
for (uint32_t i = 0; i < efiStrlen(token);i++) { for (uint32_t i = 0; i < efiStrlen(token);i++) {
char ch = token[i]; char ch = token[i];
if (ch != mytolower(ch)) { if (ch != mytolower(ch)) {
@ -61,6 +62,7 @@ static void doAddAction(const char *token, action_type_e type, Void callback, vo
current->parameterType = type; current->parameterType = type;
current->callback = callback; current->callback = callback;
current->param = param; current->param = param;
#endif /* EFI_DISABLE_CONSOLE_ACTIONS */
} }
void addConsoleActionP(const char *token, VoidPtr callback, void *param) { void addConsoleActionP(const char *token, VoidPtr callback, void *param) {

View File

@ -74,4 +74,40 @@ void chVTSetAny(virtual_timer_t *vtp, systime_t time, vtfunc_t vtfunc, void *par
} }
} }
/**
* @return TRUE if already in locked context
*/
bool lockAnyContext(void) {
int alreadyLocked = isLocked();
if (alreadyLocked)
return true;
#if USE_PORT_LOCK
port_lock();
#else /* #if USE_PORT_LOCK */
if (isIsrContext()) {
chSysLockFromISR()
;
} else {
chSysLock()
;
}
#endif /* #if USE_PORT_LOCK */
return false;
}
void unlockAnyContext(void) {
#if USE_PORT_LOCK
port_unlock();
#else /* #if USE_PORT_LOCK */
if (isIsrContext()) {
chSysUnlockFromISR()
;
} else {
chSysUnlock()
;
}
#endif /* #if USE_PORT_LOCK */
}
#endif #endif

@ -1 +1 @@
Subproject commit 90ac7b4eba79a4d7135c935f2ac14c0bac0efc97 Subproject commit c965d87b0390c20a7d3be13c1d614f180bfb30c3

View File

@ -177,10 +177,13 @@ INCDIR = . \
#MCU = cortex-m4 #MCU = cortex-m4
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
ifeq ($(USE_MINGW32_I686),)
#this one is 64 bit #this one is 64 bit
TRGT = x86_64-w64-mingw32- TRGT = x86_64-w64-mingw32-
else
#this one was 32 bit #this one was 32 bit
# TRGT = i686-w64-mingw32- TRGT = i686-w64-mingw32-
endif
else else
TRGT = TRGT =
endif endif