163 lines
5.0 KiB
Makefile
Executable File
163 lines
5.0 KiB
Makefile
Executable File
################################################################################
|
|
|
|
SHELL := /bin/bash
|
|
PWD = $(shell pwd)
|
|
HW_CROSS_COMPILE = $(CROSS_COMPILE)
|
|
BOOT_TOPDIR ?= $(PWD)/../../../../../
|
|
BOOT_OUTDIR ?= $(BOOT_TOPDIR)
|
|
|
|
include $(BOOT_OUTDIR)/include/autoconf.mk
|
|
include $(BOOT_OUTDIR)/include/config/auto.conf
|
|
|
|
GZIP ?= $(if $(wildcard $(BOOT_TOPDIR)/../../../tools/utils/bin/gzip), $(BOOT_TOPDIR)/../../../tools/utils/bin/gzip, $(BOOT_TOPDIR)/tools/gzip)
|
|
SOC := xmfalcon
|
|
SRCDIR := $(PWD)
|
|
DDR_TYPE ?= $(shell \
|
|
ddr=`dd if=.reg bs=1 skip=64 count=64 | \
|
|
xxd -p | sed ':label;N;s/\n//g;b label' | \
|
|
sed 's/000*/0a/g' | xxd -r -p`; \
|
|
echo $${ddr,,} | sed -n 's/.*_\(.*ddr[3,4]\)_.*/\1/gp')
|
|
|
|
$(info DDR_TYPE=$(DDR_TYPE))
|
|
$(info SHELL=$(SHELL))
|
|
|
|
################################################################################
|
|
CC := $(HW_CROSS_COMPILE)gcc
|
|
AR := $(HW_CROSS_COMPILE)ar
|
|
LD := $(HW_CROSS_COMPILE)ld
|
|
OBJCOPY := $(HW_CROSS_COMPILE)objcopy
|
|
|
|
|
|
################################################################################
|
|
.PHONY: all $(BOOT).bin
|
|
BOOT := u-boot
|
|
TEXTBASE := $(CONFIG_SYS_TEXT_BASE_ORI)
|
|
|
|
CFLAGS :=-Os -fno-builtin -ffreestanding \
|
|
-D__KERNEL__ -DTEXT_BASE=$(TEXTBASE) \
|
|
-I$(BOOT_TOPDIR)/include \
|
|
-I$(BOOT_OUTDIR)/include \
|
|
-I$(BOOT_TOPDIR)/arch/arm/include \
|
|
-I$(BOOT_TOPDIR)/lib/hw_dec \
|
|
-fno-pic -ffunction-sections \
|
|
-fdata-sections -fno-common -ffixed-r9 \
|
|
-fno-common -pipe -march=armv7-a \
|
|
-Wall -Wstrict-prototypes -fno-stack-protector \
|
|
-D__LINUX_ARM_ARCH__=7 -D__ARM__ \
|
|
-DCONFIG_MMC\
|
|
$(MKFLAGS) -fno-strict-aliasing \
|
|
$(EXTRA_CFLAGS) \
|
|
|
|
|
|
UBOOT_Z_LDS := u-boot.lds
|
|
|
|
################################################################################
|
|
|
|
START := start.o
|
|
COBJS := uart.o \
|
|
startup.o \
|
|
image_data.o \
|
|
reset.o \
|
|
exceptions.o \
|
|
time.o \
|
|
tail.o
|
|
|
|
SSRC := \
|
|
lotus/hw_dec/hw_decompress.c \
|
|
lotus/hw_dec/hw_decompress_$(SOC).c \
|
|
lotus/hw_dec/hw_decompress_v1.c \
|
|
lotus/hw_dec/hw_decompress_v1.h \
|
|
|
|
SRC := $(notdir $(SSRC))
|
|
|
|
REG := $(wildcard *.reg .reg)
|
|
IMAGE_DATA_Z := image_data.gzip
|
|
|
|
CFLAGS += -DCONFIG_BOOTREG_DEFAULT=\"$(BOOT_OUTDIR)/.reg\"
|
|
CFLAGS += -DCONFIG_AUXIMAGE=$(if $(AUXCODE_IMAGE),\"$(AUXCODE_IMAGE)\",\"$(SRCDIR)/auxcode_$(DDR_TYPE).bin\")
|
|
CFLAGS += -DCONFIG_AUXCODE_2048_ENABLE=y
|
|
|
|
LBIST_TEST_PATTERN_IMAGE_SIZE = $(shell wc -c < $(SRCDIR)/lbist_test_pattern.bin)
|
|
CFLAGS += -DCONFIG_LBIST_TEST_PATTERN_IMAGE=\"$(SRCDIR)/lbist_test_pattern.bin\"
|
|
CFLAGS += -DCONFIG_LBIST_TEST_PATTERN_IMAGE_SIZE=$(LBIST_TEST_PATTERN_IMAGE_SIZE)
|
|
CFLAGS += -DCONFIG_LBIST_TEST_PATTERN_HASH_IMAGE=\"$(SRCDIR)/lbist_test_pattern_sha256.bin\"
|
|
|
|
CFLAGS += -DCONFIG_MCU_FW_IMAGE=\"$(if $(wildcard $(BOOT_OUTDIR)/qs_mcu.bin),$(BOOT_OUTDIR)/qs_mcu.bin,$(SRCDIR)/qs_mcu.bin)\"
|
|
|
|
################################################################################
|
|
.PHONY: all $(BOOT).bin
|
|
all: $(BOOT).bin
|
|
$(BOOT).bin: $(BOOT).tmp
|
|
$(Q)cat $(BOOT).tmp > $(BOOT).bin
|
|
$(Q)chmod 754 $(BOOT).bin
|
|
$(Q)cp -fv $@ $(BOOT_OUTDIR)/u-boot-$(SOC).bin
|
|
$(Q)echo $(BOOT).bin is Ready.
|
|
|
|
$(BOOT).tmp: $(BOOT).elf
|
|
$(OBJCOPY) -O srec $< $(BOOT).srec
|
|
$(OBJCOPY) -j .text -O binary $< $(BOOT).text
|
|
$(OBJCOPY) --gap-fill=0xff -O binary $< $@
|
|
|
|
$(BOOT).elf: $(IMAGE_DATA_Z) $(SRC) $(START) $(COBJS) $(UBOOT_Z_LDS)
|
|
$(LD) -Bstatic -T $(UBOOT_Z_LDS) -Ttext $(TEXTBASE) $(START) \
|
|
$(COBJS) -Map $(BOOT).map -o $@
|
|
$(OBJDUMP) -d $@ > $@.asm
|
|
|
|
.PHONY: regfile
|
|
regfile:
|
|
@if [ "$(words $(REG))" = "0" ]; then ( \
|
|
echo '***' Need '.reg' or '*.reg' file in directory $(PWD); \
|
|
exit 1; \
|
|
) fi
|
|
@if [ "$(words $(REG))" != "1" ]; then ( \
|
|
echo '***' Found multi '.reg' or '*.reg' file in directory $(PWD); \
|
|
echo '***' Files: $(notdir $(REG)); \
|
|
exit 1; \
|
|
) fi
|
|
|
|
################################################################################
|
|
$(START): start.S regfile
|
|
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
|
|
|
|
# -1 : --fast -9 : --best
|
|
$(IMAGE_DATA_Z): $(BINIMAGE)
|
|
ifneq ($(CONFIG_LOTUS_GZIP_BOOT),)
|
|
$(GZIP) -fNqc -7 $< > $@
|
|
else
|
|
cp $< $@
|
|
endif
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -Wall -Wstrict-prototypes \
|
|
-fno-stack-protector -o $@ $< -c
|
|
|
|
%.o: %.S
|
|
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
|
|
|
|
image_data.o: image_data.S $(IMAGE_DATA_Z)
|
|
$(CC) -D__ASSEMBLY__ $(CFLAGS) -o $@ $< -c
|
|
|
|
#############################################################################
|
|
|
|
$(SRC):
|
|
ln -sf $(BOOT_TOPDIR)/$(filter %/$@,$(SSRC)) $@
|
|
################################################################################
|
|
TMPS := $(COBJS) $(START) $(SRC) \
|
|
$(BOOT).map $(BOOT).elf $(BOOT).elf.asm $(BOOT).srec $(BOOT).bin $(BOOT).text $(BOOT).tmp \
|
|
$(IMAGE_DATA_Z)
|
|
|
|
cmd_rm_files = @echo 'RM $(1)';$(shell [[ -n "$(1)" && "$(1)" != "*" ]] && rm -f $(1))
|
|
|
|
.PHONY: clean distclean
|
|
|
|
distclean: clean
|
|
clean:
|
|
$(call cmd_rm_files, $(REG))
|
|
$(call cmd_rm_files, $(TMPS))
|
|
$(call cmd_rm_files, $(SRC))
|
|
|
|
################################################################################
|
|
.PHONY: clean
|
|
FORCE:
|
|
################################################################################
|