Makefile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # Copyright (c) 2020 StarFiveTech, Inc
  2. # compiler tool chain
  3. CROSSCOMPILE?=riscv64-unknown-elf-
  4. CC=${CROSSCOMPILE}gcc
  5. LD=${CROSSCOMPILE}ld
  6. OBJCOPY=${CROSSCOMPILE}objcopy
  7. OBJDUMP=${CROSSCOMPILE}objdump
  8. TARGET = ddrinit
  9. LINKER_SCRIPT := ddrinit.lds
  10. MAP_FILE := ddrinit.map
  11. #DDR_SPEED 1:1600. 2:2133 3:2666 4 :3200
  12. DDR_SPEED = 25
  13. INCLUDE_DIR = -I. -I../boot\
  14. -I../common\
  15. -I../gpio\
  16. -I../spi\
  17. -I../system\
  18. -I../uart \
  19. -I../timer \
  20. -I../sdio\
  21. -I../gpt\
  22. -I../ddrphy_cfg/memory/jedec_lpddr4_16gb_3200/regconfig_sim_1066_cl20_bl16
  23. # compiler options
  24. RISCV_ARCH := rv64imafdc
  25. RISCV_ABI := lp64d
  26. CFLAGS += -O2 -g -c -Wall
  27. CFLAGS += -march=$(RISCV_ARCH)
  28. CFLAGS += -mabi=$(RISCV_ABI)
  29. CFLAGS += -mcmodel=medany
  30. CFLAGS += $(INCLUDE_DIR)
  31. CCASFLAGS= -mcmodel=medany -mexplicit-relocs
  32. LDFLAGS = -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI)-T $(LINKER_SCRIPT) -nostartfiles --specs=nano.specs -Wl,-Map,$(MAP_FILE)
  33. # object list
  34. OBJECTLIST=../boot/start.o \
  35. ../boot/bootmain.o \
  36. ../boot/trap.o \
  37. ../uart/uart.o \
  38. ../uart/cmd.o \
  39. ../uart/xmodem.o \
  40. ../common/util.o \
  41. ../common/ctype.o \
  42. ../gpio/gpio.o \
  43. ../spi/spi.o \
  44. ../spi/spi_probe.o \
  45. ../spi/cadence_qspi.o \
  46. ../spi/spi_flash.o \
  47. ../spi/cadence_qspi_apb.o \
  48. ../timer/timer.o \
  49. ../sdio/bouncebuf.o \
  50. ../sdio/dw_mmc.o \
  51. ../sdio/mmc.o \
  52. ../sdio/mmc_write.o \
  53. ../sdio/sdio.o \
  54. ../gpt/gpt.o \
  55. ../ddrphy_cfg/regconfig.h.sim_PHY.o \
  56. ../ddrphy_cfg/regconfig.h.sim_PI.o \
  57. ../ddrphy_cfg/lpddr4_1600_cl28_bl16/regconfig_pi_start.o \
  58. ../ddrc_cfg/lpddr4_1066_cl20_bl16/orbit_boot_1066.o
  59. ifeq ($(DDR_SPEED), 1)
  60. OBJECTLIST +=../ddrc_cfg/orbit_boot_800.o
  61. else ifeq ($(DDR_SPEED), 2)
  62. OBJECTLIST +=../ddrc_cfg/orbit_boot_1066.o
  63. else ifeq ($(DDR_SPEED), 3)
  64. OBJECTLIST +=../ddrc_cfg/orbit_boot_1333.o
  65. else ifeq ($(DDR_SPEED), 4)
  66. OBJECTLIST +=../ddrc_cfg/orbit_boot_1600.o
  67. endif
  68. all:$(TARGET).elf $(TARGET).bin $(TARGET).asm
  69. $(TARGET).elf:$(OBJECTLIST)
  70. @echo ================================================================================
  71. $(CC) -o $(TARGET).elf $(LDFLAGS) $(OBJECTLIST)
  72. @echo $(TARGET).elf LINK SUCCEED!
  73. %.bin: %.elf
  74. $(OBJCOPY) -O binary $^ $@
  75. @if [ -f fsz.sh ]; then ./fsz.sh $(TARGET).bin; fi
  76. %.asm: %.elf
  77. $(OBJDUMP) -S $^ > $@
  78. %.dtb: %.dts
  79. dtc $^ -o $@ -O dtb
  80. %.o: %.S
  81. $(CC) $(CFLAGS) $(CCASFLAGS) -c $< -o $@
  82. %.o: %.c
  83. ifeq ($(DDR_SPEED), 1)
  84. echo #
  85. else ifeq ($(DDR_SPEED), 2)
  86. echo ##
  87. else ifeq ($(DDR_SPEED), 3)
  88. echo ###
  89. else ifeq ($(DDR_SPEED), 4)
  90. echo ####
  91. endif
  92. echo ddr_speed $(DDR_SPEED)
  93. $(CC) $(CFLAGS) -o $@ -c $<
  94. .PHONY: clean
  95. clean:
  96. rm -f $(OBJECTLIST) $(TARGET).bin *.asm