Merge pull request #11715 from fjmolinas/pr_stm32_flashpage_cleanup
stm32_common/flashpage: cleanup
This commit is contained in:
commit
a671c6c247
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user