mirror of https://github.com/FOME-Tech/fome-fw.git
Merge remote-tracking branch 'origin/master' into openblt-can
This commit is contained in:
commit
2e114d1e17
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -14,7 +14,11 @@ blt_bool FlashVerifyChecksum() {
|
|||
}
|
||||
|
||||
blt_addr FlashGetUserProgBaseAddress() {
|
||||
#ifdef STM32H7XX
|
||||
return 0x08020000;
|
||||
#else // not STM32H7
|
||||
return 0x08008000;
|
||||
#endif
|
||||
}
|
||||
|
||||
blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data) {
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
|
@ -14,29 +14,12 @@
|
|||
#include "flash_int.h"
|
||||
#include <string.h>
|
||||
|
||||
#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;
|
||||
|
@ -47,24 +30,9 @@ 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)
|
||||
{
|
||||
#ifdef STM32H7XX
|
||||
FLASH->CCR2 = 0xffffffff;
|
||||
#else
|
||||
FLASH_SR = 0x0000ffff;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int intFlashCheckErrors(void)
|
||||
|
@ -199,136 +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;
|
||||
}
|
||||
|
||||
#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 +270,5 @@ exit:
|
|||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* EFI_INTERNAL_FLASH */
|
|
@ -0,0 +1,221 @@
|
|||
/**
|
||||
*
|
||||
* 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 <string.h>
|
||||
|
||||
// Use bank 2 on H7
|
||||
#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
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
static void intFlashClearErrors(uint8_t ctlr)
|
||||
{
|
||||
ctlr ? FLASH->CCR2 : FLASH->CCR1 = 0xffffffff;
|
||||
}
|
||||
|
||||
static int intFlashCheckErrors(uint8_t ctlr)
|
||||
{
|
||||
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(size_t ctlr) {
|
||||
/* 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;
|
||||
|
||||
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(ctlr) == HAL_FAILED)
|
||||
return FLASH_RETURN_NO_PERMISSION;
|
||||
|
||||
/* Wait for any busy flags. */
|
||||
intFlashWaitWhileBusy();
|
||||
|
||||
/* Clearing error status bits.*/
|
||||
intFlashClearErrors(ctlr);
|
||||
|
||||
/* 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(ctlr);
|
||||
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 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(ctlr) == 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 */
|
|
@ -8,7 +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.cpp \
|
||||
$(HW_STM32_PORT_DIR)/flash_int_common.cpp \
|
||||
$(HW_STM32_PORT_DIR)/serial_over_usb/usbcfg.cpp
|
||||
|
||||
RUSEFIASM = \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
@ -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.*/
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue