feat: add lab-rv32i-c-uart card
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||
CC := $(RISCV_PREFIX)gcc
|
||||
OBJCOPY := $(RISCV_PREFIX)objcopy
|
||||
OBJDUMP := $(RISCV_PREFIX)objdump
|
||||
SIZE := $(RISCV_PREFIX)size
|
||||
|
||||
RV_ENV_ROOT ?= /home/user/dev/edu/rv32i-hazard3-student-env
|
||||
H3_COMMON ?= $(RV_ENV_ROOT)/vendor/Hazard3/test/sim/common
|
||||
H3_INIT ?= $(H3_COMMON)/init.S
|
||||
H3_IRQ_DISPATCH ?= $(H3_COMMON)/irq_dispatch.S
|
||||
LDSCRIPT ?= link/hazard3_c12.ld
|
||||
MEMOPS ?= $(RV_ENV_ROOT)/vendor/lab-runtime/memops.c
|
||||
|
||||
BUILD_ROOT ?= build
|
||||
TASKS := task01_uart_polling task02_uart_rx_interrupt task03_uart_mailbox
|
||||
ARCH ?= rv32i_zicsr_zifencei
|
||||
ABI ?= ilp32
|
||||
CFLAGS := -std=gnu11 -march=$(ARCH) -mabi=$(ABI) -nostdlib -nostartfiles \
|
||||
-ffreestanding -fno-builtin -fno-stack-protector -O0 -g3 -ggdb \
|
||||
-fno-omit-frame-pointer -fno-inline -Wall -Wextra \
|
||||
-Isrc/tasks -I$(H3_COMMON)
|
||||
LDFLAGS := -Wl,--no-relax -T$(LDSCRIPT)
|
||||
LIBS := -lgcc
|
||||
|
||||
.PHONY: all tasks clean check-support $(TASKS)
|
||||
all: tasks
|
||||
tasks: $(TASKS)
|
||||
|
||||
check-support:
|
||||
@test -f "$(H3_INIT)"
|
||||
@test -f "$(H3_IRQ_DISPATCH)"
|
||||
@test -f "$(H3_COMMON)/tb_uart_io.h"
|
||||
@test -f "$(MEMOPS)"
|
||||
|
||||
define task_rules
|
||||
$(1): $(BUILD_ROOT)/$(1)/prog.bin $(BUILD_ROOT)/$(1)/prog.elf $(BUILD_ROOT)/$(1)/prog.lst
|
||||
|
||||
$(BUILD_ROOT)/$(1)/prog.elf: crt0.S src/tasks/$(1).c src/tasks/c12_common.h $(H3_INIT) $(H3_IRQ_DISPATCH) $(LDSCRIPT) $(MEMOPS) | check-support
|
||||
mkdir -p $$(@D)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) -Wl,-Map,$(BUILD_ROOT)/$(1)/prog.map \
|
||||
-o $$@ $(H3_INIT) $(H3_IRQ_DISPATCH) crt0.S $(MEMOPS) src/tasks/$(1).c $(LIBS)
|
||||
$(SIZE) -A -x $$@
|
||||
|
||||
$(BUILD_ROOT)/$(1)/prog.bin: $(BUILD_ROOT)/$(1)/prog.elf
|
||||
$(OBJCOPY) -O binary $$< $$@
|
||||
|
||||
$(BUILD_ROOT)/$(1)/prog.lst: $(BUILD_ROOT)/$(1)/prog.elf
|
||||
$(OBJDUMP) -d -S -M no-aliases,numeric $$< > $$@
|
||||
endef
|
||||
|
||||
$(foreach task,$(TASKS),$(eval $(call task_rules,$(task))))
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_ROOT)
|
||||
Reference in New Issue
Block a user