stm32g0: Begun sorting out the erase routine mess
This commit is contained in:
parent
f859368a97
commit
60af35b06c
|
@ -327,11 +327,7 @@ static void stm32g0_flash_lock(target *t)
|
||||||
static int stm32g0_flash_erase(target_flash_s *f, target_addr addr, size_t len)
|
static int stm32g0_flash_erase(target_flash_s *f, target_addr addr, size_t len)
|
||||||
{
|
{
|
||||||
target *t = f->t;
|
target *t = f->t;
|
||||||
target_addr end = addr + len - 1U;
|
const target_addr end = addr + len - 1U;
|
||||||
uint16_t page_nb = 0U;
|
|
||||||
uint16_t nb_pages_to_erase = 0U;
|
|
||||||
uint16_t bank1_end_page_nb = FLASH_BANK2_START_PAGE_NB - 1U; // Max
|
|
||||||
bool on_bank2 = false;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (end > (f->start + f->length - 1U))
|
if (end > (f->start + f->length - 1U))
|
||||||
|
@ -351,13 +347,15 @@ static int stm32g0_flash_erase(target_flash_s *f, target_addr addr, size_t len)
|
||||||
if (addr >= (target_addr)FLASH_OTP_START)
|
if (addr >= (target_addr)FLASH_OTP_START)
|
||||||
goto exit_cleanup;
|
goto exit_cleanup;
|
||||||
|
|
||||||
nb_pages_to_erase = (uint16_t)((len - 1U) / f->blocksize) + 1U;
|
size_t nb_pages_to_erase = ((len - 1U) / f->blocksize) + 1U;
|
||||||
|
size_t bank1_end_page_nb = FLASH_BANK2_START_PAGE_NB - 1U;
|
||||||
if (t->part_id == STM32G0B_C) // Dual-bank devices
|
if (t->part_id == STM32G0B_C) // Dual-bank devices
|
||||||
bank1_end_page_nb = ((f->length / 2U) - 1U) / f->blocksize;
|
bank1_end_page_nb = ((f->length / 2U) - 1U) / f->blocksize;
|
||||||
page_nb = (uint16_t)((addr - f->start) / f->blocksize);
|
uint32_t page_nb = (addr - f->start) / f->blocksize;
|
||||||
|
|
||||||
stm32g0_flash_unlock(t);
|
stm32g0_flash_unlock(t);
|
||||||
|
|
||||||
|
bool on_bank2 = false;
|
||||||
do {
|
do {
|
||||||
if (!on_bank2 && (page_nb > bank1_end_page_nb)) {
|
if (!on_bank2 && (page_nb > bank1_end_page_nb)) {
|
||||||
/* Jump on bank 2 */
|
/* Jump on bank 2 */
|
||||||
|
|
Loading…
Reference in New Issue