Merge pull request #11715 from fjmolinas/pr_stm32_flashpage_cleanup

stm32_common/flashpage: cleanup
This commit is contained in:
Alexandre Abadie 2019-06-20 10:03:18 +02:00 committed by GitHub
commit a671c6c247
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -38,7 +38,6 @@
#define CNTRL_REG (FLASH->PECR) #define CNTRL_REG (FLASH->PECR)
#define CNTRL_REG_LOCK (FLASH_PECR_PELOCK) #define CNTRL_REG_LOCK (FLASH_PECR_PELOCK)
#define FLASH_CR_PER (FLASH_PECR_ERASE | FLASH_PECR_PROG) #define FLASH_CR_PER (FLASH_PECR_ERASE | FLASH_PECR_PROG)
#define FLASH_CR_PG (FLASH_PECR_FPRG | FLASH_PECR_PROG)
#define FLASHPAGE_DIV (4U) /* write 4 bytes in one go */ #define FLASHPAGE_DIV (4U) /* write 4 bytes in one go */
#else #else
#if defined(CPU_FAM_STM32L4) #if defined(CPU_FAM_STM32L4)
@ -77,7 +76,8 @@ static void _erase_page(void *page_addr)
uint32_t *dst = page_addr; uint32_t *dst = page_addr;
#else #else
uint16_t *dst = page_addr; uint16_t *dst = page_addr;
#endif
#if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1)
uint32_t hsi_state = (RCC->CR & RCC_CR_HSION); uint32_t hsi_state = (RCC->CR & RCC_CR_HSION);
/* the internal RC oscillator (HSI) must be enabled */ /* the internal RC oscillator (HSI) must be enabled */
stmclk_enable_hsi(); stmclk_enable_hsi();
@ -98,7 +98,6 @@ static void _erase_page(void *page_addr)
*dst = (uint32_t)0; *dst = (uint32_t)0;
#elif defined(CPU_FAM_STM32L4) #elif defined(CPU_FAM_STM32L4)
DEBUG("[flashpage] erase: setting the page address\n"); DEBUG("[flashpage] erase: setting the page address\n");
CNTRL_REG |= FLASH_CR_PER;
uint8_t pn; uint8_t pn;
#if FLASHPAGE_NUMOF <= 256 #if FLASHPAGE_NUMOF <= 256
pn = (uint8_t)flashpage_page(dst); pn = (uint8_t)flashpage_page(dst);
@ -131,8 +130,7 @@ static void _erase_page(void *page_addr)
/* lock the flash module again */ /* lock the flash module again */
_lock(); _lock();
#if !(defined(CPU_FAM_STM32L0) || defined(CPU_FAM_STM32L1) || \ #if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1)
defined(CPU_FAM_STM32L4))
/* restore the HSI state */ /* restore the HSI state */
if (!hsi_state) { if (!hsi_state) {
stmclk_disable_hsi(); stmclk_disable_hsi();
@ -163,7 +161,9 @@ void flashpage_write_raw(void *target_addr, const void *data, size_t len)
#else #else
uint16_t *dst = (uint16_t *)target_addr; uint16_t *dst = (uint16_t *)target_addr;
const uint16_t *data_addr = data; const uint16_t *data_addr = data;
#endif
#if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1)
uint32_t hsi_state = (RCC->CR & RCC_CR_HSION); uint32_t hsi_state = (RCC->CR & RCC_CR_HSION);
/* the internal RC oscillator (HSI) must be enabled */ /* the internal RC oscillator (HSI) must be enabled */
stmclk_enable_hsi(); stmclk_enable_hsi();
@ -173,7 +173,8 @@ void flashpage_write_raw(void *target_addr, const void *data, size_t len)
_unlock_flash(); _unlock_flash();
DEBUG("[flashpage_raw] write: now writing the data\n"); DEBUG("[flashpage_raw] write: now writing the data\n");
#if !(defined(CPU_FAM_STM32L0) || defined(CPU_FAM_STM32L1)) #if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1) || \
defined(CPU_FAM_STM32L4)
/* set PG bit and program page to flash */ /* set PG bit and program page to flash */
CNTRL_REG |= FLASH_CR_PG; CNTRL_REG |= FLASH_CR_PG;
#endif #endif
@ -185,14 +186,16 @@ void flashpage_write_raw(void *target_addr, const void *data, size_t len)
} }
/* clear program bit again */ /* clear program bit again */
#if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1) || \
defined(CPU_FAM_STM32L4)
CNTRL_REG &= ~(FLASH_CR_PG); CNTRL_REG &= ~(FLASH_CR_PG);
#endif
DEBUG("[flashpage_raw] write: done writing data\n"); DEBUG("[flashpage_raw] write: done writing data\n");
/* lock the flash module again */ /* lock the flash module again */
_lock(); _lock();
#if !(defined(CPU_FAM_STM32L0) || defined(CPU_FAM_STM32L1) || \ #if defined(CPU_FAM_STM32F0) || defined(CPU_FAM_STM32F1)
defined(CPU_FAM_STM32L4))
/* restore the HSI state */ /* restore the HSI state */
if (!hsi_state) { if (!hsi_state) {
stmclk_disable_hsi(); stmclk_disable_hsi();