init
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
# Fully open-source CH32V003 template using ch32fun (MIT).
|
||||
#
|
||||
# Toolchain: Arch packages riscv64-elf-gcc + riscv64-elf-newlib
|
||||
# Flashing: minichlink (MIT, part of ch32fun) or wchisp
|
||||
#
|
||||
# ch32fun is used as an external SDK. Point CH32FUN_ROOT at your checkout:
|
||||
# git clone https://github.com/cnlohr/ch32fun ~/code/ch32fun
|
||||
#
|
||||
# This build does NOT use the WCH EVT SDK, WCH's GCC, libprintf, or IQmath.
|
||||
|
||||
TARGET ?= firmware
|
||||
TARGET_MCU ?= CH32V003
|
||||
|
||||
# Root of the ch32fun checkout (the directory containing ch32fun/ and minichlink/).
|
||||
CH32FUN_ROOT ?= $(HOME)/code/ch32fun
|
||||
CH32FUN ?= $(CH32FUN_ROOT)/ch32fun
|
||||
MINICHLINK ?= $(CH32FUN_ROOT)/minichlink
|
||||
|
||||
# Arch's riscv64-elf-newlib installs its headers here. ch32fun only needs the
|
||||
# headers; it never links newlib (see -nostdlib below).
|
||||
NEWLIB ?= /usr/riscv64-elf/include
|
||||
|
||||
# Arch's bare-metal RISC-V GCC. ch32fun auto-detects this too, but pinning it
|
||||
# makes the build reproducible. Override for another toolchain, e.g.
|
||||
# make PREFIX=riscv32-unknown-elf
|
||||
PREFIX ?= riscv64-elf
|
||||
|
||||
ifeq ($(wildcard $(CH32FUN)/ch32fun.mk),)
|
||||
$(error ch32fun not found at $(CH32FUN). Set CH32FUN_ROOT=/path/to/ch32fun)
|
||||
endif
|
||||
|
||||
ifeq ($(wildcard $(NEWLIB)/stdio.h),)
|
||||
$(error newlib headers not found at $(NEWLIB). Install riscv64-elf-newlib or set NEWLIB=/path/to/include)
|
||||
endif
|
||||
|
||||
ifeq ($(shell command -v $(PREFIX)-gcc 2>/dev/null),)
|
||||
$(error $(PREFIX)-gcc not found. Install riscv64-elf-gcc or set PREFIX=/path/to/toolchain-prefix)
|
||||
endif
|
||||
|
||||
# ch32fun's build rules:
|
||||
# - compiles ch32fun.c and $(TARGET).c
|
||||
# - uses ch32fun.ld, -nostdlib and ch32fun/misc/libgcc.a
|
||||
# - emits $(TARGET).elf/.bin/.hex/.lst/.map
|
||||
include $(CH32FUN)/ch32fun.mk
|
||||
|
||||
# Build firmware only; never flash implicitly.
|
||||
all: $(TARGET).bin
|
||||
|
||||
flash: cv_flash
|
||||
clean: cv_clean
|
||||
|
||||
size: $(TARGET).elf
|
||||
$(PREFIX)-size $<
|
||||
|
||||
.PHONY: all flash clean size
|
||||
Reference in New Issue
Block a user