summaryrefslogtreecommitdiffstatshomepage
path: root/ports/stm32/flashbdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/stm32/flashbdev.c')
-rw-r--r--ports/stm32/flashbdev.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/ports/stm32/flashbdev.c b/ports/stm32/flashbdev.c
index 6ed891300d..6be0cfee8a 100644
--- a/ports/stm32/flashbdev.c
+++ b/ports/stm32/flashbdev.c
@@ -104,11 +104,16 @@ STATIC byte flash_cache_mem[0x4000] __attribute__((aligned(4))); // 16k
#elif defined(STM32H743xx)
-// The STM32H743 flash sectors are 128K
-#define CACHE_MEM_START_ADDR (0x20000000) // DTCM data RAM, 128k
-#define FLASH_SECTOR_SIZE_MAX (0x20000) // 128k max
-#define FLASH_MEM_SEG1_START_ADDR (0x08020000) // sector 1
-#define FLASH_MEM_SEG1_NUM_BLOCKS (256) // Sector 1: 128k / 512b = 256 blocks
+// The STM32H743 flash sectors are 128K, with locations defined in the linker script
+extern uint8_t _flash_fs_start;
+extern uint8_t _flash_fs_end;
+extern uint8_t _ram_fs_cache_start[];
+extern uint8_t _ram_fs_cache_end[];
+
+#define CACHE_MEM_START_ADDR ((uintptr_t)&_ram_fs_cache_start[0])
+#define FLASH_SECTOR_SIZE_MAX (&_ram_fs_cache_end[0] - &_ram_fs_cache_start[0])
+#define FLASH_MEM_SEG1_START_ADDR ((long)&_flash_fs_start)
+#define FLASH_MEM_SEG1_NUM_BLOCKS ((&_flash_fs_end - &_flash_fs_start) / 512)
#elif defined(STM32L432xx) || \
defined(STM32L451xx) || defined(STM32L452xx) || defined(STM32L462xx) || \