parent
44d7c3605c
commit
1447647411
|
@ -135,8 +135,7 @@ uintptr_t getFlashAddrSecondCopy() {
|
||||||
|
|
||||||
static void flash_wait_complete(void)
|
static void flash_wait_complete(void)
|
||||||
{
|
{
|
||||||
while ((FLASH_SR & FLASH_SR_BSY) == FLASH_SR_BSY)
|
do { __DSB(); } while (FLASH->SR & FLASH_SR_BSY);
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stm32f7_flash_mass_erase_dual_block(void)
|
static void stm32f7_flash_mass_erase_dual_block(void)
|
||||||
|
@ -151,10 +150,12 @@ static void stm32f7_flash_mass_erase_dual_block(void)
|
||||||
// https://github.com/rusefi/rusefi/issues/2996
|
// https://github.com/rusefi/rusefi/issues/2996
|
||||||
void sys_dual_bank(void) {
|
void sys_dual_bank(void) {
|
||||||
uint32_t reg;
|
uint32_t reg;
|
||||||
|
efiPrintf("FLASH->SR before %x", FLASH->SR);
|
||||||
|
|
||||||
/* Unlock OPTCR */
|
/* Unlock OPTCR */
|
||||||
FLASH_OPTKEYR = FLASH_OPTKEY1;
|
FLASH_OPTKEYR = FLASH_OPTKEY1;
|
||||||
FLASH_OPTKEYR = FLASH_OPTKEY2;
|
FLASH_OPTKEYR = FLASH_OPTKEY2;
|
||||||
|
flash_wait_complete();
|
||||||
|
|
||||||
/* Disable protection + Switch to dual bank */
|
/* Disable protection + Switch to dual bank */
|
||||||
reg = FLASH_OPTCR;
|
reg = FLASH_OPTCR;
|
||||||
|
@ -162,7 +163,10 @@ void sys_dual_bank(void) {
|
||||||
reg |= 0x0000AA00;
|
reg |= 0x0000AA00;
|
||||||
reg &= ~(FLASH_OPTCR_nDBANK);
|
reg &= ~(FLASH_OPTCR_nDBANK);
|
||||||
FLASH_OPTCR = reg;
|
FLASH_OPTCR = reg;
|
||||||
|
__DSB();
|
||||||
FLASH_OPTCR |= FLASH_OPTCR_STRT;
|
FLASH_OPTCR |= FLASH_OPTCR_STRT;
|
||||||
|
flash_wait_complete();
|
||||||
|
efiPrintf("FLASH->SR after %x", FLASH->SR);
|
||||||
/*
|
/*
|
||||||
* see https://github.com/danielinux/stm32f7-dualbank-tool/issues/1
|
* see https://github.com/danielinux/stm32f7-dualbank-tool/issues/1
|
||||||
stm32f7_flash_mass_erase_dual_block();
|
stm32f7_flash_mass_erase_dual_block();
|
||||||
|
|
|
@ -247,6 +247,11 @@ void runRusEfi(void) {
|
||||||
startLoggingProcessor();
|
startLoggingProcessor();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef STM32F7
|
||||||
|
void sys_dual_bank(void);
|
||||||
|
addConsoleAction("dual_bank", sys_dual_bank);
|
||||||
|
#endif
|
||||||
|
|
||||||
addConsoleAction(CMD_REBOOT, scheduleReboot);
|
addConsoleAction(CMD_REBOOT, scheduleReboot);
|
||||||
addConsoleAction(CMD_REBOOT_DFU, jump_to_bootloader);
|
addConsoleAction(CMD_REBOOT_DFU, jump_to_bootloader);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue