mirror of
https://github.com/lcbcFoo/ReonV.git
synced 2025-04-18 18:44:43 -04:00
133 lines
3.6 KiB
Makefile
133 lines
3.6 KiB
Makefile
################################################################################
|
|
#
|
|
# Author: Lucas Castro
|
|
# Last modification: april/2018
|
|
#
|
|
# Makefile for running programs on ReonV
|
|
#
|
|
################################################################################
|
|
#
|
|
# Update the following variables to your environment and board used
|
|
|
|
# Cross compiler (Must be RV32I only)
|
|
CROSS=../../riscv-gcc/bin/riscv32-unknown-elf-
|
|
GRMON=../../grmon-eval-3.0.9/linux/bin64/grmon
|
|
GRMON_OPTIONS=-digilent -u
|
|
|
|
# Design you are targeting
|
|
DESIGN=leon3-digilent-nexys4ddr
|
|
|
|
|
|
CC=gcc
|
|
AS=as
|
|
OBJCOPY=objcopy
|
|
CFLAGS=-nostdlib
|
|
OBJCPFLAGS=-O binary -j .text -j .data
|
|
LD_SCRIPT=ld_script
|
|
WRAP=-Wl,-wrap,exit,-wrap,open,-wrap,close,-wrap,write,-wrap,read,-wrap,lseek,-wrap,sbrk
|
|
|
|
################################################################################
|
|
#
|
|
# Targets for compiling
|
|
#
|
|
MAIN_OBJS=reonv_crt0.o mini_printf.o posix.o
|
|
|
|
# Compiled binary linked with reonv_crt0
|
|
#%.out : %.c reonv_crt0.o posix.o
|
|
# ${CROSS}${CC} -static -static-libgcc -march=rv32i ${WRAP} -T${LD_SCRIPT} $< -o $@
|
|
%.out : $(MAIN_OBJS) %.o
|
|
${CROSS}gcc -static -nostartfiles -march=rv32i $^ \
|
|
${WRAP},-lm,--no-relax,-melf32lriscv,-Ttext=0x40001000,-e,__reonv_start -o $@
|
|
# ${WRAP},--verbose -Tlinker_script -o $@
|
|
|
|
# Targets for .S.
|
|
# .o is for linking programs (i.e. crt0.S)
|
|
# .hex is for other assembly programs
|
|
%.hex : %.S
|
|
${CROSS}$(AS) $< -o $@
|
|
|
|
%.o : %.c
|
|
${CROSS}${CC} -lm -march=rv32i -D TEST -c $< -o $@
|
|
|
|
#mini_printf.o : mini_printf.c
|
|
# ${CROSS}${CC} -c $< -o $@
|
|
|
|
posix.o : posix.c
|
|
${CROSS}${CC} -c $< -o $@ -nostdlib
|
|
|
|
reonv_crt0.o : reonv_crt0.S
|
|
${CROSS}${CC} -c $< -o $@ -nostdlib
|
|
|
|
# Target raw binary to avoid grmon2 errors saying this is not SPARC '-'
|
|
%.bin : %.out
|
|
${CROSS}$(OBJCOPY) $(OBJCPFLAGS) $< $@
|
|
|
|
%.bin : %.hex
|
|
${CROSS}$(OBJCOPY) $(OBJCPFLAGS) $< $@
|
|
|
|
# Make binaries readable
|
|
%.read : %.* ./tools/to_text.x86
|
|
./tools/to_text.x86 $< $@
|
|
|
|
# Copy grmon-dump.bin from design directory
|
|
copy_dump : ../designs/$(DESIGN)/grmon-dump.bin
|
|
cp ../designs/$(DESIGN)/grmon-dump.bin .
|
|
|
|
# Read dump from grmon
|
|
read_dump : copy_dump ./tools/to_text.x86
|
|
./tools/to_text.x86 grmon-dump.bin grmon-dump.read
|
|
rm grmon-dump.bin ./tools/*.x86 -f
|
|
|
|
################################################################################
|
|
#
|
|
# Benchmarks
|
|
#
|
|
#
|
|
SRC := wcet_benchmark
|
|
|
|
SOURCES := $(wildcard $(SRC)/*.c)
|
|
TESTS := $(patsubst $(SRC)/%.c, $(SRC)/%.out, $(SOURCES))
|
|
X86 := $(patsubst $(SRC)/%.c, $(SRC)/%.x86, $(SOURCES))
|
|
|
|
tests: $(TESTS)
|
|
@echo "Generated tests for ReonV"
|
|
|
|
x86: $(X86)
|
|
@echo "Generated x86 to check correct output"
|
|
|
|
bench: tests x86
|
|
@chmod +x tools/run_bench.sh
|
|
@tools/run_bench.sh $(GRMON) $(GRMON_OPTIONS)
|
|
|
|
grmon_run :
|
|
$(GRMON) $(GRMON_OPTIONS) -c grmon_script.txt -log grmon_log.txt -abaud 115200 > /dev/null
|
|
|
|
grmon_norun :
|
|
$(GRMON) $(GRMON_OPTIONS) -c grmon_norun.txt > /dev/null
|
|
|
|
#$(SRC)/%.out: $(SRC)/%.c
|
|
# $(CC) -I$(SRC) $< -o $@
|
|
|
|
$(SRC)/%.x86 : $(SRC)/%.c
|
|
gcc $< -o $@ -lm
|
|
|
|
|
|
################################################################################
|
|
#
|
|
# Boot Code
|
|
#
|
|
# Adapted PROM generation based on original leon3 script (found at ../bin)
|
|
ahbrom.vhd : ahbrom boot_code.bin
|
|
./ahbrom boot_code.bin ahbrom.vhd
|
|
|
|
bootcode : ahbrom.vhd
|
|
cp ahbrom.vhd ../designs/${DESIGN}/ahbrom.vhd -f
|
|
@echo "Generated ahbrom.vhd and placed at ../../designs/${DESIGN}"
|
|
|
|
ahbrom : ../bin/ahbrom.c
|
|
gcc ../bin/ahbrom.c -o ahbrom
|
|
|
|
clean:
|
|
rm -rf ahbrom* tools/*.x86 *.hex *.inv *.convert *.bin *.o *log *.jou *.str \
|
|
$(SRC)/*.out $(SRC)/*.o $(SRC)/*.x86 $(SRC)/*.log *.out *.read grmon_log.txt \
|
|
./tools/grmon_run ./tools/grmon_norun ./tools/res.* ./tools/to_text
|