From 44ae84aff625876feea2644804eb3e703315e9ff Mon Sep 17 00:00:00 2001 From: gnarf Date: Mon, 3 Mar 2025 13:32:21 +0100 Subject: [PATCH 1/2] wip: add BKER definition for G4 --- inc/stm32_flash.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inc/stm32_flash.h b/inc/stm32_flash.h index 3e4c8cb..69ad679 100644 --- a/inc/stm32_flash.h +++ b/inc/stm32_flash.h @@ -181,7 +181,8 @@ #define STM32_FLASH_Gx_CR_PNB (3) /* Page number */ #define STM32_FLASH_G0_CR_PNG_LEN (5) /* STM32G0: 5 page number bits */ #define STM32_FLASH_G4_CR_PNG_LEN (7) /* STM32G4: 7 page number bits */ -#define STM32_FLASH_Gx_CR_BKER (13) /* Bank selection for erase operation */ +#define STM32_FLASH_G0_CR_BKER (13) /* Bank selection for erase operation on G0*/ +#define STM32_FLASH_G4_CR_BKER (11) /* Bank selection for erase operation on G4*/ #define STM32_FLASH_Gx_CR_MER2 (15) /* Mass erase (2nd bank)*/ #define STM32_FLASH_Gx_CR_STRT (16) /* Start */ #define STM32_FLASH_Gx_CR_OPTSTRT (17) /* Start of modification of option bytes */ From 3d9378fa54f45c6c2953c54176e6280f92be031c Mon Sep 17 00:00:00 2001 From: gnarf Date: Mon, 3 Mar 2025 13:34:36 +0100 Subject: [PATCH 2/2] wip: set correct BKER bit when erasing bank 2 on G4 --- src/stlink-lib/common_flash.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/stlink-lib/common_flash.c b/src/stlink-lib/common_flash.c index b3539ce..d7dd37e 100644 --- a/src/stlink-lib/common_flash.c +++ b/src/stlink-lib/common_flash.c @@ -1130,9 +1130,9 @@ int32_t stlink_erase_flash_page(stlink_t *sl, stm32_addr_t flashaddr) { // In this case we need to specify which bank to erase (sec 3.7.5 - BKER) if(sl->flash_size > (128 * 1024) && ((flashaddr - STM32_FLASH_BASE) >= sl->flash_size / 2)) { - val |= (1 << STM32_FLASH_Gx_CR_BKER); // erase bank 2 + val |= (1 << STM32_FLASH_G4_CR_BKER); // erase bank 2 } else { - val &= ~(1 << STM32_FLASH_Gx_CR_BKER); // erase bank 1 + val &= ~(1 << STM32_FLASH_G4_CR_BKER); // erase bank 1 } val |= ((flash_page & 0x7FF) << 3) | (1 << FLASH_CR_PER); stlink_write_debug32(sl, STM32_FLASH_Gx_CR, val);