mirror of https://github.com/rusefi/wideband.git
Extract common code for all F1 devices (#162)
* main: acctually call InitConfiguration() * f1_rev2: enable EFL and MFS (Managed Flash Storate) * f1_dual: enable EFL and MFS (Managed Flash Storate) * f1 boards: extract common code * port.h: add LoadDefaults() method to Configuration class * f1 boards: store Configuration to MFS * f1 boards: common getTsSignature() for all f1 boards
This commit is contained in:
parent
0a4a609db9
commit
adae19db09
|
@ -0,0 +1,87 @@
|
||||||
|
#include "port.h"
|
||||||
|
|
||||||
|
#include "wideband_config.h"
|
||||||
|
|
||||||
|
#include "hal.h"
|
||||||
|
#include "hal_mfs.h"
|
||||||
|
|
||||||
|
// Storage
|
||||||
|
|
||||||
|
static const MFSConfig mfscfg1 = {
|
||||||
|
.flashp = (BaseFlash *)&EFLD1,
|
||||||
|
.erased = 0xFFFFFFFFU,
|
||||||
|
.bank_size = 4096U,
|
||||||
|
.bank0_start = 120U,
|
||||||
|
.bank0_sectors = 4U,
|
||||||
|
.bank1_start = 124U,
|
||||||
|
.bank1_sectors = 4U
|
||||||
|
};
|
||||||
|
|
||||||
|
static MFSDriver mfs1;
|
||||||
|
|
||||||
|
// Settings
|
||||||
|
static Configuration cfg;
|
||||||
|
#define MFS_CONFIGURATION_RECORD_ID 1
|
||||||
|
|
||||||
|
// Configuration defaults
|
||||||
|
void Configuration::LoadDefaults()
|
||||||
|
{
|
||||||
|
CanIndexOffset = 0;
|
||||||
|
|
||||||
|
/* Finaly */
|
||||||
|
Tag = ExpectedTag;
|
||||||
|
}
|
||||||
|
|
||||||
|
int InitConfiguration()
|
||||||
|
{
|
||||||
|
size_t size = GetConfiguratiuonSize();
|
||||||
|
|
||||||
|
/* Starting EFL driver.*/
|
||||||
|
eflStart(&EFLD1, NULL);
|
||||||
|
|
||||||
|
mfsObjectInit(&mfs1);
|
||||||
|
|
||||||
|
mfsStart(&mfs1, &mfscfg1);
|
||||||
|
|
||||||
|
mfs_error_t err = mfsReadRecord(&mfs1, MFS_CONFIGURATION_RECORD_ID, &size, GetConfiguratiuonPtr());
|
||||||
|
if ((err != MFS_NO_ERROR) || (size != GetConfiguratiuonSize() || !cfg.IsValid())) {
|
||||||
|
/* load defaults */
|
||||||
|
cfg.LoadDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Configuration c;
|
||||||
|
|
||||||
|
Configuration& GetConfiguration()
|
||||||
|
{
|
||||||
|
return cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetConfiguration(const Configuration& newConfig)
|
||||||
|
{
|
||||||
|
cfg = newConfig;
|
||||||
|
|
||||||
|
SaveConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TS stuff */
|
||||||
|
void SaveConfiguration() {
|
||||||
|
/* TODO: handle error */
|
||||||
|
mfsWriteRecord(&mfs1, MFS_CONFIGURATION_RECORD_ID, GetConfiguratiuonSize(), GetConfiguratiuonPtr());
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t *GetConfiguratiuonPtr()
|
||||||
|
{
|
||||||
|
return (uint8_t *)&cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t GetConfiguratiuonSize()
|
||||||
|
{
|
||||||
|
return sizeof(cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *getTsSignature() {
|
||||||
|
return TS_SIGNATURE;
|
||||||
|
}
|
|
@ -2,6 +2,8 @@ USE_BOOTLOADER = no
|
||||||
|
|
||||||
MCU = cortex-m3
|
MCU = cortex-m3
|
||||||
|
|
||||||
|
ALLCPPSRC += $(BOARDDIR)/../f1_common/f1_port.cpp
|
||||||
|
|
||||||
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
||||||
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
* @brief Enables the EFlash subsystem.
|
* @brief Enables the EFlash subsystem.
|
||||||
*/
|
*/
|
||||||
#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__)
|
#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__)
|
||||||
#define HAL_USE_EFL FALSE
|
#define HAL_USE_EFL TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -112,41 +112,3 @@ AnalogResult AnalogSample()
|
||||||
.VirtualGroundVoltageInt = HALF_VCC,
|
.VirtualGroundVoltageInt = HALF_VCC,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
|
||||||
uint8_t pad[128];
|
|
||||||
} config;
|
|
||||||
|
|
||||||
static Configuration c;
|
|
||||||
|
|
||||||
Configuration& GetConfiguration()
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetConfiguration(const Configuration& newConfig)
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TS stuff */
|
|
||||||
void SaveConfiguration() {
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *GetConfiguratiuonPtr()
|
|
||||||
{
|
|
||||||
return (uint8_t *)&config;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t GetConfiguratiuonSize()
|
|
||||||
{
|
|
||||||
return sizeof(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_dual"
|
|
||||||
|
|
||||||
const char *getTsSignature() {
|
|
||||||
return TS_SIGNATURE;
|
|
||||||
}
|
|
|
@ -1,5 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// TS settings
|
||||||
|
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_dual"
|
||||||
|
|
||||||
// This board implements two channels
|
// This board implements two channels
|
||||||
#define AFR_CHANNELS 2
|
#define AFR_CHANNELS 2
|
||||||
#define EGT_CHANNELS 2
|
#define EGT_CHANNELS 2
|
||||||
|
|
|
@ -2,6 +2,8 @@ USE_BOOTLOADER = no
|
||||||
|
|
||||||
MCU = cortex-m3
|
MCU = cortex-m3
|
||||||
|
|
||||||
|
ALLCPPSRC += $(BOARDDIR)/../f1_common/f1_port.cpp
|
||||||
|
|
||||||
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
||||||
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
* @brief Enables the EFlash subsystem.
|
* @brief Enables the EFlash subsystem.
|
||||||
*/
|
*/
|
||||||
#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__)
|
#if !defined(HAL_USE_EFL) || defined(__DOXYGEN__)
|
||||||
#define HAL_USE_EFL FALSE
|
#define HAL_USE_EFL TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -76,41 +76,3 @@ AnalogResult AnalogSample()
|
||||||
.VirtualGroundVoltageInt = HALF_VCC,
|
.VirtualGroundVoltageInt = HALF_VCC,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct {
|
|
||||||
uint8_t pad[128];
|
|
||||||
} config;
|
|
||||||
|
|
||||||
static Configuration c;
|
|
||||||
|
|
||||||
Configuration& GetConfiguration()
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetConfiguration(const Configuration& newConfig)
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TS stuff */
|
|
||||||
void SaveConfiguration() {
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *GetConfiguratiuonPtr()
|
|
||||||
{
|
|
||||||
return (uint8_t *)&config;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t GetConfiguratiuonSize()
|
|
||||||
{
|
|
||||||
return sizeof(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_f1"
|
|
||||||
|
|
||||||
const char *getTsSignature() {
|
|
||||||
return TS_SIGNATURE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// TS settings
|
||||||
|
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_f1"
|
||||||
|
|
||||||
// Fundamental board constants
|
// Fundamental board constants
|
||||||
#define VCC_VOLTS (3.3f)
|
#define VCC_VOLTS (3.3f)
|
||||||
#define HALF_VCC (VCC_VOLTS / 2)
|
#define HALF_VCC (VCC_VOLTS / 2)
|
||||||
|
|
|
@ -2,6 +2,8 @@ USE_BOOTLOADER = no
|
||||||
|
|
||||||
MCU = cortex-m3
|
MCU = cortex-m3
|
||||||
|
|
||||||
|
ALLCPPSRC += $(BOARDDIR)/../f1_common/f1_port.cpp
|
||||||
|
|
||||||
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
|
||||||
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
|
||||||
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
include $(CHIBIOS)/os/common/ports/ARMv7-M/compilers/GCC/mk/port.mk
|
||||||
|
|
|
@ -1,11 +1,7 @@
|
||||||
#include "port.h"
|
#include "port.h"
|
||||||
|
|
||||||
|
|
||||||
#include "wideband_config.h"
|
#include "wideband_config.h"
|
||||||
|
|
||||||
#include "hal.h"
|
|
||||||
#include "hal_mfs.h"
|
|
||||||
|
|
||||||
#define ADC_CHANNEL_COUNT 5
|
#define ADC_CHANNEL_COUNT 5
|
||||||
#define ADC_SAMPLE ADC_SAMPLE_7P5
|
#define ADC_SAMPLE ADC_SAMPLE_7P5
|
||||||
|
|
||||||
|
@ -77,67 +73,3 @@ AnalogResult AnalogSample()
|
||||||
.VirtualGroundVoltageInt = HALF_VCC,
|
.VirtualGroundVoltageInt = HALF_VCC,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings
|
|
||||||
|
|
||||||
static struct {
|
|
||||||
uint8_t pad[128];
|
|
||||||
} config;
|
|
||||||
|
|
||||||
const MFSConfig mfscfg1 = {
|
|
||||||
.flashp = (BaseFlash *)&EFLD1,
|
|
||||||
.erased = 0xFFFFFFFFU,
|
|
||||||
.bank_size = 4096U,
|
|
||||||
.bank0_start = 120U,
|
|
||||||
.bank0_sectors = 4U,
|
|
||||||
.bank1_start = 124U,
|
|
||||||
.bank1_sectors = 4U
|
|
||||||
};
|
|
||||||
|
|
||||||
MFSDriver mfs1;
|
|
||||||
|
|
||||||
int InitConfiguration()
|
|
||||||
{
|
|
||||||
/* Starting EFL driver.*/
|
|
||||||
eflStart(&EFLD1, NULL);
|
|
||||||
|
|
||||||
mfsObjectInit(&mfs1);
|
|
||||||
|
|
||||||
mfsStart(&mfs1, &mfscfg1);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Configuration c;
|
|
||||||
|
|
||||||
Configuration& GetConfiguration()
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
return c;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetConfiguration(const Configuration& newConfig)
|
|
||||||
{
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TS stuff */
|
|
||||||
void SaveConfiguration() {
|
|
||||||
// TODO: implement me!
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *GetConfiguratiuonPtr()
|
|
||||||
{
|
|
||||||
return (uint8_t *)&config;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t GetConfiguratiuonSize()
|
|
||||||
{
|
|
||||||
return sizeof(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_f1"
|
|
||||||
|
|
||||||
const char *getTsSignature() {
|
|
||||||
return TS_SIGNATURE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// TS settings
|
||||||
|
#define TS_SIGNATURE "rusEFI 2022.05.29.wideband_f1"
|
||||||
|
|
||||||
// Fundamental board constants
|
// Fundamental board constants
|
||||||
#define VCC_VOLTS (3.3f)
|
#define VCC_VOLTS (3.3f)
|
||||||
#define HALF_VCC (VCC_VOLTS / 2)
|
#define HALF_VCC (VCC_VOLTS / 2)
|
||||||
|
|
|
@ -30,6 +30,7 @@ public:
|
||||||
{
|
{
|
||||||
return this->Tag == ExpectedTag;
|
return this->Tag == ExpectedTag;
|
||||||
}
|
}
|
||||||
|
void LoadDefaults();
|
||||||
|
|
||||||
// Actual configuration data
|
// Actual configuration data
|
||||||
uint8_t CanIndexOffset = 0;
|
uint8_t CanIndexOffset = 0;
|
||||||
|
@ -38,6 +39,7 @@ public:
|
||||||
uint8_t pad[128 - 1 - 4];
|
uint8_t pad[128 - 1 - 4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int InitConfiguration();
|
||||||
Configuration& GetConfiguration();
|
Configuration& GetConfiguration();
|
||||||
void SetConfiguration(const Configuration& newConfig);
|
void SetConfiguration(const Configuration& newConfig);
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include "io_pins.h"
|
#include "io_pins.h"
|
||||||
#include "auxout.h"
|
#include "auxout.h"
|
||||||
#include "max31855.h"
|
#include "max31855.h"
|
||||||
|
#include "port.h"
|
||||||
|
|
||||||
#include "wideband_config.h"
|
#include "wideband_config.h"
|
||||||
|
|
||||||
|
@ -23,6 +24,9 @@ int main() {
|
||||||
halInit();
|
halInit();
|
||||||
chSysInit();
|
chSysInit();
|
||||||
|
|
||||||
|
// Load configuration
|
||||||
|
InitConfiguration();
|
||||||
|
|
||||||
// Fire up all of our threads
|
// Fire up all of our threads
|
||||||
StartSampling();
|
StartSampling();
|
||||||
InitPumpDac();
|
InitPumpDac();
|
||||||
|
|
Loading…
Reference in New Issue