• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1################################################################################
2#    Create By Hisilicon
3################################################################################
4
5PWD           = $(shell pwd)
6HW_CROSS_COMPILE = aarch64-himix200-linux-
7TOPDIR        =
8BINIMAGE      = $(TOPDIR)/full-boot.bin
9
10################################################################################
11CC       := $(HW_CROSS_COMPILE)gcc
12AR       := $(HW_CROSS_COMPILE)ar
13LD       := $(HW_CROSS_COMPILE)ld
14OBJCOPY  := $(HW_CROSS_COMPILE)objcopy
15OBJDUMP  := $(HW_CROSS_COMPILE)objdump
16
17
18################################################################################
19BOOT     := u-boot-$(SOC)
20TEXTBASE := 0x48700000
21CFLAGS   :=-Os -fno-builtin -ffreestanding \
22	-D__KERNEL__ -DTEXT_BASE=$(TEXTBASE) \
23	-I$(TOPDIR)/include \
24	-I$(TOPDIR)/drivers/ddr/hisilicon/default \
25	-I$(TOPDIR)/drivers/ddr/hisilicon/$(SOC) \
26	-I$(TOPDIR)/arch/arm/include \
27	-fno-pic  -mstrict-align  -ffunction-sections \
28	-fdata-sections -fno-common -ffixed-r9    \
29	-fno-common -ffixed-x18 -pipe -march=armv8-a \
30	-Wall -Wstrict-prototypes -fno-stack-protector \
31	-D__LINUX_ARM_ARCH__=8 -D__ARM__ \
32	-DCONFIG_HI3569V100 -DCONFIG_MMC -DCONFIG_UFS \
33	$(MKFLAGS) -fno-strict-aliasing
34
35################################################################################
36
37START := start.o
38COBJS := lowlevel_init_v300.o \
39	init_registers.o \
40	sdhci_boot.o \
41	ufs.o \
42	uart.o \
43	ddr_training_impl.o \
44	ddr_training_ctl.o \
45	ddr_training_boot.o \
46	ddr_training_custom.o \
47	ddr_training_console.o \
48	startup.o \
49	image_data.o \
50	div0.o \
51	reset.o
52
53SSRC  := arch/arm/cpu/armv8/$(SOC)/start.S \
54	arch/arm/cpu/armv8/$(SOC)/reset.S \
55	arch/arm/cpu/armv8/$(SOC)/sdhci_boot.c \
56	arch/arm/cpu/armv8/$(SOC)/scsi.c \
57	arch/arm/cpu/armv8/$(SOC)/scsi.h \
58	arch/arm/cpu/armv8/$(SOC)/uart.S \
59	arch/arm/cpu/armv8/$(SOC)/ufs.c \
60	arch/arm/cpu/armv8/$(SOC)/ufs.h \
61	arch/arm/cpu/armv8/$(SOC)/init_registers.c \
62	arch/arm/cpu/armv8/$(SOC)/lowlevel_init_v300.c \
63	drivers/ddr/hisilicon/default/ddr_training_impl.c \
64	drivers/ddr/hisilicon/default/ddr_training_ctl.c \
65	drivers/ddr/hisilicon/default/ddr_training_boot.c \
66	drivers/ddr/hisilicon/default/ddr_training_console.c \
67	drivers/ddr/hisilicon/$(SOC)/ddr_training_custom.c \
68	arch/arm/lib/div0.c \
69	lib/hw_dec/hw_decompress.c \
70	lib/hw_dec/hw_decompress_$(SOC).c \
71	lib/hw_dec/hw_decompress_v2.c \
72	lib/hw_dec/hw_decompress_v2.h
73
74REG := $(wildcard $(TOPDIR)/*.reg $(TOPDIR)/.reg)
75SRC := $(notdir $(SSRC))
76
77################################################################################
78.PHONY: $(BOOT).bin
79$(BOOT).bin: $(BOOT).tmp regfile
80	@dd if=./$(BOOT).tmp of=./tmp1 bs=1 count=64 2>/dev/null
81	@dd if=$(REG) of=./tmp2 bs=10240 conv=sync 2>/dev/null
82	@dd if=./$(BOOT).tmp of=./tmp3 bs=1 skip=10304 2>/dev/null
83	@cat tmp1 tmp2 tmp3 > $(BOOT).bin
84	@rm -f tmp1 tmp2 tmp3
85	@chmod 754 $(BOOT).bin
86	@cp -fv $@ $(TOPDIR)
87	@echo $(BOOT).bin is Ready.
88
89$(BOOT).tmp: $(BOOT).elf
90	$(OBJCOPY) -O srec $< $(BOOT).srec
91	$(OBJCOPY) -j .text -O binary $< $(BOOT).text
92	$(OBJCOPY) --gap-fill=0xff -O binary $< $@
93
94$(BOOT).elf: image_data.gzip $(SRC) $(START) $(COBJS)
95	$(LD) -Bstatic -T u-boot.lds -Ttext $(TEXTBASE) $(START) \
96		$(COBJS) -Map $(BOOT).map -o $@
97	$(OBJDUMP) -d  $@ > $@.asm
98
99.PHONY: regfile
100regfile:
101	@if [ "$(words $(REG))" = "0" ]; then ( \
102		echo '***' Need '.reg' or '*.reg' file in directory $(TOPDIR); \
103		exit 1; \
104	) fi
105	@if [ "$(words $(REG))" != "1" ]; then ( \
106		echo '***' Found multi '.reg' or '*.reg' file in directory $(TOPDIR); \
107		echo '***' Files: $(notdir $(REG)); \
108		exit 1; \
109	) fi
110
111################################################################################
112start.o: start.S
113	$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
114
115# -1 : --fast      -9 : --best
116image_data.gzip: $(BINIMAGE)
117	gzip -fNqc -7 $< > $@
118
119%.o: %.c
120	$(CC) $(CFLAGS) -Wall -Wstrict-prototypes \
121		-fno-stack-protector -o $@ $< -c
122
123%.o: %.S
124	$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
125
126image_data.o: image_data.S image_data.gzip
127	$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
128
129#############################################################################
130
131$(SRC):
132	ln -sf ../../../../../../$(filter %/$@,$(SSRC)) $@
133################################################################################
134TMPS := $(COBJS) start.o $(SRC) \
135	$(BOOT).map $(BOOT).elf $(BOOT).srec $(BOOT).bin $(BOOT).text $(BOOT).tmp \
136	image_data.gzip
137
138distclean: clean
139
140clean:
141	-rm -f $(TMPS)
142
143################################################################################
144.PHONY: clean
145################################################################################
146