feat: publish FreeRTOS C FC11 card
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
RISCV_PREFIX ?= riscv64-unknown-elf-
|
||||
CC := $(RISCV_PREFIX)gcc
|
||||
OBJCOPY := $(RISCV_PREFIX)objcopy
|
||||
OBJDUMP := $(RISCV_PREFIX)objdump
|
||||
SIZE := $(RISCV_PREFIX)size
|
||||
NM := $(RISCV_PREFIX)nm
|
||||
READELF := $(RISCV_PREFIX)readelf
|
||||
HOSTCC ?= cc
|
||||
|
||||
H3_COMMON := vendor/Hazard3/test/sim/common
|
||||
H3_INIT := $(H3_COMMON)/init.S
|
||||
LDSCRIPT := $(H3_COMMON)/link_hazard3.ld
|
||||
TB ?= vendor/Hazard3/test/sim/tb_verilator/tb
|
||||
FREERTOS := vendor/FreeRTOS-Kernel
|
||||
FREERTOS_PORT := $(FREERTOS)/portable/GCC/RISC-V
|
||||
BUILD := build
|
||||
TASK := task01_static_allocation
|
||||
|
||||
ARCH ?= rv32i_zicsr_zifencei
|
||||
ABI ?= ilp32
|
||||
CPPFLAGS := -Iinclude -Isrc/common -I$(FREERTOS)/include -I$(FREERTOS_PORT)
|
||||
TARGET_FLAGS := -march=$(ARCH) -mabi=$(ABI) -Og -g3 -ffreestanding -fno-builtin -fno-stack-protector -ffunction-sections -fdata-sections -Wall -Wextra -Werror
|
||||
CFLAGS := -std=c11 $(TARGET_FLAGS) $(CPPFLAGS)
|
||||
ASFLAGS := -march=$(ARCH) -mabi=$(ABI) -g3 $(CPPFLAGS)
|
||||
LDFLAGS := -march=$(ARCH) -mabi=$(ABI) -nostdlib -nostartfiles -T$(LDSCRIPT) -Wl,--no-relax -Wl,--gc-sections
|
||||
LIBS := -lgcc
|
||||
|
||||
COMMON_OBJS := \
|
||||
$(BUILD)/common/init.o \
|
||||
$(BUILD)/common/crt0.o \
|
||||
$(BUILD)/common/lab_io.o \
|
||||
$(BUILD)/common/lab_freertos.o \
|
||||
$(BUILD)/common/hazard3_freertos_traps.o \
|
||||
$(BUILD)/common/memops.o
|
||||
KERNEL_OBJS := \
|
||||
$(BUILD)/kernel/tasks.o \
|
||||
$(BUILD)/kernel/list.o \
|
||||
$(BUILD)/kernel/queue.o \
|
||||
$(BUILD)/kernel/timers.o \
|
||||
$(BUILD)/kernel/heap_4.o \
|
||||
$(BUILD)/kernel/port.o \
|
||||
$(BUILD)/kernel/portASM.o
|
||||
|
||||
.PHONY: all tasks task1 t1 host-test check-abi sim check-determinism check pdf clean
|
||||
|
||||
all tasks task1 t1: $(BUILD)/$(TASK)/prog.bin
|
||||
|
||||
$(BUILD)/common/init.o: $(H3_INIT)
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
$(BUILD)/common/crt0.o: src/common/crt0.S
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
$(BUILD)/common/lab_io.o: src/common/lab_io.c src/common/lab_io.h
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/common/lab_freertos.o: src/common/lab_freertos.c src/common/lab_freertos.h
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/common/hazard3_freertos_traps.o: src/common/hazard3_freertos_traps.S
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
$(BUILD)/common/memops.o: src/common/memops.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/tasks.o: $(FREERTOS)/tasks.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/list.o: $(FREERTOS)/list.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/queue.o: $(FREERTOS)/queue.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/timers.o: $(FREERTOS)/timers.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/heap_4.o: $(FREERTOS)/portable/MemMang/heap_4.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/port.o: $(FREERTOS_PORT)/port.c
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/kernel/portASM.o: $(FREERTOS_PORT)/portASM.S
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
$(BUILD)/$(TASK)/app.o: src/tasks/$(TASK).c include/$(TASK).h include/$(TASK)_model.h
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(BUILD)/$(TASK)/$(TASK).s: src/tasks/$(TASK).c include/$(TASK).h include/$(TASK)_model.h
|
||||
mkdir -p $(@D)
|
||||
$(CC) $(CFLAGS) -S $< -o $@
|
||||
$(BUILD)/$(TASK)/prog.elf: $(COMMON_OBJS) $(KERNEL_OBJS) $(BUILD)/$(TASK)/app.o
|
||||
$(CC) $(LDFLAGS) -Wl,-Map,$(BUILD)/$(TASK)/prog.map -o $@ $^ $(LIBS)
|
||||
$(SIZE) -A -x $@
|
||||
$(BUILD)/$(TASK)/prog.bin: $(BUILD)/$(TASK)/prog.elf $(BUILD)/$(TASK)/$(TASK).s
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(OBJDUMP) -d -M no-aliases,numeric $< > $(BUILD)/$(TASK)/prog.lst
|
||||
|
||||
host-test:
|
||||
mkdir -p $(BUILD)/host
|
||||
$(HOSTCC) -std=c11 -Wall -Wextra -Werror -Iinclude tests/static_allocation_model_host.c -o $(BUILD)/host/static_allocation_model_host
|
||||
$(BUILD)/host/static_allocation_model_host
|
||||
|
||||
check-abi: $(BUILD)/$(TASK)/prog.elf
|
||||
RISCV_NM=$(NM) RISCV_READELF=$(READELF) ./scripts/check_abi.sh
|
||||
|
||||
sim: tasks
|
||||
@test -x "$(TB)" || { echo "missing simulator $(TB)" >&2; exit 1; }
|
||||
./scripts/run_sim.sh "$(TB)" "$(BUILD)"
|
||||
|
||||
check-determinism: tasks
|
||||
@test -x "$(TB)" || { echo "missing simulator $(TB)" >&2; exit 1; }
|
||||
./scripts/check_determinism.sh "$(TB)" "$(BUILD)"
|
||||
|
||||
check: tasks host-test check-abi sim check-determinism
|
||||
|
||||
pdf:
|
||||
./scripts/render_pdf.sh
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD)
|
||||
Reference in New Issue
Block a user