Makefile 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. # This file is Copyright (c) 2023 Victor Suarez Rovere <suarezvictor@gmail.com>
  2. # SPDX-License-Identifier: AGPL-3.0-only
  3. APP_SRC?=canvas_app
  4. BOARD?=digilent_arty
  5. #BOARD?=lambdaconcept_ecpix5
  6. #LATTICETOOLCHAIN=--toolchain diamond
  7. LATTICETOOLCHAIN=--toolchain trellis --nextpnr-seed 0 --nextpnr-timingstrict
  8. SDRAM_BUS_BITS?=32
  9. #SERIAL_PORT?=/dev/ttyUSB0 #for arty
  10. SERIAL_PORT?=/dev/ttyUSB2 #for ecpix5
  11. #AMDTOOLCHAIN?=--toolchain=yosys+nextpnr #FIXME: some glitches
  12. CPU_TYPE?=--cpu-type=vexriscv #only supports vexriscv
  13. SYS_CLK?=--sys-clk-freq 75e6 #ECP5 pass at 96 MHz if just rectangles, but glitches remains
  14. include Makefile.common
  15. include $(BUILD_DIR)/software/include/generated/variables.mak
  16. include $(LITEX_ROOT)/litex/soc/software/common.mak
  17. AGG_BASE_DIR=agg-2.4
  18. INC=-I$(AGG_BASE_DIR)/include -I./freetype
  19. CCDEFS=-DSDRAM_BUS_BITS=$(SDRAM_BUS_BITS)
  20. CFLAGS+=$(CCDEFS) $(INC) -Wno-missing-prototypes
  21. CXXFLAGS+=$(CCDEFS) $(INC) -fno-threadsafe-statics
  22. SOCARGS=--pixel-bus-width=$(SDRAM_BUS_BITS) --timer-uptime $(CPU_TYPE)
  23. #FIXME: try crt0 provided by LiteX
  24. %.o: %.S
  25. $(assemble)
  26. %.o: %.c
  27. $(compile)
  28. %.o: %.cpp
  29. $(compilexx)
  30. %.bin: %.elf
  31. $(OBJCOPY) -O binary $< $@
  32. chmod -x $@
  33. prerequisites: LITEX-CONTRIBUTORS
  34. ./build/digilent_arty/software/include/generated/variables.mak: ./digilent_arty.py
  35. $(PYTHON) ./digilent_arty.py $(SOCARGS) --no-compile-gateware
  36. ./build/digilent_arty/gateware/digilent_arty.bit: ./digilent_arty.py c2v
  37. $(PYTHON) ./digilent_arty.py $(SOCARGS) $(AMDTOOLCHAIN)
  38. ./build/lambdaconcept_ecpix5/software/include/generated/variables.mak: ./lambdaconcept_ecpix5.py
  39. $(PYTHON) ./lambdaconcept_ecpix5.py $(SOCARGS) $(SYS_CLK) --no-compile-gateware
  40. ./build/lambdaconcept_ecpix5/gateware/lambdaconcept_ecpix5.bit: ./lambdaconcept_ecpix5.py c2v
  41. $(PYTHON) ./lambdaconcept_ecpix5.py $(SOCARGS) $(SYS_CLK) $(LATTICETOOLCHAIN)
  42. everything: run $(BOARD)
  43. .PHONY: run
  44. run: sim_linux
  45. ./sim_linux
  46. sim_linux: prerequisites sim_linux.c drawing_test.c accel_cores.c sim_fb.c sw_cores.cpp
  47. g++ -O3 -m32 -ggdb $(CCDEFS) $(INC) -o sw_cores.o -c sw_cores.cpp
  48. gcc -O3 -m32 -ggdb $(CCDEFS) $(INC) `sdl2-config --cflags` sim_linux.c sw_cores.o -o $@ `sdl2-config --libs`
  49. rm sw_cores.o
  50. .PHONY: firmware
  51. firmware: main.bin
  52. main.elf: prerequisites main.o $(APP_SRC).o accel_cores.o sw_cores.o fs.o crt0.o linker.ld
  53. $(CX) crt0.o main.o $(APP_SRC).o accel_cores.o sw_cores.o fs.o -march=rv32im -mabi=ilp32 -nostartfiles -L$(BUILDINC_DIRECTORY) -T linker.ld -Xlinker -Map=$@.map -N -o $@ \
  54. $(PACKAGES:%=-L$(BUILD_DIR)/software/%) $(LIBS:lib%=-l%)
  55. .PHONY: digilent_arty
  56. digilent_arty: $(BUILD_DIR)/gateware/digilent_arty.bit
  57. openFPGALoader -b arty $(BUILD_DIR)/gateware/digilent_arty.bit
  58. .PHONY: lambdaconcept_ecpix5
  59. lambdaconcept_ecpix5: $(BUILD_DIR)/gateware/lambdaconcept_ecpix5.bit
  60. openFPGALoader -b ecpix5 --cable ft4232 --freq 30e6 $(BUILD_DIR)/gateware/lambdaconcept_ecpix5.bit
  61. #this is only for diamond toolchain:
  62. #PYTHONPATH=/media/vsuarez/elocaldata/SCRATCH/prjtrellis/libtrellis $(PYTHON) ecp5_patch_idcode.py
  63. #openFPGALoader -b ecpix5 --cable ft4232 --freq 30e6 repack.bit #$(BUILD_DIR)/gateware/lambdaconcept_ecpix5.bit
  64. .PHONY: upload
  65. upload: firmware $(BOARD)
  66. $(LITEX_ROOT)/litex/tools/litex_term.py $(SERIAL_PORT) --kernel main.bin
  67. .PHONY: clean
  68. clean:
  69. $(RM) -R build restore
  70. $(RM) *.o *.d *.elf *.elf.map *.bin ellipse_fill32.v rectangle_fill32.v *.v.* sim_linux backup.tar.gz *.orig
  71. LITEX-CONTRIBUTORS:
  72. wget -O $@ https://raw.githubusercontent.com/enjoy-digital/litex/master/CONTRIBUTORS