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