aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Drake <jeremydrake+gnuk@eacceleration.com>2017-08-02 16:11:34 -0700
committerNIIBE Yutaka <gniibe@fsij.org>2017-08-03 20:48:13 +0900
commit5fe5ff36c4d88e7cc09b5b834e0bc1a7fa595619 (patch)
treec51adc5704371e11987ecf6461477a2e724c5a48
parenta4f28ee17680742b0b0055f68b7a0741ccb17d6b (diff)
Allow compile-time override of detected flash size.
On the STM32F103C8, as used in the "blue pill" boards, it has been determined that, despite these only officially having 64KiB flash, it is possible to actually use 128KiB of flash. This commit allows for a preprocessor define STM32F103_OVERRIDE_FLASH_SIZE which, when set, is used as the size of flash in KiB instead of reading it from the FLASH_SIZE_REG.
-rw-r--r--AUTHORS4
-rw-r--r--ChangeLog5
-rw-r--r--mcu/sys-stm32f103.c8
3 files changed, 17 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
index e12bd99..9aceb6b 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -2,6 +2,10 @@ Aidan Thornton:
Added Maple Mini support.
board/board-maple-mini.h
+Jeremy Drake:
+ Modified STM32F103 support.
+ mcu/sys-stm32f103.c
+
Kaz Kojima:
Added STM32 Primer2 support.
board/board-stm32-primer2.h
diff --git a/ChangeLog b/ChangeLog
index c5c56c4..065a9d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-03 Jeremy Drake <jeremydrake+gnuk@eacceleration.com>
+
+ * mcu/sys-stm32f103.c (flash_write): Allow compile time
+ flash size definition by STM32F103_OVERRIDE_FLASH_SIZE_KB.
+
2017-08-02 NIIBE Yutaka <gniibe@fsij.org>
* contrib/adc-gnu-linux.c: New.
diff --git a/mcu/sys-stm32f103.c b/mcu/sys-stm32f103.c
index 05e1f2f..81d8ec1 100644
--- a/mcu/sys-stm32f103.c
+++ b/mcu/sys-stm32f103.c
@@ -213,7 +213,11 @@ static int
flash_write (uint32_t dst_addr, const uint8_t *src, size_t len)
{
int status;
+#if defined(STM32F103_OVERRIDE_FLASH_SIZE_KB)
+ uint32_t flash_end = FLASH_START_ADDR + STM32F103_OVERRIDE_FLASH_SIZE_KB*1024;
+#else
uint32_t flash_end = FLASH_START_ADDR + (*FLASH_SIZE_REG)*1024;
+#endif
if (dst_addr < FLASH_START || dst_addr + len > flash_end)
return 0;
@@ -269,7 +273,11 @@ static void __attribute__((naked))
flash_erase_all_and_exec (void (*entry)(void))
{
uint32_t addr = FLASH_START;
+#if defined(STM32F103_OVERRIDE_FLASH_SIZE_KB)
+ uint32_t end = FLASH_START_ADDR + STM32F103_OVERRIDE_FLASH_SIZE_KB*1024;
+#else
uint32_t end = FLASH_START_ADDR + (*FLASH_SIZE_REG)*1024;
+#endif
uint32_t page_size = 1024;
int r;