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