| ifndef RISCV_TOOLS_PREFIX |
| RISCV_TOOLS_PREFIX = /opt/riscv32ic/bin/riscv32-unknown-elf- |
| endif |
| CXX = $(RISCV_TOOLS_PREFIX)g++ -march=rv32i |
| CC = $(RISCV_TOOLS_PREFIX)gcc -march=rv32i |
| AS = $(RISCV_TOOLS_PREFIX)gcc -march=rv32i |
| CXXFLAGS = -MD -Os -Wall -std=c++11 |
| CCFLAGS = -MD -Os -Wall |
| #LDFLAGS = -Wl,--gc-sections,--no-relax |
| LDFLAGS = -Wl,--gc-sections |
| LDLIBS = |
| |
| test: testbench.vvp firmware32.hex |
| vvp -l testbench.log -N testbench.vvp |
| |
| testbench.vvp: testbench.v ../../picorv32.v firmware_dbg.v |
| iverilog -o testbench.vvp testbench.v ../../picorv32.v |
| chmod -x testbench.vvp |
| |
| firmware32.hex: firmware.elf hex8tohex32.py |
| $(RISCV_TOOLS_PREFIX)objcopy -O verilog firmware.elf firmware.tmp |
| python3 hex8tohex32.py firmware.tmp > firmware32.hex |
| |
| |
| firmware_dbg.v: firmware.map |
| python3 map2debug.py |
| |
| start.o: start.S |
| $(CC) -c -nostdlib start.S $(LDLIBS) |
| |
| firmware.elf: firmware.o syscalls.o start.o |
| $(CC) $(LDFLAGS),-Map=firmware.map -o $@ $^ -T sections.ld $(LDLIBS) |
| chmod -x firmware.elf |
| |
| clean: |
| rm -f *.o *.d *.tmp start.elf |
| rm -f firmware.elf firmware.hex firmware32.hex |
| rm -f testbench.vvp testbench.vcd |
| |
| -include *.d |
| .PHONY: test clean |