164 lines
5.0 KiB
Makefile
164 lines
5.0 KiB
Makefile
################################################################################
|
|
|
|
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 := xmorca
|
|
SRCDIR := $(PWD)
|
|
|
|
################################################################################
|
|
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=\"$(SRCDIR)/auxcode$(if $(CONFIG_LOTUS_FPGA),_fpga,).bin\"
|
|
CFLAGS += -DCONFIG_AUXCODE_2048_ENABLE=y
|
|
|
|
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
|
|
ifeq ($(CONFIG_BOOT_CONSOLE_OPTIONAL),y)
|
|
$(BOOT).bin: $(BOOT).tmp
|
|
$(Q)cp $(CONFIG_BOOTSTRAP_IMAGE) bootstrap.bin
|
|
$(Q)BOOTSTRAP_SIZE=$$(stat -c%s bootstrap.bin); \
|
|
printf "%08x" $$BOOTSTRAP_SIZE | tac -rs .. | xxd -r -p > middleware.bin; \
|
|
dd if=/dev/zero bs=16 count=1 >> middleware.bin 2>/dev/null; \
|
|
printf "%08x" 0xdeadbeef | tac -rs .. | xxd -r -p >> middleware.bin
|
|
$(Q)cat $(BOOT).tmp middleware.bin bootstrap.bin > $(BOOT).bin
|
|
$(Q)rm -f middleware.bin bootstrap.bin
|
|
$(Q)chmod 754 $(BOOT).bin
|
|
$(Q)cp -fv $@ $(BOOT_OUTDIR)/u-boot-$(SOC).bin
|
|
$(Q)echo "$(BOOT).bin is Ready."
|
|
else
|
|
$(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.
|
|
endif
|
|
|
|
$(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:
|
|
################################################################################
|