# WARNING: For two multi stage bootloader to compile makefile must run from the # bootloader directory otherwise it will not link! Please take this in to # consideration when modifying this makefile and build process. # Project Root Directory PROOT := $(shell cd ../../../ ; /bin/pwd) DEBUG ?= y # we always have to build at least 2 stage bootloader. MULTI_STAGE flag # is no longer applicable BLD_TARGET = bootloader # move BUILD_SHMOO to makefile as one of build options. BUILD_SHMOO ?= n CFG_PROFILE ?= 1 ifeq ($(AOV_SDRAM_1G),y) DDR_DEV_TECH_1GBYTE = 0x2 else DDR_DEV_TECH_1GBYTE = 0x3 endif # use new ddr40phy shmoo ENABLE_NEW_SHMOO ?=y # Dram scrambling test option. A0/A1 Multistage bootloader only. ENABLE_BOOT_SCRAMBLE_DRAM ?= n # complie in BSP firmware ENABLE_BSEC=n include $(PROOT)/dta/build/platform.inc MAGNUM = $(PROOT)/magnum BSP = $(PROOT)/rockford/bsp LIBDIR = $(PROOT)/dta/lib DTADIR = $(PROOT)/dta BLDDIR = $(PROOT)/dta/src/bootloader7574 CFLAGS += -ffunction-sections CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER) CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE ifeq ($(strip $(CFG_PROFILE)),1) DDR_FREQ_MHZ ?= 533 CFLAGS += -DPROFILE=1 \ -DCPU_MDIV=8 \ -DAVD_MDIV=15 \ -DAVD_CPU_MDIV=15 \ -DDSP_MDIV=15 \ -DSCB_MDIV=12 endif ifeq ($(strip $(CFG_PROFILE)),2) DDR_FREQ_MHZ ?= 800 CFLAGS += -DPROFILE=2 \ -DCPU_MDIV=6 \ -DAVD_MDIV=12 \ -DAVD_CPU_MDIV=12 \ -DDSP_MDIV=8 \ -DSCB_MDIV=12 endif ifeq ($(strip $(CFG_PROFILE)),3) DDR_FREQ_MHZ ?= 933 CFLAGS += -DPROFILE=3 \ -DCPU_MDIV=5 \ -DAVD_MDIV=10 \ -DAVD_CPU_MDIV=8 \ -DDSP_MDIV=8 \ -DSCB_MDIV=11 endif ifeq ($(strip $(CFG_PROFILE)),4) #RLQ, need to get right settings for 400 MHz DDR_FREQ_MHZ ?= 400 CFLAGS += -DPROFILE=4 \ -DCPU_MDIV=8 \ -DAVD_MDIV=15 \ -DAVD_CPU_MDIV=15 \ -DDSP_MDIV=15 \ -DSCB_MDIV=12 endif ifeq ($(strip $(CFG_PROFILE)),5) DDR_FREQ_MHZ ?= 667 #RLQ, need to get right settings for 667 MHz CFLAGS += -DPROFILE=5 \ -DCPU_MDIV=8 \ -DAVD_MDIV=15 \ -DAVD_CPU_MDIV=15 \ -DDSP_MDIV=15 \ -DSCB_MDIV=12 endif CFLAGS += -DMEMC_0_DEV_TECH=$(DDR_DEV_TECH_1GBYTE) CFLAGS += -DMEMC_0_DDR_FREQ=$(DDR_FREQ_MHZ) CFLAGS += -DMEMC_0_DDR_WIDTH=MEMC_DDR_16BIT CFLAGS += -DMEMC_0_DDR_MODE=MEMC_MODE_DDR3 ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y) CFLAGS += -DBOOT_SCRAMBLE_DRAM=1 endif CFLAGS += -I$(MAGNUM)/basemodules/chp/$(BCHP_CHIP)/rdb/$(BCHP_VER_LOWER) \ -I$(MAGNUM)/basemodules/chp \ -I$(MAGNUM)/basemodules/std \ -I$(MAGNUM)/basemodules/std/config \ -I$(MAGNUM)/basemodules/std/types/ucos_ii \ -I$(MAGNUM)/basemodules/err \ -I$(MAGNUM)/basemodules/dbg \ -I$(MAGNUM)/basemodules/reg \ -I$(MAGNUM)/commonutils/lst \ CFLAGS += -I$(BSP)/bcm9$(BCHP_CHIP)/no-os/src/sde \ -I$(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/include \ -I$(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src CFLAGS += -I$(DTADIR)/src -I$(DTADIR)/src/z ifeq ($(HAS_STANDBY),y) CFLAGS += -DCONFIG_STANDBY -DUSERIO_ID=$(USERIO_ID) endif S1_SRC := bls1.S XMODEM_SRC := $(DTADIR)/src/xmodem.c Z_SRC := $(DTADIR)/src/z/adler32.c \ $(DTADIR)/src/z/crc32.c \ $(DTADIR)/src/z/inffast.c \ $(DTADIR)/src/z/inflate.c \ $(DTADIR)/src/z/inftrees.c \ $(DTADIR)/src/z/zutil.c BLD_SRC := bls2.S stage2.c clocks.c fast_heap.c $(XMODEM_SRC) $(Z_SRC) ifeq (${HAS_STANDBY},y) BLD_SRC += cir.c endif S1_OBJ := $(subst .S,.o,$(filter %.S, $(S1_SRC))) $(subst .c,.o, $(filter %.c, $(S1_SRC))) BLD_OBJ := $(patsubst %.S,%.o,$(filter %.S,$(BLD_SRC))) $(patsubst %.s,%.o,$(filter %.s,$(BLD_SRC))) $(patsubst %.c,%.o,$(filter %.c,$(BLD_SRC))) BLD_DEP := $(patsubst %.o,%.d,$(filter %.o,$(BLD_OBJ))) LDFLAGS += -T $(BLDDIR)/bootloader2s.script --gc-sections # new shmoo does not work on A0 chip ifeq ($(BCHP_VER),A0) ENABLE_NEW_SHMOO = n endif ifeq ($(ENABLE_NEW_SHMOO),y) SHMOO_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/ddr40phy/build SHMOO_FILES = shmoo_aux_le.pof shmoo_core_le.pof SHMOO_OBJ = $(addprefix $(SHMOO_DIR)/, $(SHMOO_FILES)) CFLAGS += -DNEW_SHMOO=1 ifeq ($(ENABLE_AVS),y) CFLAGS += -DAVS_ENABLE=1 AVS_FILES = avs_start_le.pof AVS_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/build AVS_OBJ = $(addprefix $(AVS_DIR)/, $(AVS_FILES)) SHMOO_LIB = $(AVS_OBJ) endif SHMOO_LIB += $(SHMOO_OBJ) else ifeq ($(BUILD_SHMOO),y) SHMOO_VERSION_MAJ = 1 SHMOO_VERSION_MIN = 0 SHMOO_FILES = memc_0_shmoo.c SHMOO_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src SHMOO_SRC = $(addprefix $(SHMOO_DIR)/, $(SHMOO_FILES)) SHMOO_OBJ = $(patsubst %.c,%.o,$(filter %.c,$(SHMOO_SRC))) SHMOO_DEP = $(patsubst %.o,%.d,$(filter %.o,$(SHMOO_OBJ))) endif SHMOO_LIB = $(LIBDIR)/libshmoo.a endif ifeq ($(ENABLE_BSEC),y) BSEC_OBJ = key0data.o bsec_053_hddta.o endif all : $(BLD_TARGET).bin $(BLD_TARGET).bin : $(BLD_TARGET).elf $(OBJCOPY) -S -O binary $< $@ $(BLD_TARGET).elf : $(BLD_TARGET)_s1l.o $(BSEC_OBJ) $(BLD_TARGET).o $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@ clean : $(BLD_TARGET)_clean $(BLD_TARGET)_clean: $(RM) -f $(BLD_TARGET).elf $(BLD_TARGET).bin $(BLD_TARGET).map $(BLD_OBJ) $(BLD_DEP) $(S1_OBJ) $(BLD_TARGET)_s1.o $(BLD_TARGET)_s1l.o $(BLD_TARGET).o $(BLD_TARGET)_s1.o : $(S1_OBJ) $(SHMOO_LIB) $(LD) -r $(LFLAGS) $^ -o $@ $(BLD_TARGET)_s1l.o : $(BLD_TARGET)_s1.o $(OBJCOPY) -w -G __start -G key1 $^ $@ $(BLD_TARGET).o : $(BLD_OBJ) $(LD) -r $(LFLAGS) $^ -o $@ ifeq ($(BUILD_SHMOO),y) $(LIBDIR)/libshmoo.a : $(SHMOO_OBJ) $(LIBDIR)/libshmoo.a($(SHMOO_OBJ)) # Extra flags for shmoo build. We must enable optimization at least for the # shmoo library, else bootloader does not fit in 0x7400 bytes. We also must # remove -nostdinc statement as the shmoo requres some files from the standard # include directories $(LIBDIR)/libshmoo.a : CFLAGS := $(filter-out -nostdinc,$(CFLAGS)) -Os ifeq ($(ENABLE_NEW_SHMOO),y) shmoo_clean : $(RM) -f $(LIBDIR)/libshmoo.a else shmoo_clean : $(RM) -f $(LIBDIR)/libshmoo.a $(SHMOO_OBJ) $(SHMOO_DEP) endif clean : shmoo_clean -include $(SHMOO_DEP) endif -include $(BLD_DEP)