• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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