summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorStefan Kerkmann <karlk90@pm.me>2021-10-18 07:23:20 +0200
committerGitHub <noreply@github.com>2021-10-18 16:23:20 +1100
commite50867d52d9c255570630a23514842749b45e4c1 (patch)
treee448e47262668e21084fb7439a38b0322136bb89 /quantum
parent7e3ff206b8600265ea086040b397f1a600c4a7f3 (diff)
downloadqmk_firmware-e50867d52d9c255570630a23514842749b45e4c1.tar.gz
qmk_firmware-e50867d52d9c255570630a23514842749b45e4c1.zip
[Core] Add support for RISC-V builds and GD32VF103 MCU (#12508)
* Add support for RISC-V builds and GD32VF103 MCU * Add toolchain selection in chibios.mk based on the mcu selected in mcu_selection.mk * Reorder and added comments to chibios.mk to have a streamlined makefile * Add GD32VF103 mcu to possible targets for QMK. * Add STM32 compatibility for GD32VF103 MCU, this is hacky but more efficent then rewriting every driver. * Add GigaDevice DFU bootloader as flash target, please note that dfu-util of at least version 0.10 is needed. * Add analog driver compatibility * Add apa102 bitbang driver compatibility * Add ws2812 bitbang driver compatibility * Add eeprom in flash emulation compatibility * Allow faster re-builds with ccache * Add SiPeed Longan Nano to platform files * Add SiPeed Longan Nano Onekeys * Make quine compatible with other bootloaders * Support builds with picolibc * Add risc-v toolchain to arch and debian/ubuntu scripts
Diffstat (limited to 'quantum')
-rw-r--r--quantum/mcu_selection.mk31
1 files changed, 31 insertions, 0 deletions
diff --git a/quantum/mcu_selection.mk b/quantum/mcu_selection.mk
index 622b4a82f8..7c4a617af0 100644
--- a/quantum/mcu_selection.mk
+++ b/quantum/mcu_selection.mk
@@ -541,6 +541,37 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
UF2_FAMILY ?= STM32L4
endif
+ifneq ($(findstring GD32VF103, $(MCU)),)
+ # RISC-V
+ MCU = risc-v
+
+ # RISC-V extensions and abi configuration
+ MCU_ARCH = rv32imac
+ MCU_ABI = ilp32
+ MCU_CMODEL = medlow
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = GD32V
+ MCU_SERIES = GD32VF103
+
+ # Linker script to use
+ # - it should exist either in <chibios>/os/common/startup/RISCV-ECLIC/compilers/GCC/ld/
+ # or <keyboard_dir>/ld/
+ MCU_LDSCRIPT ?= GD32VF103xB
+
+ # Startup code to use
+ # - it should exist in <chibios>/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/
+ MCU_STARTUP ?= gd32vf103
+
+ # Board: it should exist either in <chibios>/os/hal/boards/,
+ # <keyboard_dir>/boards/, or drivers/boards/
+ BOARD ?= SIPEED_LONGAN_NANO
+
+ USE_FPU ?= no
+endif
+
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
PROTOCOL = LUFA