Makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # Project config
  2. PROJ = boot_stub
  3. PROJ_DEPS := misc
  4. PROJ_RTL_SRCS := $(addprefix rtl/, \
  5. )
  6. PROJ_TOP_SRC := rtl/top.v
  7. PROJ_TOP_MOD := top
  8. # Target config
  9. BOARD ?= icebreaker
  10. DEVICE = up5k
  11. PACKAGE = sg48
  12. NEXTPNR_ARGS = --freq 48 --no-promote-globals
  13. # Include default rules
  14. include ../../build/project-rules.mk
  15. # Custom rules
  16. # Just bootstub in multi-boot image
  17. $(BUILD_TMP)/boot_mb.bin: $(BUILD_TMP)/$(PROJ).bin
  18. ./utils/mkmultiboot.py $@ $<
  19. build-mb: $(BUILD_TMP)/boot_mb.bin
  20. prog-mb: $(BUILD_TMP)/boot_mb.bin
  21. $(ICEPROG) $<
  22. sudo-prog-mb: $(BUILD_TMP)/boot_mb.bin
  23. @echo 'Executing prog as root!!!'
  24. sudo $(ICEPROG) $<
  25. # Full DFU bootloader image
  26. DFU_PROJ_BASE=$(realpath $(BUILD_TMP)/../../riscv_usb)
  27. $(BUILD_TMP)/bootloader.bin: $(BUILD_TMP)/$(PROJ).bin $(DFU_PROJ_BASE)/build-tmp/riscv_usb.bin $(DFU_PROJ_BASE)/fw/fw_dfu.bin
  28. ./utils/mkmultiboot.py $@ $(BUILD_TMP)/$(PROJ).bin $(DFU_PROJ_BASE)/build-tmp/riscv_usb.bin:$(DFU_PROJ_BASE)/fw/fw_dfu.bin
  29. $(DFU_PROJ_BASE)/build-tmp/riscv_usb.bin:
  30. make -C $(DFU_PROJ_BASE) BOOT_CODE=dfu
  31. $(DFU_PROJ_BASE)/fw/fw_dfu.bin:
  32. make -C $(DFU_PROJ_BASE)/fw fw_dfu.bin
  33. bootloader-clean:
  34. if [ "$(PRE_CLEAN)" == "1" ]; then \
  35. make clean; \
  36. make -C $(DFU_PROJ_BASE) clean; \
  37. make -C $(DFU_PROJ_BASE)/fw clean; \
  38. fi
  39. bootloader: bootloader-clean $(BUILD_TMP)/bootloader.bin
  40. prog-bootloader: bootloader
  41. $(ICEPROG) $(BUILD_TMP)/bootloader.bin
  42. sudo-prog-bootloader: bootloader
  43. @echo 'Executing prog as root!!!'
  44. sudo $(ICEPROG) $(BUILD_TMP)/bootloader.bin
  45. .PHONY: build-mb prog-mb sudo-prog-mb bootloader-clean bootloader prog-bootloader sudo-prog-bootloader