From e50867d52d9c255570630a23514842749b45e4c1 Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Mon, 18 Oct 2021 07:23:20 +0200 Subject: [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 --- quantum/mcu_selection.mk | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'quantum') 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 + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = GD32V + MCU_SERIES = GD32VF103 + + # Linker script to use + # - it should exist either in /os/common/startup/RISCV-ECLIC/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= GD32VF103xB + + # Startup code to use + # - it should exist in /os/common/startup/RISCV-ECLIC/compilers/GCC/mk/ + MCU_STARTUP ?= gd32vf103 + + # Board: it should exist either in /os/hal/boards/, + # /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 -- cgit v1.2.3