summaryrefslogtreecommitdiff
path: root/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
diff options
context:
space:
mode:
authorSergey Vlasov <sigprof@gmail.com>2022-08-12 00:37:41 +0300
committerGitHub <noreply@github.com>2022-08-11 22:37:41 +0100
commit9e443621796a150b244d49a784b77c744ea04d94 (patch)
tree3c5c5e1fa1421d2ceaabd375c8b2cba9eab09bc3 /keyboards/handwired/onekey/bluepill_f103c6/rules.mk
parent8c4269f98e107a9c98127464e6870798b1734a61 (diff)
Add minimal STM32F103C6 support (#17853)
Unfortunately, the crippled versions of “Bluepill” boards with STM32F103C6xx chips instead of STM32F103C8xx are now sold all over the place, sometimes advertised in a confusing way to make the difference not noticeable until too late. Add minimal support for these MCUs in the common “Bluepill with stm32duino” configuration, so that it could be possible to make something useful from those boards (although fitting QMK into the available 24 KiB of flash may be rather hard). (In fact, I'm not sure whether the “STM32” part of the chip name is actually correct for those boards of uncertain origin, so the onekey board name is `bluepill_f103c6`; another reason for that name is to match the existing `blackpill_f401` and `blackpill_f411`.) The EEPROM emulation support is not included on purpose, because enabling it without having a working firmware size check would be irresponsible with such flash size (the chance that someone would build a firmware where the EEPROM backing store ends up overlapping some firmware code is really high). Other than that, enabling the EEPROM emulation code is mostly trivial (the `wear_leveling` driver with the `embedded_flash` backing store even works without any custom configuration, although its code is significantly larger than the `vendor` driver, which may also be important for such flash size).
Diffstat (limited to 'keyboards/handwired/onekey/bluepill_f103c6/rules.mk')
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/rules.mk27
1 files changed, 27 insertions, 0 deletions
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/rules.mk b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
new file mode 100644
index 0000000000..f2280a1a59
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+# Cannot use `BOOTLOADER = stm32duino` due to the need to override
+# `MCU_LDSCRIPT`, therefore all parameters need to be specified here manually.
+OPT_DEFS += -DBOOTLOADER_STM32DUINO
+MCU_LDSCRIPT = STM32F103x6_stm32duino_bootloader
+BOARD = STM32_F103_STM32DUINO
+BOOTLOADER_TYPE = stm32duino
+DFU_ARGS = -d 1EAF:0003 -a 2 -R
+DFU_SUFFIX_ARGS = -v 1EAF -p 0003
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+# LTO is required to fit the firmware into the available 24K of flash
+LTO_ENABLE = yes
+
+# Disable some features which still don't fit into flash even with LTO
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = no
+
+# EEPROM emulation not supported yet (need to implement a proper firmware size
+# check first, otherwise the chance of the EEPROM backing store overwriting
+# some part of the firmware code is really high).
+EEPROM_DRIVER = transient