arch/arm/src/stm32l4/stm32l4_flash.c: Fix flash_erase(page) when page >= 256 (#170)

All STM32L4 MPUs have FLASH_CR_PNB bits (8 bits), and some MPUs have FLASH_CR_BKER bit to change bank if page >= 256.
The code wasn't setting or clearing FLASH_CR_BKER correctly.
This commit is contained in:
taikoyaP 2020-01-27 14:56:17 +00:00 committed by Ouss4
parent 83354983c3
commit 4813b9d751

View File

@ -176,7 +176,21 @@ static inline void flash_erase(size_t page)
finfo("erase page %u\n", page);
modifyreg32(STM32L4_FLASH_CR, 0, FLASH_CR_PAGE_ERASE);
modifyreg32(STM32L4_FLASH_CR, FLASH_CR_PNB_MASK, FLASH_CR_PNB(page));
modifyreg32(STM32L4_FLASH_CR, FLASH_CR_PNB_MASK, FLASH_CR_PNB(page & 0xff));
#if defined(CONFIG_STM32L4_STM32L4X5) || \
defined(CONFIG_STM32L4_STM32L4X6) || \
defined(CONFIG_STM32L4_STM32L4XR)
if (page <= 0xff)
{
modifyreg32(STM32L4_FLASH_CR, FLASH_CR_BKER, 0);
}
else
{
modifyreg32(STM32L4_FLASH_CR, 0, FLASH_CR_BKER);
}
#endif
modifyreg32(STM32L4_FLASH_CR, 0, FLASH_CR_START);
while (getreg32(STM32L4_FLASH_SR) & FLASH_SR_BSY)