From 7ac9267b156d7bb6e942dd630a9ba142ba0c7a00 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 27 Jan 2024 16:01:20 -0800 Subject: [PATCH] altos/stm32f1: For some reason the DBG registers aren't always available Attempts to discover the device model during flash loading appear to fail for unknown reasons. Switch to basing the memory page size on the total memory size, which should be just as reliable. Signed-off-by: Keith Packard --- src/stm32f1/ao_flash_stm.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/stm32f1/ao_flash_stm.c b/src/stm32f1/ao_flash_stm.c index 103e83a5..1e35545c 100644 --- a/src/stm32f1/ao_flash_stm.c +++ b/src/stm32f1/ao_flash_stm.c @@ -69,19 +69,18 @@ _ao_flash_erase_page(uint32_t *page) static uint32_t stm_flash_page_size(void) { - uint16_t dev_id = stm_dev_id(); + uint16_t f_size = stm_flash_data.f_size; - switch (dev_id) { - case 0x412: /* low-density devices */ - case 0x410: /* medium-density devices */ + if (f_size <= 128) { + /* low-density and medium-density devices */ return 1024; - case 0x414: /* high-density devices */ - case 0x430: /* XL-density devices */ - case 0x418: /* Connectivity devices */ + } else { + /* + * high-density devices, XL-density devices and + * Connectivity devices + */ return 2048; } - ao_panic(AO_PANIC_FLASH); - return 0; } void -- 2.30.2