################################################################################ # Copyright (c) Hisilicon Technologies Co., Ltd. 2014-2020. All rights reserved. # Description: mmu cache code # Author: SmartMedia_BSP # Create: 2014-06-04 ################################################################################ ARCH ?= armv7-a CROSS_COMPILE ?= arm-v310-linux- ifeq ($(CROSS_COMPILE),) $(error You should define CROSS_COMPILE!) endif BOOT = fbl V = 0 FBL ?= 0 ################################################################################ TOPDIR := . DEFTARGET := $(MAKECMDGOALS) PLATFORM := PHONYS := TEMPS := CC := $(CROSS_COMPILE)gcc AR := $(CROSS_COMPILE)ar LD := $(CROSS_COMPILE)ld OBJCOPY := $(CROSS_COMPILE)objcopy OBJDUMP := $(CROSS_COMPILE)objdump NM := $(CROSS_COMPILE)nm RM := rm DEFCONFIG := $(TOPDIR)/configs/config sinclude $(DEFCONFIG) ARFLAGS := rcs LDFLAGS := CFLAGS := -Wall -nostdinc -mcpu=$(CPU) \ -Os -fno-strict-aliasing -mapcs-frame \ -fno-common -fno-builtin -ffreestanding \ -pipe -marm -mabi=aapcs-linux \ -mno-thumb-interwork \ -fstack-protector-all \ -D__KERNEL__ \ -D__FIRSTBOOT__ \ -g -Werror CFLAGS += -mno-unaligned-access CFLAGS += -I$(TOPDIR)/include \ -I$(TOPDIR)/arm/$(PLATFORM)/include \ -I$(TOPDIR)/arm/include \ -I$(TOPDIR)/libs/secure_c/include \ -I$(TOPDIR)/drivers/flash/include \ -I$(TOPDIR)/drivers/ssa/include \ -I$(TOPDIR)/drivers/otp/api \ -I$(TOPDIR)/drivers/otp/drv # used for securec compile CFLAGS += -DSECUREC_NOT_CALL_LIBC_CORE_API srctree:=. src:=libs/secure_c/source export srctree src ifneq ($(CONFIG_SOCT_REVERSION_SLS_B),) CFLAGS += -DCONFIG_SOCT_SLS_B endif ifneq ($(CONFIG_SOCT_REVERSION_SLS_C),) CFLAGS += -DCONFIG_SOCT_SLS_C endif ifneq ($(findstring $(CONFIG_SOCT_CHIP_REVERSION), "hi3751v811_c"),) CFLAGS += -DCONFIG_SOCT_HI3751V811_C endif ifneq ($(CONFIG_SOCT_CHIP_REVERSION),) CFLAGS += -DCONFIG_SOCT_CHIP_CS ifneq ($(findstring $(CONFIG_SOCT_CHIP_REVERSION), "reserved13_c", "reserved9_c"),) ifeq ($(BOOT_KEY), reserved13_c_sm_release) HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign_c_sm.img RFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign_c_sm.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area_c_sm\.img ROOT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/root_pub_area_c_sm\.img endif ifeq ($(BOOT_KEY), ) HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign_c.img HRFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign_c.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area_c.img endif endif ifneq ($(findstring $(CONFIG_SOCT_CHIP_REVERSION), "reserved13_d", "reserved9_d"),) HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign_d.img HRFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign_d.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area_d.img endif ifneq ($(findstring $(CONFIG_SOCT_CHIP_REVERSION), "reserved13_m"),) ifeq ($(BOOT_KEY), reserved13_m_sm_release) HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign_m_sm.img HRFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign_m_sm.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area_m_sm\.img ROOT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/root_pub_area_m_sm\.img else HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign_m.img HRFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign_m.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area_m.img endif endif else HSLIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hsl_sign.img HRFIMAGE = $(CURDIR)/arm/$(PLATFORM)/boot/hrf_sign.img SOCT_PUB_AREA = $(CURDIR)/arm/$(PLATFORM)/boot/soct_pub_area.img endif CFLAGS += -DCONFIG_HSLIMAGE=\"$(HSLIMAGE)\" \ -DCONFIG_HRFIMAGE=\"$(HRFIMAGE)\" \ -DCONFIG_SOCT_PUB_AREA=\"$(SOCT_PUB_AREA)\" ifneq ($(ROOT_PUB_AREA), ) CFLAGS += -DCONFIG_ROOT_PUB_AREA=\"$(ROOT_PUB_AREA)\" endif #for optimize #CFLAGS += -fno-omit-frame-pointer #-mapcs-frame ASFLAGS := $(CFLAGS) ZBOOT := $(BOOT)z BUILDOBJ := build-obj ifeq ($(V),1) Q := QUIET := else Q := @ QUIET := -s endif AUXIMAGE = $(TOPDIR)/auxcode_sign.img ARCH_AUXIMAGE = $(TOPDIR)/arm/$(PLATFORM)/boot/auxcode_sign.img AUXCODE := $(shell if [ -d $(TOPDIR)/../auxcode ]; then \ echo $(TOPDIR)/../auxcode; \ else if [ -d $(TOPDIR)/auxcode ]; then \ echo $(TOPDIR)/auxcode; \ fi;fi;) #CFLAGS += -DCONFIG_AUXIMAGE=\"$(AUXIMAGE)\" MKFLAGS := $(QUIET) -f $(TOPDIR)/scripts/Makefile.build CLFLAGS := $(QUIET) -f $(TOPDIR)/scripts/Makefile.clean export MKFLAGS CLFLAGS SHELL := $(shell if [ -x "$${BASH}" ]; then echo $${BASH}; \ else if [ -x /bin/bash ]; then echo /bin/bash; \ else echo sh; fi; \ fi) NETPATH := $(TOPDIR)/libs/net export CC AR LD OBJCOPY OBJDUMP RM ARFLAGS LDFLAGS CFLAGS ASFLAGS SHELL NETPATH export PLATFORM TOPDIR BOOT FBL ZBOOT V Q BUILDOBJ DEFCONFIG MAKE RM NM EXPORTCONFIG := ${TOPDIR}/scripts/export.sh INIT_REG := $(wildcard $(TOPDIR)/*.reg $(TOPDIR)/.reg) export INIT_REG ifdef CONFIG_UNIFIED_BOOT BOOTREGS := $(wildcard $(CONFIG_BOOT_REG0) $(CONFIG_BOOT_REG1) $(CONFIG_BOOT_REG2) $(CONFIG_BOOT_REG3) \ $(CONFIG_BOOT_REG4) $(CONFIG_BOOT_REG5) $(CONFIG_BOOT_REG6) $(CONFIG_BOOT_REG7) \ $(CONFIG_BOOT_REG8) $(CONFIG_BOOT_REG9) $(CONFIG_BOOT_REG10) $(CONFIG_BOOT_REG11) \ $(CONFIG_BOOT_REG12) $(CONFIG_BOOT_REG13) $(CONFIG_BOOT_REG14) $(CONFIG_BOOT_REG15) \ $(CONFIG_BOOT_REG16) $(CONFIG_BOOT_REG17) $(CONFIG_BOOT_REG18) $(CONFIG_BOOT_REG19)) ifdef CONFIG_SOCT_UEFIBOOT_SUPPORT BOOTREGS += $(wildcard $(CONFIG_BOOT_REG20) $(CONFIG_BOOT_REG21) $(CONFIG_BOOT_REG22) $(CONFIG_BOOT_REG23) \ $(CONFIG_BOOT_REG24) $(CONFIG_BOOT_REG25) $(CONFIG_BOOT_REG26) $(CONFIG_BOOT_REG27) \ $(CONFIG_BOOT_REG28) $(CONFIG_BOOT_REG29) $(CONFIG_BOOT_REG30) $(CONFIG_BOOT_REG31)) endif REGNUM := $(words $(BOOTREGS)) ASFLAGS += -DREGNUM=$(REGNUM) endif ################################################################################ SRCDIR := CONFIGINC := $(TOPDIR)/include/config.h DEFMAKEFILE := $(TOPDIR)/configs/Makefile BOOTPATH := arm/$(PLATFORM)/boot/ ifdef CONFIG_UNIFIED_BOOT LINKLDS := arm/$(PLATFORM)/boot_unify.lds else LINKLDS := arm/$(PLATFORM)/boot.lds endif PLATFORMLDS := arm/$(PLATFORM)/boot/platform.lds export LINKLDS PLATFORMLDS #LIBS := arm/ libs/ drivers/ common/ app/ LIBS := arm/ libs/ drivers/ common/ ifeq ($(CONFIG_TEST),y) LIBS += testcode/ endif #ZLIBS := arm/compress/ arm/lib/ #ZLIBS := arm/lib/ LIBS := $(addsuffix $(BUILDOBJ).o,$(addprefix $(TOPDIR)/,$(LIBS))) ZLIBS := $(addsuffix $(BUILDOBJ).o,$(addprefix $(TOPDIR)/,$(ZLIBS))) ifeq ($(CONFIG_DDR_TRAINING_V2),y) DDR_TRAIN := $(shell if [ -d $(TOPDIR)/drivers/ddr/$(PLATFORM) ]; then \ echo drivers/ddr/$(PLATFORM); \ else \ echo drivers/ddr/default; \ fi;) DDR_CMD_BIN := $(DDR_TRAIN)/cmd_bin DDRLIBS := $(addsuffix $(BUILDOBJ).o,$(addprefix $(TOPDIR)/,$(DDR_TRAIN)/)) endif TOOLPATH := tools DEFLATE := $(TOPDIR)/$(TOOLPATH)/deflate MKBOOTARGS := $(TOPDIR)/$(TOOLPATH)/mkbootargs MKSYM := $(TOPDIR)/$(TOOLPATH)/mksym export MKSYM LIBAPPS := INPUTFLAGS = ${MAKEFLAGS} export INPUTFLAGS ALL_CONFIG := $(notdir $(wildcard $(TOPDIR)/configs/*_config)) ALL_PLATRORM := $(subst _config,,$(ALL_CONFIG)) include $(TOPDIR)/scripts/Makefile.define ################################################################################ sinclude $(DEFMAKEFILE) TGTCONFIG := $(TOPDIR)/configs/$(DEFTARGET)_config PHONYS += help help: @echo "make [platform] [options]" @echo "platforms:" @for ix in $(ALL_PLATRORM); do ( \ _MSG=" $${ix} "; MSG=$${_MSG:0:40}; \ echo -n "$${MSG}"; head -n 1 ./configs/$${ix}_config; \ ) done @echo ; ################################################################################ TEMPS += $(BOOT).bin $(BOOT).text $(BOOT).srec PHONYS += $(BOOT).bin $(BOOT).bin: $(BOOT).elf $(call show_cmd,OBJCOPY,$@) $(Q)$(OBJCOPY) -O srec $(BOOT).elf $(BOOT).srec $(Q)$(OBJCOPY) -j .text -O binary $(BOOT).elf $(BOOT).text $(Q)$(OBJCOPY) -R .comment --gap-fill=0xff -O binary $(BOOT).elf $@ $(call show_cmd,BOOT,$@) @echo "Config File: $(DEFTARGET)" @echo "Register: $(notdir $(INIT_REG))" @echo "Entry Point: $(TEXT_BASE)" @echo " Image $@ is ready" TEMPS += $(ZBOOT).elf $(ZBOOT).bin data.z $(ZBOOT).text \ $(ZBOOT).srec $(BOOT).elf ifeq ($(CONFIG_COMPRESS),y) $(BOOT).elf: check_reg $(CONFIGINC) auxcode $(MKSYM) $(ZLIBS) $(LINKLDS) $(PLATFORMLDS) $(Q)$(MAKE) $(MKFLAGS) SRCDIR="$(BOOTPATH)" LIBS="$(ZLIBS)" $(BOOT).elf $(ZLIBS): data.z data.z: $(LIBS) $(LINKLDS) $(PLATFORMLDS) $(DEFLATE) $(DDRLIBS) force $(Q)$(MAKE) $(MKFLAGS) SRCDIR="$(BOOTPATH)" LIBS="$(LIBS) $(LIBAPPS)" \ $(ZBOOT).elf $(call show_cmd,OBJCOPY,$(ZBOOT).elf) $(Q)$(OBJCOPY) -O srec $(ZBOOT).elf $(ZBOOT).srec $(Q)$(OBJCOPY) -j .text -O binary $(ZBOOT).elf $(ZBOOT).text $(Q)$(OBJCOPY) -R .comment --gap-fill=0xff -O binary $(ZBOOT).elf $(ZBOOT).bin $(call show_cmd,DEFLATE,$@) $(Q)$(DEFLATE) $(ZBOOT).bin $@ else $(BOOT).elf: check_reg $(CONFIGINC) $(MKSYM) $(LIBS) $(LINKLDS) $(PLATFORMLDS) $(DDRLIBS) force $(Q)$(MAKE) $(MKFLAGS) SRCDIR="$(BOOTPATH)" LIBS="$(LIBS) $(LIBAPPS)" CONFIG_AUXIMAGE=\"$(AUXIMAGE)\" $(BOOT).elf # $(Q)$(MAKE) $(MKFLAGS) SRCDIR="$(BOOTPATH)" LIBS="$(LIBS) $(LIBAPPS)" $(BOOT).elf endif $(TOPDIR)/$(TOOLPATH)/%: $(call show_cmd,TOOLS,$@) $(Q)$(MAKE) -s SRCDIR="$(TOPDIR)/$(TOOLPATH)" -C $(@D) $(@F) %/$(BUILDOBJ).o: $(CONFIGINC) ddr_bin force $(Q)$(MAKE) $(MKFLAGS) SRCDIR="$(@D)/" $@ $(DEFCONFIG): $(TGTCONFIG) $(call show_cmd,GEN,$(DEFCONFIG)) $(Q)$(SHELL) ${EXPORTCONFIG} export "$(TGTCONFIG)" "$(DEFCONFIG)" "$(CONFIGINC)" INPUTFLAGS $(DEFMAKEFILE): $(TGTCONFIG) $(call show_cmd,GEN,$(DEFMAKEFILE)) $(call export_make,$(DEFTARGET)) $(ALL_CONFIG): $(call show_cmd,GEN,$(DEFCONFIG)) $(Q)$(SHELL) ${EXPORTCONFIG} export "$(TOPDIR)/configs/$(@)" "$(DEFCONFIG)" "$(CONFIGINC)" INPUTFLAGS $(call show_cmd,GEN,$(DEFMAKEFILE)) $(call export_make,$(subst _config,,$@)) .PHONY: auxcode auxcode: ifdef CONFIG_UNIFIED_BOOT ifeq ($(CONFIG_AUXCODE_COMPILE_SUPPORT),y) if [ -d $(AUXCODE) ]; then \ make -C $(AUXCODE) ARCH=armv7-a CROSS_COMPILE=$(CROSS_COMPILE) O=$(O); \ cp -rf $(AUXCODE)/auxcode_sign.img $(ARCH_AUXIMAGE); \ fi; endif cp -rf $(ARCH_AUXIMAGE) $(AUXIMAGE); endif .PHONY: check_reg check_reg: @if [ "$(words $(INIT_REG))" = "0" ]; then ( \ echo '***' Need '.reg' or '*.reg' file in directory $(TOPDIR); \ exit 1; \ ) fi ifndef CONFIG_UNIFIED_BOOT @if [ "$(words $(INIT_REG))" != "1" ]; then ( \ echo '***' Found multi '.reg' or '*.reg' file in directory $(TOPDIR); \ echo '***' Files: $(notdir $(INIT_REG)); \ exit 1; \ ) fi endif PHONYS += tools tools:; force:; ddr_bin: ifeq ($(CONFIG_DDR_TRAINING_V2),y) $(MAKE) -C $(DDR_CMD_BIN) PLATFORM=$(PLATFORM) TOPDIR=$(shell pwd) ARCH=$(ARCH) ddr_cmd.bin endif ################################################################################ auxcode.clean: ifdef CONFIG_UNIFIED_BOOT ifeq ($(CONFIG_AUXCODE_COMPILE_SUPPORT),y) @test -d $(AUXCODE) && make -C $(AUXCODE) ARCH=armv7-a CROSS_COMPILE=$(CROSS_COMPILE) clean endif @rm -f $(AUXIMAGE) endif PHONYS += clean $(TOPDIR)/$(TOOLPATH)/clean clean: $(addsuffix .clean,$(LIBS) $(ZLIBS) $(DDRLIBS)) $(TOPDIR)/$(TOOLPATH)/clean auxcode.clean $(Q)$(RM) -f $(TEMPS) $(Q)test ! -d "$(BOOTPATH)" || $(MAKE) $(CLFLAGS) SRCDIR="$(BOOTPATH)" clean ifeq ($(CONFIG_DDR_TRAINING_V2),y) $(Q) $(MAKE) -C $(DDR_CMD_BIN) --no-print-directory clean endif $(TOPDIR)/$(TOOLPATH)/clean: $(call show_cmd,CLEAN,$(@D)) $(Q)$(MAKE) -s SRCDIR="$(TOPDIR)/$(TOOLPATH)" -C $(TOOLPATH) clean %/$(BUILDOBJ).o.clean: $(call show_cmd,CLEAN,$(@D)) $(Q)$(MAKE) $(CLFLAGS) SRCDIR="$(@D)/" clean PHONYS += distclean distclean: clean $(Q)$(RM) -f $(DEFCONFIG) $(CONFIGINC) $(DEFMAKEFILE) ################################################################################ .PHONY: $(PHONYS) ################################################################################