Makefile 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. BOARD ?= icebreaker
  2. CROSS ?= riscv-none-embed-
  3. CC = $(CROSS)gcc
  4. OBJCOPY = $(CROSS)objcopy
  5. ICEPROG = iceprog
  6. DFU_UTIL = dfu-util
  7. BOARD_DEFINE=BOARD_$(shell echo $(BOARD) | tr a-z\- A-Z_)
  8. CFLAGS=-Wall -Os -march=rv32i -mabi=ilp32 -ffreestanding -flto -nostartfiles -fomit-frame-pointer -Wl,--gc-section --specs=nano.specs -D$(BOARD_DEFINE)
  9. HEADERS_common=\
  10. config.h \
  11. console.h \
  12. led.h \
  13. mini-printf.h \
  14. spi.h \
  15. usb_hw.h \
  16. usb_priv.h \
  17. usb_proto.h \
  18. utils.h
  19. SOURCES_common=\
  20. start.S \
  21. console.c \
  22. led.c \
  23. mini-printf.c \
  24. spi.c \
  25. usb.c \
  26. usb_ctrl_ep0.c \
  27. usb_ctrl_std.c \
  28. utils.c
  29. HEADERS_dfu=\
  30. usb_dfu.h \
  31. usb_dfu_proto.h \
  32. usb_str_dfu.gen.h
  33. SOURCES_dfu=\
  34. fw_dfu.c \
  35. usb_dfu.c \
  36. usb_desc_dfu.c
  37. HEADERS_app=\
  38. usb_dfu_rt.h \
  39. usb_dfu_proto.h \
  40. usb_str_app.gen.h
  41. SOURCES_app=\
  42. fw_app.c \
  43. usb_dfu_rt.c \
  44. usb_desc_app.c
  45. all: boot_dfu.hex boot_app.hex fw_dfu.bin fw_app.bin
  46. boot_dfu.elf: lnk-boot.lds boot.S
  47. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-boot.lds,--strip-debug -DFLASH_APP_ADDR=0x00060000 -o $@ boot.S
  48. boot_app.elf: lnk-boot.lds boot.S
  49. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-boot.lds,--strip-debug -DFLASH_APP_ADDR=0x000a0000 -o $@ boot.S
  50. fw_dfu.elf: lnk-app.lds $(HEADERS_dfu) $(SOURCES_dfu) $(HEADERS_common) $(SOURCES_common)
  51. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-app.lds,--strip-debug -o $@ $(SOURCES_common) $(SOURCES_dfu)
  52. fw_app.elf: lnk-app.lds $(HEADERS_app) $(SOURCES_app) $(HEADERS_common) $(SOURCES_common)
  53. $(CC) $(CFLAGS) -Wl,-Bstatic,-T,lnk-app.lds,--strip-debug -o $@ $(SOURCES_common) $(SOURCES_app)
  54. %.hex: %.bin
  55. ./bin2hex.py $< $@
  56. %.bin: %.elf
  57. $(OBJCOPY) -O binary $< $@
  58. usb_str_%.gen.h: usb_str_%.txt
  59. ./usb_gen_strings.py $< $@ $(BOARD)
  60. prog_dfu: fw_dfu.bin
  61. $(ICEPROG) -o 384k $<
  62. prog_app: fw_app.bin
  63. $(ICEPROG) -o 640k $<
  64. dfuprog_app: fw_app.bin
  65. ifeq ($(DFU_SERIAL),)
  66. @echo "[!] DFU_SERIAL not defined"
  67. else
  68. $(DFU_UTIL) -R -S $(DFU_SERIAL) -a 1 -D $<
  69. endif
  70. clean:
  71. rm -f *.bin *.hex *.elf *.o *.gen.h
  72. .PHONY: prog_dfu prog_app clean