From c8c536d96cb38fe8d8ae0a13e4fcdb94b5f8b4b3 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 11:00:56 -0700 Subject: [PATCH 01/12] guard --- firmware/hw_layer/drivers/can/can_config.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/firmware/hw_layer/drivers/can/can_config.cpp b/firmware/hw_layer/drivers/can/can_config.cpp index f1048ff931..ec6381f176 100644 --- a/firmware/hw_layer/drivers/can/can_config.cpp +++ b/firmware/hw_layer/drivers/can/can_config.cpp @@ -2,6 +2,8 @@ #include "pch.h" +#if HAL_USE_CAN + #if EFI_PROD_CODE // Values below calculated with http://www.bittiming.can-wiki.info/ @@ -190,3 +192,5 @@ const CANConfig* findCanConfig(can_baudrate_e rate) { return &canConfig500; } } + +#endif // HAL_USE_CAN From 12b9a3e4771e3bfd8f99c957c710df860dd8e198 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 11:35:14 -0700 Subject: [PATCH 02/12] H7 uses 128k pages --- firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld index fa97fa8715..af8e05b79a 100755 --- a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld +++ b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld @@ -15,7 +15,7 @@ */ /* change address & length if bootloader */ -bootloader_size = 32k; +bootloader_size = 128k; flash_start = 0x08000000 + (DEFINED(HAS_BOOTLOADER) ? bootloader_size : 0); flash_size = DEFINED(IS_BOOTLOADER) ? bootloader_size : 1M; image_size = DEFINED(HAS_BOOTLOADER) ? (flash_size - bootloader_size) : flash_size; From bfad2e45a15bb8db810de80bf50f077b2ebed358 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 15:20:11 -0700 Subject: [PATCH 03/12] Split F4/F7 vs H7 flash controllers --- .../{flash_int.cpp => flash_int_f4_f7.cpp} | 87 +---- .../hw_layer/ports/stm32/flash_int_h7.cpp | 298 ++++++++++++++++++ firmware/hw_layer/ports/stm32/stm32_common.mk | 1 - .../hw_layer/ports/stm32/stm32f4/hw_ports.mk | 3 +- .../hw_layer/ports/stm32/stm32f7/hw_ports.mk | 1 + .../hw_layer/ports/stm32/stm32h7/hw_ports.mk | 1 + 6 files changed, 307 insertions(+), 84 deletions(-) rename firmware/hw_layer/ports/stm32/{flash_int.cpp => flash_int_f4_f7.cpp} (82%) create mode 100644 firmware/hw_layer/ports/stm32/flash_int_h7.cpp diff --git a/firmware/hw_layer/ports/stm32/flash_int.cpp b/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp similarity index 82% rename from firmware/hw_layer/ports/stm32/flash_int.cpp rename to firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp index c8f9f58fb2..ec0d8f7cd7 100644 --- a/firmware/hw_layer/ports/stm32/flash_int.cpp +++ b/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp @@ -14,29 +14,12 @@ #include "flash_int.h" #include -#ifdef STM32H7XX - // Use bank 2 on H7 - #define FLASH_CR FLASH->CR2 - #define FLASH_SR FLASH->SR2 - #define FLASH_KEYR FLASH->KEYR2 +#define FLASH_CR FLASH->CR +#define FLASH_SR FLASH->SR +#define FLASH_KEYR FLASH->KEYR - // I have no idea why ST changed the register name from STRT -> START - #define FLASH_CR_STRT FLASH_CR_START - - #undef FLASH_BASE - // This is the start of the second bank, since H7 sector numbers are bank relative - #define FLASH_BASE 0x08100000 - - // QW bit supercedes the older BSY bit - #define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH_SR & FLASH_SR_QW); -#else - #define FLASH_CR FLASH->CR - #define FLASH_SR FLASH->SR - #define FLASH_KEYR FLASH->KEYR - - // Wait for the flash operation to finish - #define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH->SR & FLASH_SR_BSY); -#endif +// Wait for the flash operation to finish +#define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH->SR & FLASH_SR_BSY); flashaddr_t intFlashSectorBegin(flashsector_t sector) { flashaddr_t address = FLASH_BASE; @@ -60,11 +43,7 @@ flashsector_t intFlashSectorAt(flashaddr_t address) { static void intFlashClearErrors(void) { -#ifdef STM32H7XX - FLASH->CCR2 = 0xffffffff; -#else FLASH_SR = 0x0000ffff; -#endif } static int intFlashCheckErrors(void) @@ -274,61 +253,6 @@ int intFlashRead(flashaddr_t source, char* destination, size_t size) { return FLASH_RETURN_SUCCESS; } -#ifdef STM32H7XX -int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) { - /* Unlock flash for write access */ - if (intFlashUnlock() == HAL_FAILED) - return FLASH_RETURN_NO_PERMISSION; - - /* Wait for any busy flags */ - intFlashWaitWhileBusy(); - - /* Setup parallelism before program */ - FLASH_CR &= ~FLASH_CR_PSIZE_MASK; - FLASH_CR |= FLASH_CR_PSIZE_VALUE; - - // Round up to the next number of full 32 byte words - size_t flashWordCount = (size - 1) / 32 + 1; - - // Read units of flashdata_t from the buffer, writing to flash - const flashdata_t* pRead = (const flashdata_t*)buffer; - flashdata_t* pWrite = (flashdata_t*)address; - - for (size_t word = 0; word < flashWordCount; word++) { - /* Enter flash programming mode */ - FLASH_CR |= FLASH_CR_PG; - - // Flush pipelines - __ISB(); - __DSB(); - - // Write 32 bytes - for (size_t i = 0; i < 8; i++) { - *pWrite++ = *pRead++; - } - - // Flush pipelines - __ISB(); - __DSB(); - - /* Wait for completion */ - intFlashWaitWhileBusy(); - - /* Exit flash programming mode */ - FLASH_CR &= ~FLASH_CR_PG; - - // Flush pipelines - __ISB(); - __DSB(); - } - - /* Lock flash again */ - intFlashLock(); - - return FLASH_RETURN_SUCCESS; -} - -#else // not STM32H7XX static int intFlashWriteData(flashaddr_t address, const flashdata_t data) { /* Clearing error status bits.*/ intFlashClearErrors(); @@ -432,6 +356,5 @@ exit: return ret; } -#endif #endif /* EFI_INTERNAL_FLASH */ diff --git a/firmware/hw_layer/ports/stm32/flash_int_h7.cpp b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp new file mode 100644 index 0000000000..63ba21ef97 --- /dev/null +++ b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp @@ -0,0 +1,298 @@ +/** + * + * http://www.chibios.com/forum/viewtopic.php?f=8&t=820 + * https://github.com/tegesoft/flash-stm32f407 + * + * @file flash_int.c + * @brief Lower-level code related to internal flash memory + */ + +#include "pch.h" + +#if EFI_INTERNAL_FLASH + +#include "flash_int.h" +#include + +// Use bank 2 on H7 +// TODO: Support bank 1 as well for the bootloader to work properly! +#define FLASH_CR FLASH->CR2 +#define FLASH_SR FLASH->SR2 +#define FLASH_KEYR FLASH->KEYR2 + +// I have no idea why ST changed the register name from STRT -> START +#define FLASH_CR_STRT FLASH_CR_START + +// #undef FLASH_BASE +// This is the start of the second bank, since H7 sector numbers are bank relative +// #define FLASH_BASE 0x08100000 + +// QW bit supercedes the older BSY bit +#define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH_SR & FLASH_SR_QW); + +flashaddr_t intFlashSectorBegin(flashsector_t sector) { + flashaddr_t address = FLASH_BASE; + while (sector > 0) { + --sector; + address += flashSectorSize(sector); + } + return address; +} + +flashaddr_t intFlashSectorEnd(flashsector_t sector) { + return intFlashSectorBegin(sector + 1); +} + +flashsector_t intFlashSectorAt(flashaddr_t address) { + flashsector_t sector = 0; + while (address >= intFlashSectorEnd(sector)) + ++sector; + return sector; +} + +static void intFlashClearErrors(void) +{ + FLASH->CCR2 = 0xffffffff; +} + +static int intFlashCheckErrors(void) +{ + uint32_t sr = FLASH_SR; + +#ifdef FLASH_SR_OPERR + if (sr & FLASH_SR_OPERR) + return FLASH_RETURN_OPERROR; +#endif + if (sr & FLASH_SR_WRPERR) + return FLASH_RETURN_WPERROR; +#ifdef FLASH_SR_PGAERR + if (sr & FLASH_SR_PGAERR) + return FLASH_RETURN_ALIGNERROR; +#endif +#ifdef FLASH_SR_PGPERR + if (sr & FLASH_SR_PGPERR) + return FLASH_RETURN_PPARALLERROR; +#endif +#ifdef FLASH_SR_ERSERR + if (sr & FLASH_SR_ERSERR) + return FLASH_RETURN_ESEQERROR; +#endif +#ifdef FLASH_SR_PGSERR + if (sr & FLASH_SR_PGSERR) + return FLASH_RETURN_PSEQERROR; +#endif + + return FLASH_RETURN_SUCCESS; +} + +/** + * @brief Unlock the flash memory for write access. + * @return HAL_SUCCESS Unlock was successful. + * @return HAL_FAILED Unlock failed. + */ +static bool intFlashUnlock(void) { + /* Check if unlock is really needed */ + if (!(FLASH_CR & FLASH_CR_LOCK)) + return HAL_SUCCESS; + + /* Write magic unlock sequence */ + FLASH_KEYR = 0x45670123; + FLASH_KEYR = 0xCDEF89AB; + + /* Check if unlock was successful */ + if (FLASH_CR & FLASH_CR_LOCK) + return HAL_FAILED; + return HAL_SUCCESS; +} + +/** + * @brief Lock the flash memory for write access. + */ +#define intFlashLock() { FLASH_CR |= FLASH_CR_LOCK; } + +int intFlashSectorErase(flashsector_t sector) { + int ret; + uint8_t sectorRegIdx = sector; + + /* Unlock flash for write access */ + if (intFlashUnlock() == HAL_FAILED) + return FLASH_RETURN_NO_PERMISSION; + + /* Wait for any busy flags. */ + intFlashWaitWhileBusy(); + + /* Clearing error status bits.*/ + intFlashClearErrors(); + + /* Setup parallelism before any program/erase */ + FLASH_CR &= ~FLASH_CR_PSIZE_MASK; + FLASH_CR |= FLASH_CR_PSIZE_VALUE; + + /* Start deletion of sector. + * SNB(4:1) is defined as: + * 00000 sector 0 + * 00001 sector 1 + * ... + * 01011 sector 11 (the end of 1st bank, 1Mb border) + * 10000 sector 12 (start of 2nd bank) + * ... + * 11011 sector 23 (the end of 2nd bank, 2Mb border) + * others not allowed */ + FLASH_CR &= ~FLASH_CR_SNB_Msk; + FLASH_CR |= (sectorRegIdx << FLASH_CR_SNB_Pos) & FLASH_CR_SNB_Msk; + /* sector erase */ + FLASH_CR |= FLASH_CR_SER; + /* start erase operation */ + FLASH_CR |= FLASH_CR_STRT; + + /* Wait until it's finished. */ + intFlashWaitWhileBusy(); + + /* Sector erase flag does not clear automatically. */ + FLASH_CR &= ~FLASH_CR_SER; + + /* Lock flash again */ + intFlashLock() + ; + + ret = intFlashCheckErrors(); + if (ret != FLASH_RETURN_SUCCESS) + return ret; + + /* Check deleted sector for errors */ + if (intFlashIsErased(intFlashSectorBegin(sector), flashSectorSize(sector)) == FALSE) + return FLASH_RETURN_BAD_FLASH; /* Sector is not empty despite the erase cycle! */ + + /* Successfully deleted sector */ + return FLASH_RETURN_SUCCESS; +} + +int intFlashErase(flashaddr_t address, size_t size) { + while (size > 0) { + flashsector_t sector = intFlashSectorAt(address); + int err = intFlashSectorErase(sector); + if (err != FLASH_RETURN_SUCCESS) + return err; + address = intFlashSectorEnd(sector); + size_t sector_size = flashSectorSize(sector); + if (sector_size >= size) + break; + size -= sector_size; + } + + return FLASH_RETURN_SUCCESS; +} + +bool intFlashIsErased(flashaddr_t address, size_t size) { +#if CORTEX_MODEL == 7 + // If we have a cache, invalidate the relevant cache lines. + // They may still contain old data, leading us to believe that the + // flash erase failed. + SCB_InvalidateDCache_by_Addr((uint32_t*)address, size); +#endif + + /* Check for default set bits in the flash memory + * For efficiency, compare flashdata_t values as much as possible, + * then, fallback to byte per byte comparison. */ + while (size >= sizeof(flashdata_t)) { + if (*(volatile flashdata_t*) address != (flashdata_t) (-1)) // flashdata_t being unsigned, -1 is 0xFF..FF + return false; + address += sizeof(flashdata_t); + size -= sizeof(flashdata_t); + } + while (size > 0) { + if (*(char*) address != 0xFF) + return false; + ++address; + --size; + } + + return TRUE; +} + +bool intFlashCompare(flashaddr_t address, const char* buffer, size_t size) { + /* For efficiency, compare flashdata_t values as much as possible, + * then, fallback to byte per byte comparison. */ + while (size >= sizeof(flashdata_t)) { + if (*(volatile flashdata_t*) address != *(flashdata_t*) buffer) + return FALSE; + address += sizeof(flashdata_t); + buffer += sizeof(flashdata_t); + size -= sizeof(flashdata_t); + } + while (size > 0) { + if (*(volatile char*) address != *buffer) + return FALSE; + ++address; + ++buffer; + --size; + } + + return TRUE; +} + +int intFlashRead(flashaddr_t source, char* destination, size_t size) { +#if CORTEX_MODEL == 7 + // If we have a cache, invalidate the relevant cache lines. + // They may still contain old data, leading us to read invalid data. + SCB_InvalidateDCache_by_Addr((uint32_t*)source, size); +#endif + + memcpy(destination, (char*) source, size); + return FLASH_RETURN_SUCCESS; +} + +int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) { + /* Unlock flash for write access */ + if (intFlashUnlock() == HAL_FAILED) + return FLASH_RETURN_NO_PERMISSION; + + /* Wait for any busy flags */ + intFlashWaitWhileBusy(); + + /* Setup parallelism before program */ + FLASH_CR &= ~FLASH_CR_PSIZE_MASK; + FLASH_CR |= FLASH_CR_PSIZE_VALUE; + + // Round up to the next number of full 32 byte words + size_t flashWordCount = (size - 1) / 32 + 1; + + // Read units of flashdata_t from the buffer, writing to flash + const flashdata_t* pRead = (const flashdata_t*)buffer; + flashdata_t* pWrite = (flashdata_t*)address; + + for (size_t word = 0; word < flashWordCount; word++) { + /* Enter flash programming mode */ + FLASH_CR |= FLASH_CR_PG; + + // Flush pipelines + __ISB(); + __DSB(); + + // Write 32 bytes + for (size_t i = 0; i < 8; i++) { + *pWrite++ = *pRead++; + } + + // Flush pipelines + __ISB(); + __DSB(); + + /* Wait for completion */ + intFlashWaitWhileBusy(); + + /* Exit flash programming mode */ + FLASH_CR &= ~FLASH_CR_PG; + + // Flush pipelines + __ISB(); + __DSB(); + } + + /* Lock flash again */ + intFlashLock(); + + return FLASH_RETURN_SUCCESS; +} + +#endif /* EFI_INTERNAL_FLASH */ diff --git a/firmware/hw_layer/ports/stm32/stm32_common.mk b/firmware/hw_layer/ports/stm32/stm32_common.mk index 3b8de03a58..b81fcc4663 100644 --- a/firmware/hw_layer/ports/stm32/stm32_common.mk +++ b/firmware/hw_layer/ports/stm32/stm32_common.mk @@ -8,7 +8,6 @@ HW_LAYER_EMS_CPP += \ $(HW_STM32_PORT_DIR)/backup_ram.cpp \ $(HW_STM32_PORT_DIR)/microsecond_timer_stm32.cpp \ $(HW_STM32_PORT_DIR)/osc_detector.cpp \ - $(HW_STM32_PORT_DIR)/flash_int.cpp \ $(HW_STM32_PORT_DIR)/serial_over_usb/usbcfg.cpp RUSEFIASM = \ diff --git a/firmware/hw_layer/ports/stm32/stm32f4/hw_ports.mk b/firmware/hw_layer/ports/stm32/stm32f4/hw_ports.mk index 8f8117b014..15a7b553c9 100644 --- a/firmware/hw_layer/ports/stm32/stm32f4/hw_ports.mk +++ b/firmware/hw_layer/ports/stm32/stm32f4/hw_ports.mk @@ -4,7 +4,8 @@ HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash. $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/stm32f4xx_hal_flash_ex.c HW_LAYER_EMS_CPP += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/mpu_util.cpp \ - $(PROJECT_DIR)/hw_layer/ports/stm32/stm32_adc_v2.cpp + $(PROJECT_DIR)/hw_layer/ports/stm32/stm32_adc_v2.cpp \ + $(HW_STM32_PORT_DIR)/flash_int_f4_f7.cpp \ MCU = cortex-m4 LDSCRIPT = $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/STM32F4.ld diff --git a/firmware/hw_layer/ports/stm32/stm32f7/hw_ports.mk b/firmware/hw_layer/ports/stm32/stm32f7/hw_ports.mk index 2f77f2a97f..a0a73011e0 100644 --- a/firmware/hw_layer/ports/stm32/stm32f7/hw_ports.mk +++ b/firmware/hw_layer/ports/stm32/stm32f7/hw_ports.mk @@ -5,6 +5,7 @@ HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/stm32f7xx_hal_flash. HW_LAYER_EMS_CPP += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/mpu_util.cpp \ $(PROJECT_DIR)/hw_layer/ports/stm32/stm32_adc_v2.cpp \ + $(HW_STM32_PORT_DIR)/flash_int_f4_f7.cpp \ # This MCU has a cache, align functions to a cache line for maximum cache efficiency USE_OPT += -falign-functions=16 diff --git a/firmware/hw_layer/ports/stm32/stm32h7/hw_ports.mk b/firmware/hw_layer/ports/stm32/stm32h7/hw_ports.mk index d37aa244e7..51dc828a34 100644 --- a/firmware/hw_layer/ports/stm32/stm32h7/hw_ports.mk +++ b/firmware/hw_layer/ports/stm32/stm32h7/hw_ports.mk @@ -5,6 +5,7 @@ HW_LAYER_EMS += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/stm32h7xx_hal_flash. HW_LAYER_EMS_CPP += $(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/mpu_util.cpp \ $(PROJECT_DIR)/hw_layer/ports/stm32/stm32_adc_v4.cpp \ + $(HW_STM32_PORT_DIR)/flash_int_h7.cpp \ # This MCU has a cache, align functions to a cache line for maximum cache efficiency USE_OPT += -falign-functions=16 From 717aae8ce287aeb5eccc0a10b30393963256fbfc Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 15:31:29 -0700 Subject: [PATCH 04/12] extract STM32 flash common --- firmware/hw_layer/flash_int.h | 4 + .../hw_layer/ports/stm32/flash_int_common.cpp | 95 +++++++++++++++++++ .../hw_layer/ports/stm32/flash_int_f4_f7.cpp | 86 ----------------- .../hw_layer/ports/stm32/flash_int_h7.cpp | 90 +----------------- firmware/hw_layer/ports/stm32/stm32_common.mk | 1 + 5 files changed, 102 insertions(+), 174 deletions(-) create mode 100644 firmware/hw_layer/ports/stm32/flash_int_common.cpp diff --git a/firmware/hw_layer/flash_int.h b/firmware/hw_layer/flash_int.h index a8071bf0e7..f525cb416b 100644 --- a/firmware/hw_layer/flash_int.h +++ b/firmware/hw_layer/flash_int.h @@ -166,3 +166,7 @@ int intFlashRead(flashaddr_t source, char* destination, size_t size); * @return FLASH_RETURN_NO_PERMISSION Access denied. */ int intFlashWrite(flashaddr_t address, const char* buffer, size_t size); + +flashaddr_t intFlashSectorBegin(flashsector_t sector); +flashaddr_t intFlashSectorEnd(flashsector_t sector); +flashsector_t intFlashSectorAt(flashaddr_t address); diff --git a/firmware/hw_layer/ports/stm32/flash_int_common.cpp b/firmware/hw_layer/ports/stm32/flash_int_common.cpp new file mode 100644 index 0000000000..f995ce7652 --- /dev/null +++ b/firmware/hw_layer/ports/stm32/flash_int_common.cpp @@ -0,0 +1,95 @@ +// Common logic for flash memory between F4/F7 and H7 implementations + +#include "pch.h" + +#if EFI_INTERNAL_FLASH + +#include "flash_int.h" + +flashaddr_t intFlashSectorEnd(flashsector_t sector) { + return intFlashSectorBegin(sector + 1); +} + +flashsector_t intFlashSectorAt(flashaddr_t address) { + flashsector_t sector = 0; + while (address >= intFlashSectorEnd(sector)) + ++sector; + return sector; +} + +int intFlashErase(flashaddr_t address, size_t size) { + while (size > 0) { + flashsector_t sector = intFlashSectorAt(address); + int err = intFlashSectorErase(sector); + if (err != FLASH_RETURN_SUCCESS) + return err; + address = intFlashSectorEnd(sector); + size_t sector_size = flashSectorSize(sector); + if (sector_size >= size) + break; + size -= sector_size; + } + + return FLASH_RETURN_SUCCESS; +} + +bool intFlashIsErased(flashaddr_t address, size_t size) { +#if CORTEX_MODEL == 7 + // If we have a cache, invalidate the relevant cache lines. + // They may still contain old data, leading us to believe that the + // flash erase failed. + SCB_InvalidateDCache_by_Addr((uint32_t*)address, size); +#endif + + /* Check for default set bits in the flash memory + * For efficiency, compare flashdata_t values as much as possible, + * then, fallback to byte per byte comparison. */ + while (size >= sizeof(flashdata_t)) { + if (*(volatile flashdata_t*) address != (flashdata_t) (-1)) // flashdata_t being unsigned, -1 is 0xFF..FF + return false; + address += sizeof(flashdata_t); + size -= sizeof(flashdata_t); + } + while (size > 0) { + if (*(char*) address != 0xFF) + return false; + ++address; + --size; + } + + return TRUE; +} + +bool intFlashCompare(flashaddr_t address, const char* buffer, size_t size) { + /* For efficiency, compare flashdata_t values as much as possible, + * then, fallback to byte per byte comparison. */ + while (size >= sizeof(flashdata_t)) { + if (*(volatile flashdata_t*) address != *(flashdata_t*) buffer) + return FALSE; + address += sizeof(flashdata_t); + buffer += sizeof(flashdata_t); + size -= sizeof(flashdata_t); + } + while (size > 0) { + if (*(volatile char*) address != *buffer) + return FALSE; + ++address; + ++buffer; + --size; + } + + return TRUE; +} + +int intFlashRead(flashaddr_t source, char* destination, size_t size) { +#if CORTEX_MODEL == 7 + // If we have a cache, invalidate the relevant cache lines. + // They may still contain old data, leading us to read invalid data. + SCB_InvalidateDCache_by_Addr((uint32_t*)source, size); +#endif + + memcpy(destination, (char*) source, size); + return FLASH_RETURN_SUCCESS; +} + +#endif // EFI_INTERNAL_FLASH diff --git a/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp b/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp index ec0d8f7cd7..e8c57bde46 100644 --- a/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp +++ b/firmware/hw_layer/ports/stm32/flash_int_f4_f7.cpp @@ -30,17 +30,6 @@ flashaddr_t intFlashSectorBegin(flashsector_t sector) { return address; } -flashaddr_t intFlashSectorEnd(flashsector_t sector) { - return intFlashSectorBegin(sector + 1); -} - -flashsector_t intFlashSectorAt(flashaddr_t address) { - flashsector_t sector = 0; - while (address >= intFlashSectorEnd(sector)) - ++sector; - return sector; -} - static void intFlashClearErrors(void) { FLASH_SR = 0x0000ffff; @@ -178,81 +167,6 @@ int intFlashSectorErase(flashsector_t sector) { return FLASH_RETURN_SUCCESS; } -int intFlashErase(flashaddr_t address, size_t size) { - while (size > 0) { - flashsector_t sector = intFlashSectorAt(address); - int err = intFlashSectorErase(sector); - if (err != FLASH_RETURN_SUCCESS) - return err; - address = intFlashSectorEnd(sector); - size_t sector_size = flashSectorSize(sector); - if (sector_size >= size) - break; - size -= sector_size; - } - - return FLASH_RETURN_SUCCESS; -} - -bool intFlashIsErased(flashaddr_t address, size_t size) { -#if CORTEX_MODEL == 7 - // If we have a cache, invalidate the relevant cache lines. - // They may still contain old data, leading us to believe that the - // flash erase failed. - SCB_InvalidateDCache_by_Addr((uint32_t*)address, size); -#endif - - /* Check for default set bits in the flash memory - * For efficiency, compare flashdata_t values as much as possible, - * then, fallback to byte per byte comparison. */ - while (size >= sizeof(flashdata_t)) { - if (*(volatile flashdata_t*) address != (flashdata_t) (-1)) // flashdata_t being unsigned, -1 is 0xFF..FF - return false; - address += sizeof(flashdata_t); - size -= sizeof(flashdata_t); - } - while (size > 0) { - if (*(char*) address != 0xFF) - return false; - ++address; - --size; - } - - return TRUE; -} - -bool intFlashCompare(flashaddr_t address, const char* buffer, size_t size) { - /* For efficiency, compare flashdata_t values as much as possible, - * then, fallback to byte per byte comparison. */ - while (size >= sizeof(flashdata_t)) { - if (*(volatile flashdata_t*) address != *(flashdata_t*) buffer) - return FALSE; - address += sizeof(flashdata_t); - buffer += sizeof(flashdata_t); - size -= sizeof(flashdata_t); - } - while (size > 0) { - if (*(volatile char*) address != *buffer) - return FALSE; - ++address; - ++buffer; - --size; - } - - return TRUE; -} - -int intFlashRead(flashaddr_t source, char* destination, size_t size) { -#if CORTEX_MODEL == 7 - // If we have a cache, invalidate the relevant cache lines. - // They may still contain old data, leading us to read invalid data. - SCB_InvalidateDCache_by_Addr((uint32_t*)source, size); -#endif - - memcpy(destination, (char*) source, size); - return FLASH_RETURN_SUCCESS; -} - static int intFlashWriteData(flashaddr_t address, const flashdata_t data) { /* Clearing error status bits.*/ intFlashClearErrors(); diff --git a/firmware/hw_layer/ports/stm32/flash_int_h7.cpp b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp index 63ba21ef97..6124eaef54 100644 --- a/firmware/hw_layer/ports/stm32/flash_int_h7.cpp +++ b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp @@ -23,9 +23,9 @@ // I have no idea why ST changed the register name from STRT -> START #define FLASH_CR_STRT FLASH_CR_START -// #undef FLASH_BASE +#undef FLASH_BASE // This is the start of the second bank, since H7 sector numbers are bank relative -// #define FLASH_BASE 0x08100000 +#define FLASH_BASE 0x08100000 // QW bit supercedes the older BSY bit #define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH_SR & FLASH_SR_QW); @@ -39,17 +39,6 @@ flashaddr_t intFlashSectorBegin(flashsector_t sector) { return address; } -flashaddr_t intFlashSectorEnd(flashsector_t sector) { - return intFlashSectorBegin(sector + 1); -} - -flashsector_t intFlashSectorAt(flashaddr_t address) { - flashsector_t sector = 0; - while (address >= intFlashSectorEnd(sector)) - ++sector; - return sector; -} - static void intFlashClearErrors(void) { FLASH->CCR2 = 0xffffffff; @@ -167,81 +156,6 @@ int intFlashSectorErase(flashsector_t sector) { return FLASH_RETURN_SUCCESS; } -int intFlashErase(flashaddr_t address, size_t size) { - while (size > 0) { - flashsector_t sector = intFlashSectorAt(address); - int err = intFlashSectorErase(sector); - if (err != FLASH_RETURN_SUCCESS) - return err; - address = intFlashSectorEnd(sector); - size_t sector_size = flashSectorSize(sector); - if (sector_size >= size) - break; - size -= sector_size; - } - - return FLASH_RETURN_SUCCESS; -} - -bool intFlashIsErased(flashaddr_t address, size_t size) { -#if CORTEX_MODEL == 7 - // If we have a cache, invalidate the relevant cache lines. - // They may still contain old data, leading us to believe that the - // flash erase failed. - SCB_InvalidateDCache_by_Addr((uint32_t*)address, size); -#endif - - /* Check for default set bits in the flash memory - * For efficiency, compare flashdata_t values as much as possible, - * then, fallback to byte per byte comparison. */ - while (size >= sizeof(flashdata_t)) { - if (*(volatile flashdata_t*) address != (flashdata_t) (-1)) // flashdata_t being unsigned, -1 is 0xFF..FF - return false; - address += sizeof(flashdata_t); - size -= sizeof(flashdata_t); - } - while (size > 0) { - if (*(char*) address != 0xFF) - return false; - ++address; - --size; - } - - return TRUE; -} - -bool intFlashCompare(flashaddr_t address, const char* buffer, size_t size) { - /* For efficiency, compare flashdata_t values as much as possible, - * then, fallback to byte per byte comparison. */ - while (size >= sizeof(flashdata_t)) { - if (*(volatile flashdata_t*) address != *(flashdata_t*) buffer) - return FALSE; - address += sizeof(flashdata_t); - buffer += sizeof(flashdata_t); - size -= sizeof(flashdata_t); - } - while (size > 0) { - if (*(volatile char*) address != *buffer) - return FALSE; - ++address; - ++buffer; - --size; - } - - return TRUE; -} - -int intFlashRead(flashaddr_t source, char* destination, size_t size) { -#if CORTEX_MODEL == 7 - // If we have a cache, invalidate the relevant cache lines. - // They may still contain old data, leading us to read invalid data. - SCB_InvalidateDCache_by_Addr((uint32_t*)source, size); -#endif - - memcpy(destination, (char*) source, size); - return FLASH_RETURN_SUCCESS; -} - int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) { /* Unlock flash for write access */ if (intFlashUnlock() == HAL_FAILED) diff --git a/firmware/hw_layer/ports/stm32/stm32_common.mk b/firmware/hw_layer/ports/stm32/stm32_common.mk index b81fcc4663..8e989e85ae 100644 --- a/firmware/hw_layer/ports/stm32/stm32_common.mk +++ b/firmware/hw_layer/ports/stm32/stm32_common.mk @@ -8,6 +8,7 @@ HW_LAYER_EMS_CPP += \ $(HW_STM32_PORT_DIR)/backup_ram.cpp \ $(HW_STM32_PORT_DIR)/microsecond_timer_stm32.cpp \ $(HW_STM32_PORT_DIR)/osc_detector.cpp \ + $(HW_STM32_PORT_DIR)/flash_int_common.cpp \ $(HW_STM32_PORT_DIR)/serial_over_usb/usbcfg.cpp RUSEFIASM = \ From ba78401609b69a3f0841fc546ed20933e63c1c0f Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:07:26 -0700 Subject: [PATCH 05/12] dynamic bootloader size --- firmware/bootloader/openblt_chibios/openblt_flash.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/firmware/bootloader/openblt_chibios/openblt_flash.cpp b/firmware/bootloader/openblt_chibios/openblt_flash.cpp index 934b35f95c..91bea717e6 100644 --- a/firmware/bootloader/openblt_chibios/openblt_flash.cpp +++ b/firmware/bootloader/openblt_chibios/openblt_flash.cpp @@ -13,8 +13,11 @@ blt_bool FlashVerifyChecksum() { return intFlashIsErased(FlashGetUserProgBaseAddress(), 4) ? BLT_FALSE : BLT_TRUE; } +// Bootloader size imported from the linker script +extern uint32_t bootloader_size; + blt_addr FlashGetUserProgBaseAddress() { - return 0x08008000; + return 0x08000000 + bootloader_size; } blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data) { From 488e4cb1529bcaa1732d734f021d56e81a4971eb Mon Sep 17 00:00:00 2001 From: GitHub gen-configs Action Date: Sun, 27 Aug 2023 23:09:12 +0000 Subject: [PATCH 06/12] Auto-generated configs and docs --- .../subaru_eg33/config/controllers/algo/rusefi_generated.h | 2 +- firmware/controllers/generated/rusefi_generated.h | 2 +- firmware/controllers/generated/signature_48way.h | 2 +- firmware/controllers/generated/signature_alphax-2chan.h | 2 +- firmware/controllers/generated/signature_alphax-4chan.h | 2 +- firmware/controllers/generated/signature_alphax-8chan.h | 2 +- firmware/controllers/generated/signature_atlas.h | 2 +- firmware/controllers/generated/signature_core8.h | 2 +- firmware/controllers/generated/signature_f407-discovery.h | 2 +- firmware/controllers/generated/signature_f429-discovery.h | 2 +- firmware/controllers/generated/signature_frankenso_na6.h | 2 +- firmware/controllers/generated/signature_harley81.h | 2 +- firmware/controllers/generated/signature_hellen-gm-e67.h | 2 +- firmware/controllers/generated/signature_hellen-honda-k.h | 2 +- firmware/controllers/generated/signature_hellen-nb1.h | 2 +- firmware/controllers/generated/signature_hellen121nissan.h | 2 +- firmware/controllers/generated/signature_hellen121vag.h | 2 +- firmware/controllers/generated/signature_hellen128.h | 2 +- firmware/controllers/generated/signature_hellen154hyundai.h | 2 +- firmware/controllers/generated/signature_hellen72.h | 2 +- firmware/controllers/generated/signature_hellen81.h | 2 +- firmware/controllers/generated/signature_hellen88bmw.h | 2 +- firmware/controllers/generated/signature_hellenNA6.h | 2 +- firmware/controllers/generated/signature_hellenNA8_96.h | 2 +- firmware/controllers/generated/signature_mre_f4.h | 2 +- firmware/controllers/generated/signature_mre_f7.h | 2 +- firmware/controllers/generated/signature_prometheus_405.h | 2 +- firmware/controllers/generated/signature_prometheus_469.h | 2 +- firmware/controllers/generated/signature_proteus_f4.h | 2 +- firmware/controllers/generated/signature_proteus_f7.h | 2 +- firmware/controllers/generated/signature_proteus_h7.h | 2 +- firmware/controllers/generated/signature_subaru_eg33_f7.h | 2 +- firmware/controllers/generated/signature_tdg-pdm8.h | 2 +- firmware/tunerstudio/generated/fome.ini | 4 ++-- firmware/tunerstudio/generated/fome_48way.ini | 4 ++-- firmware/tunerstudio/generated/fome_alphax-2chan.ini | 4 ++-- firmware/tunerstudio/generated/fome_alphax-4chan.ini | 4 ++-- firmware/tunerstudio/generated/fome_alphax-8chan.ini | 4 ++-- firmware/tunerstudio/generated/fome_atlas.ini | 4 ++-- firmware/tunerstudio/generated/fome_core8.ini | 4 ++-- firmware/tunerstudio/generated/fome_f407-discovery.ini | 4 ++-- firmware/tunerstudio/generated/fome_f429-discovery.ini | 4 ++-- firmware/tunerstudio/generated/fome_frankenso_na6.ini | 4 ++-- firmware/tunerstudio/generated/fome_harley81.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen-gm-e67.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen-honda-k.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen-nb1.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen121nissan.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen121vag.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen128mercedes.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen154hyundai.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen72.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen81.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellen88bmw.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellenNA6.ini | 4 ++-- firmware/tunerstudio/generated/fome_hellenNA8_96.ini | 4 ++-- firmware/tunerstudio/generated/fome_mre_f4.ini | 4 ++-- firmware/tunerstudio/generated/fome_mre_f7.ini | 4 ++-- firmware/tunerstudio/generated/fome_prometheus_405.ini | 4 ++-- firmware/tunerstudio/generated/fome_prometheus_469.ini | 4 ++-- firmware/tunerstudio/generated/fome_proteus_f4.ini | 4 ++-- firmware/tunerstudio/generated/fome_proteus_f7.ini | 4 ++-- firmware/tunerstudio/generated/fome_proteus_h7.ini | 4 ++-- firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini | 4 ++-- firmware/tunerstudio/generated/fome_tdg-pdm8.ini | 4 ++-- .../src/main/java/com/rusefi/config/generated/Fields.java | 2 +- 66 files changed, 98 insertions(+), 98 deletions(-) diff --git a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h index 7c0de08941..80077dca1c 100644 --- a/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/subaru_eg33/config/controllers/algo/rusefi_generated.h @@ -1244,7 +1244,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.subaru_eg33_f7.2133657576" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.subaru_eg33_f7.2133657576" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index b5558e8e95..171afd0e47 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1293,7 +1293,7 @@ #define ts_show_vbatt true #define ts_show_vr_threshold_2 true #define ts_show_vr_threshold_all true -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" #define TS_SINGLE_WRITE_COMMAND 'W' #define TS_SINGLE_WRITE_COMMAND_char W #define TS_TEST_COMMAND 't' diff --git a/firmware/controllers/generated/signature_48way.h b/firmware/controllers/generated/signature_48way.h index 8112cbc391..652fbfae05 100644 --- a/firmware/controllers/generated/signature_48way.h +++ b/firmware/controllers/generated/signature_48way.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3202128349 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.48way.3202128349" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.48way.3202128349" diff --git a/firmware/controllers/generated/signature_alphax-2chan.h b/firmware/controllers/generated/signature_alphax-2chan.h index c8dc84a71c..08a0b2be3b 100644 --- a/firmware/controllers/generated/signature_alphax-2chan.h +++ b/firmware/controllers/generated/signature_alphax-2chan.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3747157664 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.alphax-2chan.3747157664" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.alphax-2chan.3747157664" diff --git a/firmware/controllers/generated/signature_alphax-4chan.h b/firmware/controllers/generated/signature_alphax-4chan.h index 0f25893dcf..4ce19601ff 100644 --- a/firmware/controllers/generated/signature_alphax-4chan.h +++ b/firmware/controllers/generated/signature_alphax-4chan.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1435571393 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.alphax-4chan.1435571393" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.alphax-4chan.1435571393" diff --git a/firmware/controllers/generated/signature_alphax-8chan.h b/firmware/controllers/generated/signature_alphax-8chan.h index 96c6dabeb6..0d0eab1986 100644 --- a/firmware/controllers/generated/signature_alphax-8chan.h +++ b/firmware/controllers/generated/signature_alphax-8chan.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 757731896 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.alphax-8chan.757731896" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.alphax-8chan.757731896" diff --git a/firmware/controllers/generated/signature_atlas.h b/firmware/controllers/generated/signature_atlas.h index e26ea722e3..e67e94c325 100644 --- a/firmware/controllers/generated/signature_atlas.h +++ b/firmware/controllers/generated/signature_atlas.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3872187456 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.atlas.3872187456" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.atlas.3872187456" diff --git a/firmware/controllers/generated/signature_core8.h b/firmware/controllers/generated/signature_core8.h index 777e8240b3..3ba9c4fde4 100644 --- a/firmware/controllers/generated/signature_core8.h +++ b/firmware/controllers/generated/signature_core8.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3256949969 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.core8.3256949969" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.core8.3256949969" diff --git a/firmware/controllers/generated/signature_f407-discovery.h b/firmware/controllers/generated/signature_f407-discovery.h index 141fa6970a..f775e64cc9 100644 --- a/firmware/controllers/generated/signature_f407-discovery.h +++ b/firmware/controllers/generated/signature_f407-discovery.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2787437970 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" diff --git a/firmware/controllers/generated/signature_f429-discovery.h b/firmware/controllers/generated/signature_f429-discovery.h index 5a7d2434d8..d251cb7b43 100644 --- a/firmware/controllers/generated/signature_f429-discovery.h +++ b/firmware/controllers/generated/signature_f429-discovery.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 4194701671 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.f429-discovery.4194701671" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.f429-discovery.4194701671" diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index 705e3ede67..a3ba00660d 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3629445549 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.frankenso_na6.3629445549" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.frankenso_na6.3629445549" diff --git a/firmware/controllers/generated/signature_harley81.h b/firmware/controllers/generated/signature_harley81.h index 03f0927b90..5a2346bd78 100644 --- a/firmware/controllers/generated/signature_harley81.h +++ b/firmware/controllers/generated/signature_harley81.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1939024157 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.harley81.1939024157" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.harley81.1939024157" diff --git a/firmware/controllers/generated/signature_hellen-gm-e67.h b/firmware/controllers/generated/signature_hellen-gm-e67.h index 611d5c1f6d..4b937818ff 100644 --- a/firmware/controllers/generated/signature_hellen-gm-e67.h +++ b/firmware/controllers/generated/signature_hellen-gm-e67.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2473541556 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen-gm-e67.2473541556" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen-gm-e67.2473541556" diff --git a/firmware/controllers/generated/signature_hellen-honda-k.h b/firmware/controllers/generated/signature_hellen-honda-k.h index 3f3e94892c..857bccf5a3 100644 --- a/firmware/controllers/generated/signature_hellen-honda-k.h +++ b/firmware/controllers/generated/signature_hellen-honda-k.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 150925813 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen-honda-k.150925813" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen-honda-k.150925813" diff --git a/firmware/controllers/generated/signature_hellen-nb1.h b/firmware/controllers/generated/signature_hellen-nb1.h index 4d69856df6..9de4af3b03 100644 --- a/firmware/controllers/generated/signature_hellen-nb1.h +++ b/firmware/controllers/generated/signature_hellen-nb1.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 220266715 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen-nb1.220266715" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen-nb1.220266715" diff --git a/firmware/controllers/generated/signature_hellen121nissan.h b/firmware/controllers/generated/signature_hellen121nissan.h index 358814415e..fc73ccd4ea 100644 --- a/firmware/controllers/generated/signature_hellen121nissan.h +++ b/firmware/controllers/generated/signature_hellen121nissan.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2113580177 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen121nissan.2113580177" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen121nissan.2113580177" diff --git a/firmware/controllers/generated/signature_hellen121vag.h b/firmware/controllers/generated/signature_hellen121vag.h index 885018b44f..8e1a823e93 100644 --- a/firmware/controllers/generated/signature_hellen121vag.h +++ b/firmware/controllers/generated/signature_hellen121vag.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3522798402 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen121vag.3522798402" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen121vag.3522798402" diff --git a/firmware/controllers/generated/signature_hellen128.h b/firmware/controllers/generated/signature_hellen128.h index 5f111c2bd8..0790ff739d 100644 --- a/firmware/controllers/generated/signature_hellen128.h +++ b/firmware/controllers/generated/signature_hellen128.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2056548544 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen128.2056548544" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen128.2056548544" diff --git a/firmware/controllers/generated/signature_hellen154hyundai.h b/firmware/controllers/generated/signature_hellen154hyundai.h index 8777664c76..ffd23c4b4c 100644 --- a/firmware/controllers/generated/signature_hellen154hyundai.h +++ b/firmware/controllers/generated/signature_hellen154hyundai.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3999485985 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen154hyundai.3999485985" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen154hyundai.3999485985" diff --git a/firmware/controllers/generated/signature_hellen72.h b/firmware/controllers/generated/signature_hellen72.h index f9b2decc6a..bf13d80393 100644 --- a/firmware/controllers/generated/signature_hellen72.h +++ b/firmware/controllers/generated/signature_hellen72.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 196249808 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen72.196249808" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen72.196249808" diff --git a/firmware/controllers/generated/signature_hellen81.h b/firmware/controllers/generated/signature_hellen81.h index b606369243..d39b6676e5 100644 --- a/firmware/controllers/generated/signature_hellen81.h +++ b/firmware/controllers/generated/signature_hellen81.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2805527122 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen81.2805527122" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen81.2805527122" diff --git a/firmware/controllers/generated/signature_hellen88bmw.h b/firmware/controllers/generated/signature_hellen88bmw.h index 6e06ee9dea..0a6a5c432a 100644 --- a/firmware/controllers/generated/signature_hellen88bmw.h +++ b/firmware/controllers/generated/signature_hellen88bmw.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2701190497 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellen88bmw.2701190497" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellen88bmw.2701190497" diff --git a/firmware/controllers/generated/signature_hellenNA6.h b/firmware/controllers/generated/signature_hellenNA6.h index 720cec4b62..b101c64a78 100644 --- a/firmware/controllers/generated/signature_hellenNA6.h +++ b/firmware/controllers/generated/signature_hellenNA6.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3921039584 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellenNA6.3921039584" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellenNA6.3921039584" diff --git a/firmware/controllers/generated/signature_hellenNA8_96.h b/firmware/controllers/generated/signature_hellenNA8_96.h index 1aa90bebd8..77b366aa96 100644 --- a/firmware/controllers/generated/signature_hellenNA8_96.h +++ b/firmware/controllers/generated/signature_hellenNA8_96.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1427253072 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.hellenNA8_96.1427253072" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.hellenNA8_96.1427253072" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 66118026e7..426a78e455 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 495482079 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.mre_f4.495482079" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.mre_f4.495482079" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 5b8d1db5d6..16ab5de397 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 495482079 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.mre_f7.495482079" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.mre_f7.495482079" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index b5025c873d..b058462127 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3398622455 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.prometheus_405.3398622455" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.prometheus_405.3398622455" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index a60dbb28ea..efcb0d3499 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 3398622455 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.prometheus_469.3398622455" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.prometheus_469.3398622455" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index a79fd88f34..df0239ee0d 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1798886028 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.proteus_f4.1798886028" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.proteus_f4.1798886028" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 657f9388a3..51d71c289d 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1798886028 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.proteus_f7.1798886028" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.proteus_f7.1798886028" diff --git a/firmware/controllers/generated/signature_proteus_h7.h b/firmware/controllers/generated/signature_proteus_h7.h index 64ecd66c69..e57e4c5b61 100644 --- a/firmware/controllers/generated/signature_proteus_h7.h +++ b/firmware/controllers/generated/signature_proteus_h7.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1798886028 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.proteus_h7.1798886028" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.proteus_h7.1798886028" diff --git a/firmware/controllers/generated/signature_subaru_eg33_f7.h b/firmware/controllers/generated/signature_subaru_eg33_f7.h index bd08530e3e..fadc250c26 100644 --- a/firmware/controllers/generated/signature_subaru_eg33_f7.h +++ b/firmware/controllers/generated/signature_subaru_eg33_f7.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 2133657576 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.subaru_eg33_f7.2133657576" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.subaru_eg33_f7.2133657576" diff --git a/firmware/controllers/generated/signature_tdg-pdm8.h b/firmware/controllers/generated/signature_tdg-pdm8.h index c917dcc9e8..dca379ccfa 100644 --- a/firmware/controllers/generated/signature_tdg-pdm8.h +++ b/firmware/controllers/generated/signature_tdg-pdm8.h @@ -1,2 +1,2 @@ #define SIGNATURE_HASH 1890073925 -#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.27.tdg-pdm8.1890073925" +#define TS_SIGNATURE "rusEFI (FOME) master.2023.08.28.tdg-pdm8.1890073925" diff --git a/firmware/tunerstudio/generated/fome.ini b/firmware/tunerstudio/generated/fome.ini index 02ad3a0219..0286aebbc9 100644 --- a/firmware/tunerstudio/generated/fome.ini +++ b/firmware/tunerstudio/generated/fome.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" + signature = "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_48way.ini b/firmware/tunerstudio/generated/fome_48way.ini index 58ec655453..91b1ecaa61 100644 --- a/firmware/tunerstudio/generated/fome_48way.ini +++ b/firmware/tunerstudio/generated/fome_48way.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.48way.3202128349" + signature = "rusEFI (FOME) master.2023.08.28.48way.3202128349" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.48way.3202128349" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.48way.3202128349" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_alphax-2chan.ini b/firmware/tunerstudio/generated/fome_alphax-2chan.ini index f437360ca5..9e7beb97ad 100644 --- a/firmware/tunerstudio/generated/fome_alphax-2chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-2chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.alphax-2chan.3747157664" + signature = "rusEFI (FOME) master.2023.08.28.alphax-2chan.3747157664" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.alphax-2chan.3747157664" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.alphax-2chan.3747157664" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_alphax-4chan.ini b/firmware/tunerstudio/generated/fome_alphax-4chan.ini index d25e4b3239..23e85deaa5 100644 --- a/firmware/tunerstudio/generated/fome_alphax-4chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-4chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.alphax-4chan.1435571393" + signature = "rusEFI (FOME) master.2023.08.28.alphax-4chan.1435571393" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.alphax-4chan.1435571393" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.alphax-4chan.1435571393" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_alphax-8chan.ini b/firmware/tunerstudio/generated/fome_alphax-8chan.ini index 3bf5696368..41cd135a67 100644 --- a/firmware/tunerstudio/generated/fome_alphax-8chan.ini +++ b/firmware/tunerstudio/generated/fome_alphax-8chan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.alphax-8chan.757731896" + signature = "rusEFI (FOME) master.2023.08.28.alphax-8chan.757731896" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.alphax-8chan.757731896" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.alphax-8chan.757731896" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_atlas.ini b/firmware/tunerstudio/generated/fome_atlas.ini index 40a86037f9..4691c8fc6f 100644 --- a/firmware/tunerstudio/generated/fome_atlas.ini +++ b/firmware/tunerstudio/generated/fome_atlas.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.atlas.3872187456" + signature = "rusEFI (FOME) master.2023.08.28.atlas.3872187456" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.atlas.3872187456" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.atlas.3872187456" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_core8.ini b/firmware/tunerstudio/generated/fome_core8.ini index 4a9039330a..f9d7fd1d7d 100644 --- a/firmware/tunerstudio/generated/fome_core8.ini +++ b/firmware/tunerstudio/generated/fome_core8.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.core8.3256949969" + signature = "rusEFI (FOME) master.2023.08.28.core8.3256949969" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.core8.3256949969" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.core8.3256949969" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_f407-discovery.ini b/firmware/tunerstudio/generated/fome_f407-discovery.ini index 02ad3a0219..0286aebbc9 100644 --- a/firmware/tunerstudio/generated/fome_f407-discovery.ini +++ b/firmware/tunerstudio/generated/fome_f407-discovery.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" + signature = "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_f429-discovery.ini b/firmware/tunerstudio/generated/fome_f429-discovery.ini index e54aefb788..36e7b13e56 100644 --- a/firmware/tunerstudio/generated/fome_f429-discovery.ini +++ b/firmware/tunerstudio/generated/fome_f429-discovery.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.f429-discovery.4194701671" + signature = "rusEFI (FOME) master.2023.08.28.f429-discovery.4194701671" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.f429-discovery.4194701671" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.f429-discovery.4194701671" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_frankenso_na6.ini b/firmware/tunerstudio/generated/fome_frankenso_na6.ini index 7db7a03f64..8a604e0183 100644 --- a/firmware/tunerstudio/generated/fome_frankenso_na6.ini +++ b/firmware/tunerstudio/generated/fome_frankenso_na6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.frankenso_na6.3629445549" + signature = "rusEFI (FOME) master.2023.08.28.frankenso_na6.3629445549" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.frankenso_na6.3629445549" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.frankenso_na6.3629445549" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_harley81.ini b/firmware/tunerstudio/generated/fome_harley81.ini index d77ac330a1..c088c210d7 100644 --- a/firmware/tunerstudio/generated/fome_harley81.ini +++ b/firmware/tunerstudio/generated/fome_harley81.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.harley81.1939024157" + signature = "rusEFI (FOME) master.2023.08.28.harley81.1939024157" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.harley81.1939024157" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.harley81.1939024157" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini b/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini index 23072bd66e..78e0a915e0 100644 --- a/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini +++ b/firmware/tunerstudio/generated/fome_hellen-gm-e67.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen-gm-e67.2473541556" + signature = "rusEFI (FOME) master.2023.08.28.hellen-gm-e67.2473541556" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen-gm-e67.2473541556" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen-gm-e67.2473541556" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen-honda-k.ini b/firmware/tunerstudio/generated/fome_hellen-honda-k.ini index 4db15437a2..2fe898d5be 100644 --- a/firmware/tunerstudio/generated/fome_hellen-honda-k.ini +++ b/firmware/tunerstudio/generated/fome_hellen-honda-k.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen-honda-k.150925813" + signature = "rusEFI (FOME) master.2023.08.28.hellen-honda-k.150925813" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen-honda-k.150925813" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen-honda-k.150925813" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen-nb1.ini b/firmware/tunerstudio/generated/fome_hellen-nb1.ini index 5e17140ec5..a8a3e050b4 100644 --- a/firmware/tunerstudio/generated/fome_hellen-nb1.ini +++ b/firmware/tunerstudio/generated/fome_hellen-nb1.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen-nb1.220266715" + signature = "rusEFI (FOME) master.2023.08.28.hellen-nb1.220266715" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen-nb1.220266715" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen-nb1.220266715" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen121nissan.ini b/firmware/tunerstudio/generated/fome_hellen121nissan.ini index 0bef872806..4f840cfc6a 100644 --- a/firmware/tunerstudio/generated/fome_hellen121nissan.ini +++ b/firmware/tunerstudio/generated/fome_hellen121nissan.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen121nissan.2113580177" + signature = "rusEFI (FOME) master.2023.08.28.hellen121nissan.2113580177" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen121nissan.2113580177" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen121nissan.2113580177" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen121vag.ini b/firmware/tunerstudio/generated/fome_hellen121vag.ini index 8847e141b0..e16123fd6a 100644 --- a/firmware/tunerstudio/generated/fome_hellen121vag.ini +++ b/firmware/tunerstudio/generated/fome_hellen121vag.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen121vag.3522798402" + signature = "rusEFI (FOME) master.2023.08.28.hellen121vag.3522798402" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen121vag.3522798402" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen121vag.3522798402" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen128mercedes.ini b/firmware/tunerstudio/generated/fome_hellen128mercedes.ini index be21fabe51..41c55d8c2e 100644 --- a/firmware/tunerstudio/generated/fome_hellen128mercedes.ini +++ b/firmware/tunerstudio/generated/fome_hellen128mercedes.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen128.2056548544" + signature = "rusEFI (FOME) master.2023.08.28.hellen128.2056548544" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen128.2056548544" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen128.2056548544" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen154hyundai.ini b/firmware/tunerstudio/generated/fome_hellen154hyundai.ini index 3d7827b807..9217cc71b8 100644 --- a/firmware/tunerstudio/generated/fome_hellen154hyundai.ini +++ b/firmware/tunerstudio/generated/fome_hellen154hyundai.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen154hyundai.3999485985" + signature = "rusEFI (FOME) master.2023.08.28.hellen154hyundai.3999485985" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen154hyundai.3999485985" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen154hyundai.3999485985" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen72.ini b/firmware/tunerstudio/generated/fome_hellen72.ini index 3fec5f4d0c..8c9e8ae25d 100644 --- a/firmware/tunerstudio/generated/fome_hellen72.ini +++ b/firmware/tunerstudio/generated/fome_hellen72.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen72.196249808" + signature = "rusEFI (FOME) master.2023.08.28.hellen72.196249808" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen72.196249808" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen72.196249808" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen81.ini b/firmware/tunerstudio/generated/fome_hellen81.ini index 6b9e8de121..d8ac41b7c7 100644 --- a/firmware/tunerstudio/generated/fome_hellen81.ini +++ b/firmware/tunerstudio/generated/fome_hellen81.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen81.2805527122" + signature = "rusEFI (FOME) master.2023.08.28.hellen81.2805527122" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen81.2805527122" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen81.2805527122" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellen88bmw.ini b/firmware/tunerstudio/generated/fome_hellen88bmw.ini index 8bdd4aa7c5..6397ee1170 100644 --- a/firmware/tunerstudio/generated/fome_hellen88bmw.ini +++ b/firmware/tunerstudio/generated/fome_hellen88bmw.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellen88bmw.2701190497" + signature = "rusEFI (FOME) master.2023.08.28.hellen88bmw.2701190497" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellen88bmw.2701190497" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellen88bmw.2701190497" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellenNA6.ini b/firmware/tunerstudio/generated/fome_hellenNA6.ini index 5769efdf7e..55a7657a4f 100644 --- a/firmware/tunerstudio/generated/fome_hellenNA6.ini +++ b/firmware/tunerstudio/generated/fome_hellenNA6.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellenNA6.3921039584" + signature = "rusEFI (FOME) master.2023.08.28.hellenNA6.3921039584" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellenNA6.3921039584" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellenNA6.3921039584" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_hellenNA8_96.ini b/firmware/tunerstudio/generated/fome_hellenNA8_96.ini index d12a376185..bf5d307987 100644 --- a/firmware/tunerstudio/generated/fome_hellenNA8_96.ini +++ b/firmware/tunerstudio/generated/fome_hellenNA8_96.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.hellenNA8_96.1427253072" + signature = "rusEFI (FOME) master.2023.08.28.hellenNA8_96.1427253072" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.hellenNA8_96.1427253072" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.hellenNA8_96.1427253072" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_mre_f4.ini b/firmware/tunerstudio/generated/fome_mre_f4.ini index a6579cf454..6158b70dc2 100644 --- a/firmware/tunerstudio/generated/fome_mre_f4.ini +++ b/firmware/tunerstudio/generated/fome_mre_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.mre_f4.495482079" + signature = "rusEFI (FOME) master.2023.08.28.mre_f4.495482079" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.mre_f4.495482079" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.mre_f4.495482079" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_mre_f7.ini b/firmware/tunerstudio/generated/fome_mre_f7.ini index 95b860090d..8582752a43 100644 --- a/firmware/tunerstudio/generated/fome_mre_f7.ini +++ b/firmware/tunerstudio/generated/fome_mre_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.mre_f7.495482079" + signature = "rusEFI (FOME) master.2023.08.28.mre_f7.495482079" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.mre_f7.495482079" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.mre_f7.495482079" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_prometheus_405.ini b/firmware/tunerstudio/generated/fome_prometheus_405.ini index 4fe2859777..249968a0ef 100644 --- a/firmware/tunerstudio/generated/fome_prometheus_405.ini +++ b/firmware/tunerstudio/generated/fome_prometheus_405.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.prometheus_405.3398622455" + signature = "rusEFI (FOME) master.2023.08.28.prometheus_405.3398622455" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.prometheus_405.3398622455" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.prometheus_405.3398622455" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_prometheus_469.ini b/firmware/tunerstudio/generated/fome_prometheus_469.ini index 5b90c5a8fa..5c2ba96178 100644 --- a/firmware/tunerstudio/generated/fome_prometheus_469.ini +++ b/firmware/tunerstudio/generated/fome_prometheus_469.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.prometheus_469.3398622455" + signature = "rusEFI (FOME) master.2023.08.28.prometheus_469.3398622455" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.prometheus_469.3398622455" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.prometheus_469.3398622455" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_proteus_f4.ini b/firmware/tunerstudio/generated/fome_proteus_f4.ini index 9dd9ca27da..798b478233 100644 --- a/firmware/tunerstudio/generated/fome_proteus_f4.ini +++ b/firmware/tunerstudio/generated/fome_proteus_f4.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.proteus_f4.1798886028" + signature = "rusEFI (FOME) master.2023.08.28.proteus_f4.1798886028" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.proteus_f4.1798886028" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.proteus_f4.1798886028" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_proteus_f7.ini b/firmware/tunerstudio/generated/fome_proteus_f7.ini index 487eee9b78..6db6f16e81 100644 --- a/firmware/tunerstudio/generated/fome_proteus_f7.ini +++ b/firmware/tunerstudio/generated/fome_proteus_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.proteus_f7.1798886028" + signature = "rusEFI (FOME) master.2023.08.28.proteus_f7.1798886028" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.proteus_f7.1798886028" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.proteus_f7.1798886028" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_proteus_h7.ini b/firmware/tunerstudio/generated/fome_proteus_h7.ini index 1e25b82770..cab6e53e24 100644 --- a/firmware/tunerstudio/generated/fome_proteus_h7.ini +++ b/firmware/tunerstudio/generated/fome_proteus_h7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.proteus_h7.1798886028" + signature = "rusEFI (FOME) master.2023.08.28.proteus_h7.1798886028" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.proteus_h7.1798886028" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.proteus_h7.1798886028" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini b/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini index f86d013d7b..bcd702f10e 100644 --- a/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini +++ b/firmware/tunerstudio/generated/fome_subaru_eg33_f7.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.subaru_eg33_f7.2133657576" + signature = "rusEFI (FOME) master.2023.08.28.subaru_eg33_f7.2133657576" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.subaru_eg33_f7.2133657576" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.subaru_eg33_f7.2133657576" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/firmware/tunerstudio/generated/fome_tdg-pdm8.ini b/firmware/tunerstudio/generated/fome_tdg-pdm8.ini index ae2e1b21e6..5be150ef62 100644 --- a/firmware/tunerstudio/generated/fome_tdg-pdm8.ini +++ b/firmware/tunerstudio/generated/fome_tdg-pdm8.ini @@ -33,12 +33,12 @@ enable2ndByteCanID = false [MegaTune] ; https://rusefi.com/forum/viewtopic.php?p=36201#p36201 - signature = "rusEFI (FOME) master.2023.08.27.tdg-pdm8.1890073925" + signature = "rusEFI (FOME) master.2023.08.28.tdg-pdm8.1890073925" [TunerStudio] queryCommand = "S" versionInfo = "V" ; firmware version for title bar. - signature= "rusEFI (FOME) master.2023.08.27.tdg-pdm8.1890073925" ; signature is expected to be 7 or more characters. + signature= "rusEFI (FOME) master.2023.08.28.tdg-pdm8.1890073925" ; signature is expected to be 7 or more characters. ; TS will try to use legacy temp units in some cases, showing "deg F" on a CLT gauge that's actually deg C useLegacyFTempUnits = false diff --git a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java index 95bb6912bf..9b076f587b 100644 --- a/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/main/java/com/rusefi/config/generated/Fields.java @@ -1178,7 +1178,7 @@ public class Fields { public static final int TS_RESPONSE_UNDERRUN = 0x80; public static final int TS_RESPONSE_UNRECOGNIZED_COMMAND = 0x83; public static final char TS_SET_LOGGER_SWITCH = 'l'; - public static final String TS_SIGNATURE = "rusEFI (FOME) master.2023.08.27.f407-discovery.2787437970"; + public static final String TS_SIGNATURE = "rusEFI (FOME) master.2023.08.28.f407-discovery.2787437970"; public static final char TS_SINGLE_WRITE_COMMAND = 'W'; public static final char TS_TEST_COMMAND = 't'; public static final int TS_TOTAL_OUTPUT_SIZE = 1380; From f98cc33ae51af655c1ea5a36ae2b2d071b209221 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:25:20 -0700 Subject: [PATCH 07/12] oops that doesn't work --- firmware/bootloader/openblt_chibios/openblt_flash.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/firmware/bootloader/openblt_chibios/openblt_flash.cpp b/firmware/bootloader/openblt_chibios/openblt_flash.cpp index 91bea717e6..d74a39fbdd 100644 --- a/firmware/bootloader/openblt_chibios/openblt_flash.cpp +++ b/firmware/bootloader/openblt_chibios/openblt_flash.cpp @@ -13,11 +13,12 @@ blt_bool FlashVerifyChecksum() { return intFlashIsErased(FlashGetUserProgBaseAddress(), 4) ? BLT_FALSE : BLT_TRUE; } -// Bootloader size imported from the linker script -extern uint32_t bootloader_size; - blt_addr FlashGetUserProgBaseAddress() { - return 0x08000000 + bootloader_size; +#if STM32H7 + return 0x08020000; +#endif + return 0x08008000; +#endif } blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data) { From 2fb778145cbc1d7b1e6d7951b8b59e9ee447d3d3 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:32:46 -0700 Subject: [PATCH 08/12] forgot the h7 shared section --- .../hw_layer/ports/stm32/stm32h7/STM32H743xI.ld | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld index af8e05b79a..9f176db4de 100755 --- a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld +++ b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld @@ -139,6 +139,20 @@ SECTIONS . = ALIGN(4); __eth_end__ = .; } > ETH_RAM + + /* shared between main FW and OpenBLT */ + .shared (NOLOAD) : + { + . = ALIGN(4); + _sshared = .; + __shared_start__ = _sshared; + *(.shared) + *(.shared.*) + KEEP(*(.shared)) + . = ALIGN(4); + _eshared = .; + __shared_end__ = _eshared; + } > shared } /* Code rules inclusion.*/ From e859f65ef8b4d01fa03efa890c195a844451aabc Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:35:09 -0700 Subject: [PATCH 09/12] cherry pick hardfault volatile --- firmware/hw_layer/main_hardfault.c | 40 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/firmware/hw_layer/main_hardfault.c b/firmware/hw_layer/main_hardfault.c index 5afdb17646..3143564c0e 100644 --- a/firmware/hw_layer/main_hardfault.c +++ b/firmware/hw_layer/main_hardfault.c @@ -39,18 +39,18 @@ void HardFault_Handler_C(void* sp) { memcpy(&ctx, sp, sizeof(struct port_extctx)); //Interrupt status register: Which interrupt have we encountered, e.g. HardFault? - FaultType faultType = (FaultType)__get_IPSR(); + volatile FaultType faultType = (FaultType)__get_IPSR(); (void)faultType; //For HardFault/BusFault this is the address that was accessed causing the error - uint32_t faultAddress = SCB->BFAR; + volatile uint32_t faultAddress = SCB->BFAR; //Flags about hardfault / busfault //See http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/Cihdjcfc.html for reference - bool isFaultPrecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 1) ? true : false); - bool isFaultImprecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 2) ? true : false); - bool isFaultOnUnstacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 3) ? true : false); - bool isFaultOnStacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 4) ? true : false); - bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 7) ? true : false); + volatile bool isFaultPrecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 1) ? true : false); + volatile bool isFaultImprecise = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 2) ? true : false); + volatile bool isFaultOnUnstacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 3) ? true : false); + volatile bool isFaultOnStacking = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 4) ? true : false); + volatile bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_BUSFAULTSR_Pos) & (1 << 7) ? true : false); (void)isFaultPrecise; (void)isFaultImprecise; (void)isFaultOnUnstacking; @@ -71,16 +71,16 @@ void UsageFault_Handler_C(void* sp) { memcpy(&ctx, sp, sizeof(struct port_extctx)); //Interrupt status register: Which interrupt have we encountered, e.g. HardFault? - FaultType faultType = (FaultType)__get_IPSR(); + volatile FaultType faultType = (FaultType)__get_IPSR(); (void)faultType; //Flags about hardfault / busfault //See http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/Cihdjcfc.html for reference - bool isUndefinedInstructionFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 0) ? true : false); - bool isEPSRUsageFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 1) ? true : false); - bool isInvalidPCFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 2) ? true : false); - bool isNoCoprocessorFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 3) ? true : false); - bool isUnalignedAccessFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 8) ? true : false); - bool isDivideByZeroFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 9) ? true : false); + volatile bool isUndefinedInstructionFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 0) ? true : false); + volatile bool isEPSRUsageFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 1) ? true : false); + volatile bool isInvalidPCFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 2) ? true : false); + volatile bool isNoCoprocessorFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 3) ? true : false); + volatile bool isUnalignedAccessFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 8) ? true : false); + volatile bool isDivideByZeroFault = ((SCB->CFSR >> SCB_CFSR_USGFAULTSR_Pos) & (1 << 9) ? true : false); (void)isUndefinedInstructionFault; (void)isEPSRUsageFault; (void)isInvalidPCFault; @@ -104,15 +104,15 @@ void MemManage_Handler_C(void* sp) { FaultType faultType = (FaultType)__get_IPSR(); (void)faultType; //For HardFault/BusFault this is the address that was accessed causing the error - uint32_t faultAddress = SCB->MMFAR; + volatile uint32_t faultAddress = SCB->MMFAR; //Flags about hardfault / busfault //See http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/Cihdjcfc.html for reference - bool isInstructionAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 0) ? true : false); - bool isDataAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 1) ? true : false); - bool isExceptionUnstackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 3) ? true : false); - bool isExceptionStackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 4) ? true : false); - bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 7) ? true : false); + volatile bool isInstructionAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 0) ? true : false); + volatile bool isDataAccessViolation = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 1) ? true : false); + volatile bool isExceptionUnstackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 3) ? true : false); + volatile bool isExceptionStackingFault = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 4) ? true : false); + volatile bool isFaultAddressValid = ((SCB->CFSR >> SCB_CFSR_MEMFAULTSR_Pos) & (1 << 7) ? true : false); (void)isInstructionAccessViolation; (void)isDataAccessViolation; (void)isExceptionUnstackingFault; From cef93b1c48d11392aeec3c566e2d2247f8b006f6 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:44:01 -0700 Subject: [PATCH 10/12] s --- firmware/bootloader/openblt_chibios/openblt_flash.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/bootloader/openblt_chibios/openblt_flash.cpp b/firmware/bootloader/openblt_chibios/openblt_flash.cpp index d74a39fbdd..8b99f20238 100644 --- a/firmware/bootloader/openblt_chibios/openblt_flash.cpp +++ b/firmware/bootloader/openblt_chibios/openblt_flash.cpp @@ -14,9 +14,9 @@ blt_bool FlashVerifyChecksum() { } blt_addr FlashGetUserProgBaseAddress() { -#if STM32H7 +#ifdef STM32H7XX return 0x08020000; -#endif +#else // not STM32H7 return 0x08008000; #endif } From ee89ab88d62903a191881eb8b0b5670795f87000 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 16:44:50 -0700 Subject: [PATCH 11/12] H7 flash supports both banks! --- .../hw_layer/ports/stm32/flash_int_h7.cpp | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/firmware/hw_layer/ports/stm32/flash_int_h7.cpp b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp index 6124eaef54..71c28c7b76 100644 --- a/firmware/hw_layer/ports/stm32/flash_int_h7.cpp +++ b/firmware/hw_layer/ports/stm32/flash_int_h7.cpp @@ -15,18 +15,13 @@ #include // Use bank 2 on H7 -// TODO: Support bank 1 as well for the bootloader to work properly! -#define FLASH_CR FLASH->CR2 -#define FLASH_SR FLASH->SR2 -#define FLASH_KEYR FLASH->KEYR2 +#define FLASH_CR ((ctlr) ? FLASH->CR2 : FLASH->CR1) +#define FLASH_SR ((ctlr) ? FLASH->SR2 : FLASH->SR1) +#define FLASH_KEYR ((ctlr) ? FLASH->KEYR2 : FLASH->KEYR1) // I have no idea why ST changed the register name from STRT -> START #define FLASH_CR_STRT FLASH_CR_START -#undef FLASH_BASE -// This is the start of the second bank, since H7 sector numbers are bank relative -#define FLASH_BASE 0x08100000 - // QW bit supercedes the older BSY bit #define intFlashWaitWhileBusy() do { __DSB(); } while (FLASH_SR & FLASH_SR_QW); @@ -39,12 +34,12 @@ flashaddr_t intFlashSectorBegin(flashsector_t sector) { return address; } -static void intFlashClearErrors(void) +static void intFlashClearErrors(uint8_t ctlr) { - FLASH->CCR2 = 0xffffffff; + ctlr ? FLASH->CCR2 : FLASH->CCR1 = 0xffffffff; } -static int intFlashCheckErrors(void) +static int intFlashCheckErrors(uint8_t ctlr) { uint32_t sr = FLASH_SR; @@ -79,7 +74,7 @@ static int intFlashCheckErrors(void) * @return HAL_SUCCESS Unlock was successful. * @return HAL_FAILED Unlock failed. */ -static bool intFlashUnlock(void) { +static bool intFlashUnlock(size_t ctlr) { /* Check if unlock is really needed */ if (!(FLASH_CR & FLASH_CR_LOCK)) return HAL_SUCCESS; @@ -101,17 +96,28 @@ static bool intFlashUnlock(void) { int intFlashSectorErase(flashsector_t sector) { int ret; - uint8_t sectorRegIdx = sector; + uint8_t sectorRegIdx; + + uint8_t ctlr; + + if (sector >= 8) { + // Use second bank's controller: convert to sector within the bank + ctlr = 1; + sectorRegIdx = sector - 8; + } else { + ctlr = 0; + sectorRegIdx = sector; + } /* Unlock flash for write access */ - if (intFlashUnlock() == HAL_FAILED) + if (intFlashUnlock(ctlr) == HAL_FAILED) return FLASH_RETURN_NO_PERMISSION; /* Wait for any busy flags. */ intFlashWaitWhileBusy(); /* Clearing error status bits.*/ - intFlashClearErrors(); + intFlashClearErrors(ctlr); /* Setup parallelism before any program/erase */ FLASH_CR &= ~FLASH_CR_PSIZE_MASK; @@ -141,10 +147,9 @@ int intFlashSectorErase(flashsector_t sector) { FLASH_CR &= ~FLASH_CR_SER; /* Lock flash again */ - intFlashLock() - ; + intFlashLock(); - ret = intFlashCheckErrors(); + ret = intFlashCheckErrors(ctlr); if (ret != FLASH_RETURN_SUCCESS) return ret; @@ -157,8 +162,12 @@ int intFlashSectorErase(flashsector_t sector) { } int intFlashWrite(flashaddr_t address, const char* buffer, size_t size) { + // Select the appropriate controller for this address + flashsector_t sector = intFlashSectorAt(address); + uint8_t ctlr = sector >= 8; + /* Unlock flash for write access */ - if (intFlashUnlock() == HAL_FAILED) + if (intFlashUnlock(ctlr) == HAL_FAILED) return FLASH_RETURN_NO_PERMISSION; /* Wait for any busy flags */ From d4bbd552ad449824a13c001b9173b2a9566db061 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 27 Aug 2023 17:03:12 -0700 Subject: [PATCH 12/12] bootloader debug configs --- .vscode/launch.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.vscode/launch.json b/.vscode/launch.json index 2d6f2d5a13..e130cd519a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -76,6 +76,19 @@ "configFiles": ["interface/stlink.cfg", "target/stm32f4x.cfg"], "rtos": "auto" }, + { + "name": "Debug Bootloader F42x", + "type": "cortex-debug", + "request": "launch", + "cwd": "${workspaceFolder}/firmware", + "executable": "${workspaceRoot}/firmware/bootloader/blbuild/fome_bl.elf", + "device": "STM32F429Z", + "v1": false, + "svdFile": "${workspaceRoot}/firmware/ext/cmsis-svd/STM32F427.svd", + "servertype": "openocd", + "configFiles": ["interface/stlink.cfg", "target/stm32f4x.cfg"], + "rtos": "auto" + }, { "name": "Debug F7x6", "type": "cortex-debug", @@ -101,6 +114,19 @@ "servertype": "openocd", "configFiles": ["interface/stlink.cfg", "target/stm32h7x.cfg"], "rtos": "auto" + }, + { + "name": "Debug Bootloader H743", + "type": "cortex-debug", + "request": "launch", + "cwd": "${workspaceFolder}/firmware", + "executable": "${workspaceRoot}/firmware/bootloader/blbuild/fome_bl.elf", + "device": "STM32H743V", + "v1": false, + "svdFile": "${workspaceRoot}/firmware/ext/cmsis-svd/STM32H743x.svd", + "servertype": "openocd", + "configFiles": ["interface/stlink.cfg", "target/stm32h7x.cfg"], + "rtos": "auto" } ] } \ No newline at end of file