diff --git a/os/hal/ports/STM32/STM32G0xx/hal_efl_lld.c b/os/hal/ports/STM32/STM32G0xx/hal_efl_lld.c index 0d78eed3e..20af8885e 100644 --- a/os/hal/ports/STM32/STM32G0xx/hal_efl_lld.c +++ b/os/hal/ports/STM32/STM32G0xx/hal_efl_lld.c @@ -143,7 +143,7 @@ static inline size_t stm32_flash_get_size(void) { static inline bool stm32_flash_dual_bank(EFlashDriver *eflp) { #if STM32_FLASH_NUMBER_OF_BANKS > 1 - return ((eflp->flash->SR & (FLASH_OPTR_DBANK | FLASH_OPTR_DB1M)) != 0U); +#error "Device settings incorrectly configured - single bank mode only supported" #endif (void)eflp; return false; @@ -588,7 +588,8 @@ flash_error_t efl_lld_verify_erase(void *instance, flash_sector_t sector) { devp->state = FLASH_READ; /* Scanning the sector space.*/ - for (i = 0U; i < bank->sectors_size / sizeof(uint32_t); i++) { + uint32_t sector_size = flashGetSectorSize(getBaseFlash(devp), sector); + for (i = 0U; i < sector_size / sizeof(uint32_t); i++) { if (*address != 0xFFFFFFFFU) { err = FLASH_ERROR_VERIFY; break; diff --git a/os/hal/ports/STM32/STM32L4xx+/hal_efl_lld.c b/os/hal/ports/STM32/STM32L4xx+/hal_efl_lld.c index 5b7c87b34..cccef0438 100644 --- a/os/hal/ports/STM32/STM32L4xx+/hal_efl_lld.c +++ b/os/hal/ports/STM32/STM32L4xx+/hal_efl_lld.c @@ -167,7 +167,7 @@ static inline size_t stm32_flash_get_size(void) { static inline bool stm32_flash_dual_bank(EFlashDriver *eflp) { #if STM32_FLASH_NUMBER_OF_BANKS > 1 - return ((eflp->flash->SR & (FLASH_OPTR_DBANK | FLASH_OPTR_DB1M)) != 0U); + return ((eflp->flash->OPTR & (FLASH_OPTR_DBANK | FLASH_OPTR_DB1M)) != 0U); #endif return false; } @@ -603,7 +603,7 @@ flash_error_t efl_lld_verify_erase(void *instance, flash_sector_t sector) { return FLASH_BUSY_ERASING; } - /* Address of the sector in the selected bank.*/ + /* Address of the sector in the bank.*/ address = (uint32_t *)(bank->address + flashGetSectorOffset(getBaseFlash(devp), sector)); @@ -611,7 +611,8 @@ flash_error_t efl_lld_verify_erase(void *instance, flash_sector_t sector) { devp->state = FLASH_READ; /* Scanning the sector space.*/ - for (i = 0U; i < bank->sectors_size / sizeof(uint32_t); i++) { + uint32_t sector_size = flashGetSectorSize(getBaseFlash(devp), sector); + for (i = 0U; i < sector_size / sizeof(uint32_t); i++) { if (*address != 0xFFFFFFFFU) { err = FLASH_ERROR_VERIFY; break;