This commit is contained in:
Matthew Kennedy 2023-02-22 14:53:31 -08:00
parent 3fe5e8f3e3
commit 5d7a30ce2b
25 changed files with 0 additions and 2217 deletions

View File

@ -20,9 +20,6 @@ jobs:
# What boards should we build for? In the 'include' section below,
# set up what each of these boards needs to build.
#
# see also gen_config where we have a similar list for all boards!
# see also build-primary-bundle where default/primary bundle is build separately
#
# build-target: [
# alphax-2chan,
# alphax-4chan,
@ -31,7 +28,6 @@ jobs:
# hellen72,
# hellen81,
# hellen88bmw,
# hellen88bmw_avr,
# hellen-nb1,
# hellen-gm-e67,
# hellenNA8_96,
@ -45,14 +41,11 @@ jobs:
# mre_f4_no_openblt,
# mre_f4_debug,
# mre_f4_recovery,
# mre_f4_hardware_QC_special_build,
# mre_f7,
# prometheus_405,
# prometheus_469,
# proteus_f4,
# proteus_f4_hardware_QC_special_build,
# proteus_f7,
# proteus_f7_hardware_QC_special_build,
# proteus_h7,
# proteus_legacy,
# stm32f429_nucleo,
@ -97,10 +90,6 @@ jobs:
# folder: config/boards/hellen/hellen88bmw
# ini-file: fome_hellen88bmw.ini
# - build-target: hellen88bmw_avr
# folder: config/boards/hellen/hellen88bmw
# ini-file: fome_hellen88bmw.ini
- build-target: hellen-nb1
folder: config/boards/hellen/hellen-nb1
ini-file: fome_hellen-nb1.ini
@ -157,10 +146,6 @@ jobs:
# folder: config/boards/microrusefi
# ini-file: fome_mre_f4.ini
# - build-target: mre_f4_hardware_QC_special_build
# folder: config/boards/microrusefi
# ini-file: fome_mre_f4.ini
# - build-target: mre_f7
# folder: config/boards/microrusefi
# ini-file: fome_mre_f7.ini
@ -177,18 +162,10 @@ jobs:
folder: config/boards/proteus
ini-file: fome_proteus_f4.ini
# - build-target: proteus_f4_hardware_QC_special_build
# folder: config/boards/proteus
# ini-file: fome_proteus_f4.ini
- build-target: proteus_f7
folder: config/boards/proteus
ini-file: fome_proteus_f7.ini
# - build-target: proteus_f7_hardware_QC_special_build
# folder: config/boards/proteus
# ini-file: fome_proteus_f7.ini
# - build-target: proteus_h7
# folder: config/boards/proteus
# ini-file: fome_proteus_h7.ini

View File

@ -1,422 +0,0 @@
/**
* @file boards/f429-208/board.c
*
* @date Oct 14, 2022
* @author Andrey Gusakov, 2022
*/
#include "hal.h"
#include "hal_community.h"
#include "hal_sdram_lld.h"
/* for UNUSED() */
#include "efilib.h"
#include "board.h"
/*
* SDRAM driver configuration structure.
*/
static const SDRAMConfig sdram_cfg = {
.sdcr = (uint32_t) (FMC_ColumnBits_Number_8b |
FMC_RowBits_Number_12b |
FMC_SDMemory_Width_16b |
FMC_InternalBank_Number_4 |
FMC_CAS_Latency_3 |
FMC_Write_Protection_Disable |
FMC_SDClock_Period_2 |
FMC_Read_Burst_Disable |
FMC_ReadPipe_Delay_1),
.sdtr = (uint32_t)( (2 - 1) | // FMC_LoadToActiveDelay = 2 (TMRD: 2 Clock cycles)
(7 << 4) | // FMC_ExitSelfRefreshDelay = 7 (TXSR: min=70ns (7x11.11ns))
(4 << 8) | // FMC_SelfRefreshTime = 4 (TRAS: min=42ns (4x11.11ns) max=120k (ns))
(7 << 12) | // FMC_RowCycleDelay = 7 (TRC: min=70 (7x11.11ns))
(2 << 16) | // FMC_WriteRecoveryTime = 2 (TWR: min=1+ 7ns (1+1x11.11ns))
(2 << 20) | // FMC_RPDelay = 2 (TRP: 20ns => 2x11.11ns)
(2 << 24)), // FMC_RCDDelay = 2 (TRCD: 20ns => 2x11.11ns)
.sdcmr = (uint32_t)(((4 - 1) << 5) |
((FMC_SDCMR_MRD_BURST_LENGTH_2 |
FMC_SDCMR_MRD_BURST_TYPE_SEQUENTIAL |
FMC_SDCMR_MRD_CAS_LATENCY_3 |
FMC_SDCMR_MRD_OPERATING_MODE_STANDARD |
FMC_SDCMR_MRD_WRITEBURST_MODE_SINGLE) << 9)),
/* if (STM32_SYSCLK == 180000000) ->
64ms / 4096 = 15.625us
15.625us * 90MHz = 1406 - 20 = 1386 */
//.sdrtr = (1386 << 1),
.sdrtr = (uint32_t)(683 << 1),
};
/*===========================================================================*/
/* Driver local definitions. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver exported variables. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver local variables and types. */
/*===========================================================================*/
/**
* @brief Type of STM32 GPIO port setup.
*/
typedef struct {
uint32_t moder;
uint32_t otyper;
uint32_t ospeedr;
uint32_t pupdr;
uint32_t odr;
uint32_t afrl;
uint32_t afrh;
} gpio_setup_t;
/**
* @brief Type of STM32 GPIO initialization data.
*/
typedef struct {
#if STM32_HAS_GPIOA || defined(__DOXYGEN__)
gpio_setup_t PAData;
#endif
#if STM32_HAS_GPIOB || defined(__DOXYGEN__)
gpio_setup_t PBData;
#endif
#if STM32_HAS_GPIOC || defined(__DOXYGEN__)
gpio_setup_t PCData;
#endif
#if STM32_HAS_GPIOD || defined(__DOXYGEN__)
gpio_setup_t PDData;
#endif
#if STM32_HAS_GPIOE || defined(__DOXYGEN__)
gpio_setup_t PEData;
#endif
#if STM32_HAS_GPIOF || defined(__DOXYGEN__)
gpio_setup_t PFData;
#endif
#if STM32_HAS_GPIOG || defined(__DOXYGEN__)
gpio_setup_t PGData;
#endif
#if STM32_HAS_GPIOH || defined(__DOXYGEN__)
gpio_setup_t PHData;
#endif
#if STM32_HAS_GPIOI || defined(__DOXYGEN__)
gpio_setup_t PIData;
#endif
#if STM32_HAS_GPIOJ || defined(__DOXYGEN__)
gpio_setup_t PJData;
#endif
#if STM32_HAS_GPIOK || defined(__DOXYGEN__)
gpio_setup_t PKData;
#endif
} gpio_config_t;
/**
* @brief STM32 GPIO static initialization data.
*/
static const gpio_config_t gpio_default_config = {
#if STM32_HAS_GPIOA
{VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
#endif
#if STM32_HAS_GPIOB
{VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
#endif
#if STM32_HAS_GPIOC
{VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
#endif
#if STM32_HAS_GPIOD
{VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
#endif
#if STM32_HAS_GPIOE
{VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
#endif
#if STM32_HAS_GPIOF
{VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
#endif
#if STM32_HAS_GPIOG
{VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
#endif
#if STM32_HAS_GPIOH
{VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
#endif
#if STM32_HAS_GPIOI
{VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
#endif
#if STM32_HAS_GPIOJ
{VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
#endif
#if STM32_HAS_GPIOK
{VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
#endif
};
/*===========================================================================*/
/* Driver local functions. */
/*===========================================================================*/
static void gpio_init(stm32_gpio_t *gpiop, const gpio_setup_t *config) {
gpiop->OTYPER = config->otyper;
gpiop->OSPEEDR = config->ospeedr;
gpiop->PUPDR = config->pupdr;
gpiop->ODR = config->odr;
gpiop->AFRL = config->afrl;
gpiop->AFRH = config->afrh;
gpiop->MODER = config->moder;
}
static void stm32_gpio_init(void) {
/* Enabling GPIO-related clocks, the mask comes from the
registry header file.*/
rccResetAHB1(STM32_GPIO_EN_MASK);
rccEnableAHB1(STM32_GPIO_EN_MASK, true);
/* Initializing all the defined GPIO ports.*/
#if STM32_HAS_GPIOA
gpio_init(GPIOA, &gpio_default_config.PAData);
#endif
#if STM32_HAS_GPIOB
gpio_init(GPIOB, &gpio_default_config.PBData);
#endif
#if STM32_HAS_GPIOC
gpio_init(GPIOC, &gpio_default_config.PCData);
#endif
#if STM32_HAS_GPIOD
gpio_init(GPIOD, &gpio_default_config.PDData);
#endif
#if STM32_HAS_GPIOE
gpio_init(GPIOE, &gpio_default_config.PEData);
#endif
#if STM32_HAS_GPIOF
gpio_init(GPIOF, &gpio_default_config.PFData);
#endif
#if STM32_HAS_GPIOG
gpio_init(GPIOG, &gpio_default_config.PGData);
#endif
#if STM32_HAS_GPIOH
gpio_init(GPIOH, &gpio_default_config.PHData);
#endif
#if STM32_HAS_GPIOI
gpio_init(GPIOI, &gpio_default_config.PIData);
#endif
#if STM32_HAS_GPIOJ
gpio_init(GPIOJ, &gpio_default_config.PJData);
#endif
#if STM32_HAS_GPIOK
gpio_init(GPIOK, &gpio_default_config.PKData);
#endif
}
/*===========================================================================*/
/* Driver interrupt handlers. */
/*===========================================================================*/
/*===========================================================================*/
/* Driver exported functions. */
/*===========================================================================*/
#define SDRAM ((FSMC_SDRAM_TypeDef *)FSMC_Bank5_6_R_BASE)
/**
* FMC_Command_Mode
*/
#define FMCCM_NORMAL ((uint32_t)0x00000000)
#define FMCCM_CLK_ENABLED ((uint32_t)0x00000001)
#define FMCCM_PALL ((uint32_t)0x00000002)
#define FMCCM_AUTO_REFRESH ((uint32_t)0x00000003)
#define FMCCM_LOAD_MODE ((uint32_t)0x00000004)
#define FMCCM_SELFREFRESH ((uint32_t)0x00000005)
#define FMCCM_POWER_DOWN ((uint32_t)0x00000006)
static void __early_sdram_wait_ready(void) {
/* Wait until the SDRAM controller is ready */
while (SDRAM->SDSR & FMC_SDSR_BUSY);
}
static void __early_sdram_delay(void)
{
/* something > 100uS */
volatile int tmp = 168 * 1000 * 100;
do {
tmp--;
} while(tmp);
}
static void __early_sdram_init(const SDRAMConfig *config)
{
uint32_t command_target = 0;
#ifdef rccResetFSMC
rccResetFSMC();
#endif
rccEnableFSMC(FALSE);
SDRAM->SDCR1 = config->sdcr;
SDRAM->SDTR1 = config->sdtr;
SDRAM->SDCR2 = config->sdcr;
SDRAM->SDTR2 = config->sdtr;
#if STM32_SDRAM_USE_SDRAM1
command_target |= FMC_SDCMR_CTB1;
#endif
#if STM32_SDRAM_USE_SDRAM2
command_target |= FMC_SDCMR_CTB2;
#endif
/* Step 3: Configure a clock configuration enable command.*/
__early_sdram_wait_ready();
SDRAM->SDCMR = FMCCM_CLK_ENABLED | command_target;
/* Step 4: Insert delay (tipically 100uS).*/
__early_sdram_delay();
/* Step 5: Configure a PALL (precharge all) command.*/
__early_sdram_wait_ready();
SDRAM->SDCMR = FMCCM_PALL | command_target;
/* Step 6.1: Configure a Auto-Refresh command: send the first command.*/
__early_sdram_wait_ready();
SDRAM->SDCMR = FMCCM_AUTO_REFRESH | command_target |
(config->sdcmr & FMC_SDCMR_NRFS);
/* Step 6.2: Send the second command.*/
__early_sdram_wait_ready();
SDRAM->SDCMR = FMCCM_AUTO_REFRESH | command_target |
(config->sdcmr & FMC_SDCMR_NRFS);
/* Step 7: Program the external memory mode register.*/
__early_sdram_wait_ready();
SDRAM->SDCMR = FMCCM_LOAD_MODE | command_target |
(config->sdcmr & FMC_SDCMR_MRD);
/* Step 8: Set clock.*/
__early_sdram_wait_ready();
SDRAM->SDRTR = config->sdrtr & FMC_SDRTR_COUNT;
__early_sdram_wait_ready();
}
static int __early_sdram_test(void *base, size_t size)
{
size_t i;
uint32_t *ptr = base;
/* test 0 */
for (i = 0; i < size / sizeof(uint32_t); i++) {
ptr[i] = 0;
}
for (i = 0; i < size / sizeof(uint32_t); i++) {
if (ptr[i] != 0)
return -1;
}
/* test 1 */
for (i = 0; i < size / sizeof(uint32_t); i++) {
ptr[i] = 0xffffffff;
}
for (i = 0; i < size / sizeof(uint32_t); i++) {
if (ptr[i] != 0xffffffff)
return -1;
}
/* test 2 */
for (i = 0; i < size / sizeof(uint32_t); i++) {
ptr[i] = i;
}
for (i = 0; i < size / sizeof(uint32_t); i++) {
if (ptr[i] != i)
return -1;
}
return 0;
}
/**
* @brief Early initialization code.
* @details GPIO ports and system clocks are initialized before everything
* else.
*/
void __early_init(void) {
stm32_gpio_init();
stm32_clock_init();
/*
* Initialise FSMC for SDRAM.
*/
#if 0
/* clear driver struct */
memset(&SDRAMD1, 0 sizeof(SDRAMD1));
sdramInit();
sdramStart(&SDRAMD1, &sdram_cfg);
#else
__early_sdram_init(&sdram_cfg);
#endif
if (1) {
/* yes, hardcoded values */
__early_sdram_test((void *) 0xD0000000, 8 * 1024 * 1024);
}
}
#if HAL_USE_SDC || defined(__DOXYGEN__)
/**
* @brief SDC card detection.
*/
bool sdc_lld_is_card_inserted(SDCDriver *sdcp)
{
UNUSED(sdcp);
/* TODO: Fill the implementation.*/
return true;
}
/**
* @brief SDC card write protection detection.
*/
bool sdc_lld_is_write_protected(SDCDriver *sdcp)
{
UNUSED(sdcp);
/* TODO: Fill the implementation.*/
return false;
}
#endif /* HAL_USE_SDC */
#if HAL_USE_MMC_SPI || defined(__DOXYGEN__)
/**
* @brief MMC_SPI card detection.
*/
bool mmc_lld_is_card_inserted(MMCDriver *mmcp)
{
UNUSED(mmcp);
/* TODO: Fill the implementation.*/
return true;
}
/**
* @brief MMC_SPI card write protection detection.
*/
bool mmc_lld_is_write_protected(MMCDriver *mmcp)
{
UNUSED(mmcp);
/* TODO: Fill the implementation.*/
return false;
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +0,0 @@
HALCONFDIR = $(BOARD_DIR)
# List of all the board related files.
BOARDCPPSRC = $(BOARD_DIR)/board_configuration.cpp
# Required include directories
# STM32F429 has FSMC with SDRAM support
DDEFS += -DFIRMWARE_ID=\"stm32f429\"
IS_STM32F429 = yes
EFI_HAS_EXT_SDRAM = yes
#LED
DDEFS += -DLED_CRITICAL_ERROR_BRAIN_PIN=Gpio::B11
DDEFS += -DSTM32_FSMC_USE_FSMC1=TRUE -DSTM32_SDRAM_USE_SDRAM2=TRUE
DDEFS += -DHAL_USE_SDRAM=TRUE
DDEFS += -DHAL_USE_FSMC=TRUE
# see signature_haba208.h
DDEFS += -DSHORT_BOARD_NAME=haba208
# Shared variables
ALLINC += $(BOARDINC)

View File

@ -1,20 +0,0 @@
#include "pch.h"
/**
* @brief Board-specific initialization code.
* @todo Add your board-specific code, if any.
*/
void boardInit(void)
{
/* NOP */
}
/**
* @brief Board-specific configuration defaults.
* @todo Add your board-specific code, if any.
*/
void setBoardDefaultConfiguration() {
engineConfiguration->communicationLedPin = Gpio::Unassigned;
engineConfiguration->runningLedPin = Gpio::G13; /* LD3 - green */
engineConfiguration->warningLedPin = Gpio::Unassigned;
}

View File

@ -1,5 +0,0 @@
#!/bin/bash
#-DDUMMY -DEFI_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE -DCH_DBG_THREADS_PROFILING=FALSE"
bash ../common_make.sh f429-208 ARCH_STM32F4

View File

@ -1,12 +0,0 @@
#!/bin/bash
cd ..
export EXTRA_PARAMS="-DDUMMY \
-DEFI_SOFTWARE_KNOCK=FALSE \
-DHAL_TRIGGER_USE_ADC=TRUE \
-DSTM32_ADC_USE_ADC3=TRUE \
"
bash ../common_make.sh hellen/hellen88bmw ARCH_STM32F4

View File

@ -1,2 +0,0 @@
@echo off
bash.exe compile_mre_f4_hardware_QC_special_build.sh

View File

@ -130,11 +130,6 @@ static void setupDefaultSensorInputs() {
setCommonNTCSensor(&engineConfiguration->auxTempSensor1, 2700);
setCommonNTCSensor(&engineConfiguration->auxTempSensor2, 2700);
#if HW_CHECK_MODE
engineConfiguration->auxTempSensor1.adcChannel = EFI_ADC_2;
engineConfiguration->auxTempSensor2.adcChannel = EFI_ADC_3;
#endif // HW_CHECK_MODE
}
void setBoardConfigOverrides() {

View File

@ -1,26 +0,0 @@
#!/bin/bash
export EXTRA_PARAMS="-DDUMMY \
-DHW_CHECK_MODE=TRUE \
-DANALOG_HW_CHECK_MODE=TRUE \
-DEFI_HPFP=FALSE \
-DEFI_ALTERNATOR_CONTROL=FALSE \
-DEFI_LOGIC_ANALYZER=FALSE \
-DEFI_TOOTH_LOGGER=FALSE \
-DEFI_LUA=FALSE \
-DEFI_MALFUNCTION_INDICATOR=FALSE \
-DEFI_AUX_PID=FALSE \
-DEFI_MAX_31855=FALSE \
-DEFI_ENGINE_SNIFFER=FALSE \
-DEFI_STORAGE_INT_FLASH=FALSE \
-DEFI_LAUNCH_CONTROL=FALSE \
-DEFI_LAUNCH_CONTROL=FALSE \
-DHW_CHECK_ALWAYS_STIMULATE=TRUE \
-DRAMDISK_INVALID"
export VAR_DEF_ENGINE_TYPE=-DDEFAULT_ENGINE_TYPE=MRE_BOARD_NEW_TEST
# this QC configuration is used to assert our status with debug info
export DEBUG_LEVEL_OPT="-O0 -ggdb -g"
bash ../common_make.sh microrusefi ARCH_STM32F4

View File

@ -102,18 +102,8 @@ static void setupEtb() {
static void setupDefaultSensorInputs() {
// trigger inputs
#if VR_HW_CHECK_MODE
// set_trigger_input_pin 0 PE7
engineConfiguration->triggerInputPins[0] = PROTEUS_VR_1;
engineConfiguration->camInputs[0] = PROTEUS_VR_2;
#else
// Digital channel 1 as default - others not set
engineConfiguration->triggerInputPins[0] = PROTEUS_DIGITAL_1;
engineConfiguration->camInputs[0] = Gpio::Unassigned;
#endif
engineConfiguration->triggerInputPins[1] = Gpio::Unassigned;
engineConfiguration->clt.adcChannel = PROTEUS_IN_CLT;
engineConfiguration->iat.adcChannel = PROTEUS_IN_IAT;

View File

@ -1,9 +0,0 @@
#!/bin/bash
export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_MODE=TRUE -DHW_CHECK_SD=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE"
export VAR_DEF_ENGINE_TYPE=-DDEFAULT_ENGINE_TYPE=PROTEUS_QC_TEST_BOARD
# export DEBUG_LEVEL_OPT="-O0 -ggdb -g"
bash ../common_make.sh proteus ARCH_STM32F4

View File

@ -1,9 +0,0 @@
#!/bin/bash
export EXTRA_PARAMS="-DVR_HW_CHECK_MODE=TRUE -DHW_CHECK_MODE=TRUE -DHW_CHECK_SD=TRUE -DHW_CHECK_ALWAYS_STIMULATE=TRUE"
export VAR_DEF_ENGINE_TYPE=-DDEFAULT_ENGINE_TYPE=PROTEUS_QC_TEST_BOARD
# export DEBUG_LEVEL_OPT="-O0 -ggdb -g"
bash ../common_make.sh proteus ARCH_STM32F7

View File

@ -4,10 +4,6 @@ rusEFI supports quite a wide array of hardware - we support stm32f4 and we suppo
For best user experience we have more than a dozen of different _binaries_ which are all compiled from same _firmware_ files with different configuration. This folder is all about that process.
See [misc/jenkins/compile_other_versions/run.bat](misc/jenkins/compile_other_versions/run.bat) which is executed by build server.
See https://rusefi.com/build_server/
By definition, BOARD_NAME is a folder in firmware\config\boards

View File

@ -826,12 +826,6 @@ int TunerStudio::handleCrcCommand(TsChannelBase* tsChannel, char *data, int inco
#endif /* ENABLE_PERF_TRACE */
case TS_GET_CONFIG_ERROR: {
const char* configError = getCriticalErrorMessage();
#if HW_CHECK_MODE
// analog input errors are returned as firmware error in QC mode
if (!hasFirmwareError()) {
strcpy((char*)configError, "FACTORY_MODE_PLEASE_CONTACT_SUPPORT");
}
#endif // HW_CHECK_MODE
tsChannel->sendResponse(TS_CRC, reinterpret_cast<const uint8_t*>(configError), strlen(configError), true);
break;
}

View File

@ -313,18 +313,7 @@ class CommunicationBlinkingTask : public PeriodicTimerController {
setAllLeds(0);
} else if (counter % 2 == 0) {
enginePins.communicationLedPin.setValue(0);
#if HW_CHECK_SD
extern int totalLoggedBytes;
if (totalLoggedBytes > 2000) {
enginePins.communicationLedPin.setValue(1);
}
#endif // HW_CHECK_SD
//#if HW_CHECK_MODE
// // we have to do anything possible to help users notice FACTORY MODE
// enginePins.errorLedPin.setValue(1);
// enginePins.runningLedPin.setValue(1);
//#endif // HW_CHECK_MODE
if (!lowVBatt) {
enginePins.warningLedPin.setValue(0);
}
@ -354,11 +343,6 @@ extern int totalLoggedBytes;
}
enginePins.communicationLedPin.setValue(1);
//#if HW_CHECK_MODE
// // we have to do anything possible to help users notice FACTORY MODE
// enginePins.errorLedPin.setValue(0);
// enginePins.runningLedPin.setValue(0);
//#endif // HW_CHECK_MODE
#if EFI_ENGINE_CONTROL
if (lowVBatt || isTriggerErrorNow() || isIgnitionTimingError()) {
@ -696,11 +680,7 @@ DcHardware *getdcHardware();
extern FrequencySensor vehicleSpeedSensor;
tsOutputChannels->vssEdgeCounter = vehicleSpeedSensor.eventCounter;
#if HW_CHECK_MODE
tsOutputChannels->hasCriticalError = 1;
#else
tsOutputChannels->hasCriticalError = hasFirmwareError();
#endif // HW_CHECK_MODE
tsOutputChannels->isWarnNow = engine->engineState.warnings.isWarningNow();

View File

@ -121,14 +121,6 @@ void Engine::updateTriggerWaveform() {
#endif /* EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT */
}
#if ANALOG_HW_CHECK_MODE
static void assertCloseTo(const char* msg, float actual, float expected) {
if (actual < 0.95f * expected || actual > 1.05f * expected) {
firmwareError(OBD_PCM_Processor_Fault, "%s validation failed actual=%f vs expected=%f", msg, actual, expected);
}
}
#endif // ANALOG_HW_CHECK_MODE
void Engine::periodicSlowCallback() {
ScopePerf perf(PE::EnginePeriodicSlowCallback);
@ -175,32 +167,6 @@ void Engine::periodicSlowCallback() {
void baroLps25Update();
baroLps25Update();
#endif // EFI_PROD_CODE
#if ANALOG_HW_CHECK_MODE
efiAssertVoid(OBD_PCM_Processor_Fault, isAdcChannelValid(engineConfiguration->clt.adcChannel), "No CLT setting");
efitimesec_t secondsNow = getTimeNowS();
#if ! HW_CHECK_ALWAYS_STIMULATE
fail("HW_CHECK_ALWAYS_STIMULATE required to have self-stimulation")
#endif
int hwCheckRpm = 204;
if (secondsNow > 2 && secondsNow < 180) {
assertCloseTo("RPM", Sensor::get(SensorType::Rpm).Value, hwCheckRpm);
} else if (!hasFirmwareError() && secondsNow > 180) {
static bool isHappyTest = false;
if (!isHappyTest) {
setTriggerEmulatorRPM(5 * hwCheckRpm);
efiPrintf("TEST PASSED");
isHappyTest = true;
}
}
assertCloseTo("clt", Sensor::getRaw(SensorType::Clt), 1.351f);
assertCloseTo("iat", Sensor::getRaw(SensorType::Iat), 2.245f);
assertCloseTo("aut1", Sensor::getRaw(SensorType::AuxTemp1), 2.750f);
assertCloseTo("aut2", Sensor::getRaw(SensorType::AuxTemp2), 3.176f);
#endif // ANALOG_HW_CHECK_MODE
}
/**

View File

@ -238,7 +238,6 @@ static void handleFuel(int rpm, efitick_t nowNt, float currentPhase, float nextP
void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_t currentPhase, angle_t nextPhase) {
ScopePerf perf(PE::MainTriggerCallback);
#if ! HW_CHECK_MODE
if (hasFirmwareError()) {
/**
* In case on a major error we should not process any more events.
@ -246,7 +245,6 @@ void mainTriggerCallback(uint32_t trgEventIndex, efitick_t edgeTimestamp, angle_
*/
return;
}
#endif // HW_CHECK_MODE
int rpm = engine->rpmCalculator.getCachedRpm();
if (rpm == 0) {

View File

@ -294,21 +294,7 @@ static FlashState readConfiguration() {
}
void readFromFlash() {
#if HW_CHECK_MODE
/*
* getFlashAddr does device validation, we want validation to be invoked even while we are
* HW_CHECK_MODE mode where we would not need actual address
* todo: rename method to emphasis the fact of validation check?
*/
getFlashAddrFirstCopy();
getFlashAddrSecondCopy();
resetConfigurationExt(DEFAULT_ENGINE_TYPE);
FlashState result = FlashState::Ok;
#else
FlashState result = readConfiguration();
#endif
switch (result) {
case FlashState::CrcFailed:

View File

@ -260,20 +260,6 @@ void hwHandleVvtCamSignal(TriggerValue front, efitick_t nowNt, int index) {
warning(CUSTOM_VVT_MODE_NOT_SELECTED, "VVT: event on %d but no mode", camIndex);
}
#if VR_HW_CHECK_MODE
// some boards do not have hardware VR input LEDs which makes such boards harder to validate
// from experience we know that assembly mistakes happen and quality control is required
extern ioportid_t criticalErrorLedPort;
extern ioportmask_t criticalErrorLedPin;
for (int i = 0 ; i < 100 ; i++) {
// turning pin ON and busy-waiting a bit
palWritePad(criticalErrorLedPort, criticalErrorLedPin, 1);
}
palWritePad(criticalErrorLedPort, criticalErrorLedPin, 0);
#endif // VR_HW_CHECK_MODE
const auto& vvtShape = tc->vvtShape[camIndex];
bool isVvtWithRealDecoder = vvtWithRealDecoder(engineConfiguration->vvtMode[camIndex]);
@ -404,24 +390,6 @@ uint32_t triggerMaxDuration = 0;
void hwHandleShaftSignal(int signalIndex, bool isRising, efitick_t timestamp) {
TriggerCentral *tc = getTriggerCentral();
ScopePerf perf(PE::HandleShaftSignal);
#if VR_HW_CHECK_MODE
// some boards do not have hardware VR input LEDs which makes such boards harder to validate
// from experience we know that assembly mistakes happen and quality control is required
extern ioportid_t criticalErrorLedPort;
extern ioportmask_t criticalErrorLedPin;
#if HW_CHECK_ALWAYS_STIMULATE
disableTriggerStimulator();
#endif // HW_CHECK_ALWAYS_STIMULATE
for (int i = 0 ; i < 100 ; i++) {
// turning pin ON and busy-waiting a bit
palWritePad(criticalErrorLedPort, criticalErrorLedPin, 1);
}
palWritePad(criticalErrorLedPort, criticalErrorLedPin, 0);
#endif // VR_HW_CHECK_MODE
if (tc->directSelfStimulation || !tc->hwTriggerInputEnabled) {
// sensor noise + self-stim = loss of trigger sync

View File

@ -268,12 +268,6 @@ void runRusEfiWithConfig() {
startCanConsole();
#endif /* EFI_CAN_SERIAL */
#if HW_CHECK_ALWAYS_STIMULATE
// we need a special binary for final assembly check. We cannot afford to require too much software or too many steps
// to be executed at the place of assembly
enableTriggerStimulator();
#endif // HW_CHECK_ALWAYS_STIMULATE
#if EFI_LUA
startLua();
#endif // EFI_LUA

View File

@ -1,3 +0,0 @@
@echo off
bash.exe misc\jenkins\compile_other_versions\compile.sh %1 %2 %3 %4
bash.exe misc\jenkins\compile_other_versions\prepare_bundle.sh %1 %2 %3 %4

View File

@ -1,97 +0,0 @@
set script_name=run.bat
echo Entering %script_name%
echo "RUSEFI_BUILD_FTP_USER=%RUSEFI_BUILD_FTP_USER%"
pwd
call misc\jenkins\build_java_console.bat
if not exist java_console_binary/rusefi_console.jar exit -1
call misc\jenkins\build_simulator.bat
if not exist simulator/build/rusefi_simulator.exe exit -1
rem #
rem # see gen_config.sh where short<>long name dictionary is hard-coded
rem #
call misc\jenkins\compile_other_versions\compile_and_upload.bat frankenso frankenso_na6
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat kinetis kinetis
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
call misc\jenkins\compile_other_versions\compile_and_upload.bat microrusefi mre_f4 rusefi_mre_f4.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
rem call misc\jenkins\compile_other_versions\compile_and_upload.bat microrusefi mre_f4_slave rusefi_mre_f7.ini
rem IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
rem IF %ERRORLEVEL% NEQ 0 EXIT /B 1
rem pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat microrusefi mre_f4_hardware_QC_special_build rusefi_microrusefi.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
set f7_console_setting=firmware\config\boards\nucleo_f767\rusefi_console_properties.xml
rem folter_name configuration_name [optional .ini file name]
call misc\jenkins\compile_other_versions\compile_and_upload.bat microrusefi mre_f7 rusefi_microrusefi.ini %f7_console_setting%
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
rem call misc\jenkins\compile_other_versions\compile_and_upload.bat microrusefi mre_f7_test rusefi_microrusefi.ini %f7_console_setting%
rem IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
rem IF %ERRORLEVEL% NEQ 0 EXIT /B 1
rem pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat prometheus prometheus_405 prometheus_405.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat prometheus prometheus_469 prometheus_469.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat proteus proteus_f4 rusefi_proteus_f4.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat proteus proteus_f7 rusefi_proteus_f7.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat nucleo_f767 stm32f767_nucleo no %f7_console_setting%
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
rem call misc\jenkins\compile_other_versions\compile_and_upload.bat nucleo_f767 stm32f767_osc no %f7_console_setting%
rem IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
rem IF %ERRORLEVEL% NEQ 0 EXIT /B 1
rem pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat prometheus prometheus_405 rusefi_prometheus_405.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd
call misc\jenkins\compile_other_versions\compile_and_upload.bat prometheus prometheus_469 rusefi_prometheus_469.ini
IF %ERRORLEVEL% NEQ 0 echo ERROR invoking compile_and_upload.bat
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
pwd

View File

@ -24,8 +24,6 @@
#define EFI_ENABLE_CRITICAL_ENGINE_STOP TRUE
#define EFI_ENABLE_ENGINE_WARNING TRUE
#define HW_CHECK_MODE FALSE
#define SC_BUFFER_SIZE 4000
#define EFI_ACTIVE_CONFIGURATION_IN_FLASH FALSE