1################################################################################ 2ifeq ($(TOPDIR),) 3TOPDIR := ../../../../.. 4endif 5sinclude $(TOPDIR)/arch/arm/cpu/$(CPU)/config.mk # include architecture dependend rules 6 7PWD := $(shell pwd) 8OPPDIR := $(subst $(TOPDIR),,$(PWD)) 9 10CC := $(CROSS_COMPILE)gcc 11AR := $(CROSS_COMPILE)ar 12LD := $(CROSS_COMPILE)ld 13OBJCOPY := $(CROSS_COMPILE)objcopy 14OBJDUMP := $(CROSS_COMPILE)objdump 15 16################################################################################ 17DDR_CMD := ddr_cmd 18sinclude $(TOPDIR)/include/config/auto.conf #include CONFIG_ARM/CONFIG_ARM64 define 19CMD_TEXT_BASE := $(shell grep '^\#define.*DDR_TRAINING_RUN_STACK' $(TOPDIR)/drivers/ddr/hisilicon/$(SOC)/ddr_training_custom.h|awk '{print $$3}') 20STACK_POINT := $(CMD_TEXT_BASE) 21 22COBJS := ddr_training_uart.o ddr_training_custom.o ddr_training_cmd.o ddr_training_impl.o ddr_training_ctl.o ddr_training_console.o 23DEPS := $(COBJS:.o=.d) $(START:.o=.d) 24SSRC := ddr_training_impl.c ddr_training_ctl.c ddr_training_console.c 25 26CFLAGS := -Os -pipe \ 27 -DCMD_TEXT_BASE=$(CMD_TEXT_BASE) -DSTACK_POINT=$(STACK_POINT) -DDDR_TRAINING_CMD -D__KERNEL__ -D__UBOOT__ \ 28 -fno-builtin -ffreestanding -I$(TOPDIR)/arch/$(ARCH)/include -I$(TOPDIR)/include \ 29 -I../ -I./ -I$(TOPDIR)/drivers/ddr/hisilicon/$(SOC)/ 30 31CFLAGS += $(PLATFORM_RELFLAGS) $(PLATFORM_CPPFLAGS) 32 33ifeq ("$(CONFIG_ARM64)","y") 34START := cmd_entry_64.o 35LDS_SCRIPT := ddr_cmd_64.lds 36CFLAGS += -DCONFIG_ARM64 37else 38START := cmd_entry_32.o 39LDS_SCRIPT := ddr_cmd_32.lds 40endif 41 42################################################################################ 43 44LINK_FILES = $(SSRC) ddr_training_custom.c 45 46.PHONY: $(DDR_CMD).bin 47all: $(DDR_CMD).bin 48 #remove soft link files 49 @rm -f $(LINK_FILES) *.o *.d *.elf *.map *.srec 50 51$(DDR_CMD).bin: $(DDR_CMD).elf 52 $(OBJCOPY) -O srec $(PWD)/$(DDR_CMD).elf $(DDR_CMD).srec 53 $(OBJCOPY) --gap-fill=0xff -O binary $(PWD)/$(DDR_CMD).elf $@ 54 55$(DDR_CMD).elf: $(START) $(COBJS) $(LDS_SCRIPT) 56 #@echo CMD_TEXT_BASE=$(CMD_TEXT_BASE) 57 $(LD) -Bstatic -T $(LDS_SCRIPT) -Ttext $(CMD_TEXT_BASE) $(START) \ 58 $(COBJS) $(AOBJS) -Map $(DDR_CMD).map -o $@ 59 60$(SSRC): 61 rm -rf $@ 62 rm -rf ddr_training_custom.c 63 ln -sf ../$@ $@ 64 ln -sf $(TOPDIR)/drivers/ddr/hisilicon/$(SOC)/ddr_training_custom.c ddr_training_custom.c 65 66.PHONY: clean 67clean: 68 @rm -vf *.o *.d *.elf *.map *.srec $(LINK_FILES) $(DDR_CMD).bin 69 70%.o : %.S 71 $(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ -c $*.S 72 73%.o : %.c 74 $(CC) $(CFLAGS) -Wall -Wstrict-prototypes -fno-stack-protector \ 75 -o $@ -c $*.c 76 77ifneq ("$(MAKECMDGOALS)","clean") 78sinclude $(DEPS) 79endif 80 81%.d : %.c 82 set -e; $(CC) $(CFLAGS) -MM $< | sed 's,$*.o:,$*.o $*.d:,g' > $@ 83 84%.d : %.S 85 set -e; $(CC) $(CFLAGS) -MM $< | sed 's,$*.o:,$*.o $*.d:,g' > $@ 86 87################################################################################ 88