# 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 MULTI_STAGE ?= y BLD_TARGET = bootloader12 # move BUILD_SHMOO to makefile as one of build options. BUILD_SHMOO ?= n DDR_MODE ?= MEMC_MODE_DDR2 # MEMC_MODE_DDR3 for DDR3 and FREQ should be 533 or 667 MHz if DDR3 is used # for 7574 we use the bootloader.mk under bootloader7572 diretory for following defines based on CFG_PROFILE ifeq ($(DDR_MODE),MEMC_MODE_DDR3) # now more DDR speeds are support for DDR3 also, please refer to memc_0_config.h DDR_FREQ_MHZ ?= 800 #DDR_FREQ_MHZ ?= 533 #DDR_FREQ_MHZ ?= 667 DDR_DEV_TECH_1GBYTE ?= 0x3 # 2GBYTE else DDR_FREQ_MHZ ?= 400 #DDR_FREQ_MHZ ?= 533 #DDR_FREQ_MHZ ?= 333 DDR_DEV_TECH_1GBYTE ?= 0x2 endif DDR_WIDTH ?= 16 # Dram scrambling test option. A0/A1 Multistage bootloader only. ENABLE_BOOT_SCRAMBLE_DRAM ?= y include $(PROOT)/dta/build/platform.inc MAGNUM = $(PROOT)/magnum BSP = $(PROOT)/rockford/bsp LIBDIR = $(PROOT)/dta/lib DTADIR = $(PROOT)/dta BLDDIR = $(PROOT)/dta/src/bootloader CFLAGS += -ffunction-sections CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER) CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE CFLAGS += -DMEMC_0_DEV_TECH=$(DDR_DEV_TECH_1GBYTE) CFLAGS += -DMEMC_0_DDR_FREQ=$(DDR_FREQ_MHZ) CFLAGS += -DMEMC_0_DDR_WIDTH=$(DDR_WIDTH) CFLAGS += -DMEMC_0_DDR_MODE=$(DDR_MODE) ifeq ($(MULTI_STAGE),y) ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y) CFLAGS += -DBOOT_SCRAMBLE_DRAM=1 endif endif ifeq ($(SHRINK_WIDTH),y) CFLAGS += -DSHRINK_WIDTH 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 SHA1_SRC = $(BLDDIR)/sha1/sha1o.c RSA_SRC = $(BLDDIR)/rsa/mp2.c \ $(BLDDIR)/rsa/mp2_addmul.c \ $(BLDDIR)/rsa/mp2_mpcopy.c \ $(BLDDIR)/rsa/mp2_mpzero.c \ $(BLDDIR)/rsa/mp2_smalldiv.c \ $(BLDDIR)/rsa/mpclshift.c CFLAGS += -DRSA_BITS=2048 ifeq ($(MULTI_STAGE),y) # bls1.S is first stage of multistage bootloader entry point. S1_SRC := $(BLDDIR)/bls1.S S1_SRC += s1_main.c # sha1 sources S1_SRC += $(SHA1_SRC) # rsa sources S1_SRC += $(RSA_SRC) ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y) CFLAGS += -DBOOT_SCRAMBLE_DRAM=1 ifeq ($(BCHP_VER),B0) S1_SRC += $(BSP)/bcm9$(BCHP_CHIP)/no-os/src/sde/scramble.c endif endif S1_OBJ := $(subst .S,.o,$(filter %.S, $(S1_SRC))) $(subst .c,.o, $(filter %.c, $(S1_SRC))) # second stage of multistage bootloader entry point. relocated in ram. BLD_SRC := $(BLDDIR)/bls2.S else # one stage bootloader entry point. boots from flash. BLD_SRC := $(BLDDIR)/bl.S endif BLD_SRC += s2_main.c image_selector.c BLD_SRC += $(SHA1_SRC) $(RSA_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))) ifeq ($(MULTI_STAGE),y) LDFLAGS += -T $(BLDDIR)/bootloader12s.script --gc-sections else LDFLAGS += -T $(BLDDIR)/$(BLD_TARGET).script --gc-sections endif ifeq ($(BUILD_SHMOO),y) SHMOO_VERSION_MAJ = 1 SHMOO_VERSION_MIN = 0 SHMOO_FILES = memc_init.c mem_test_dis.c shmoo.c SHMOO_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src SHMOO_SRC = $(addprefix $(SHMOO_DIR)/, $(SHMOO_FILES)) \ $(BLDDIR)/shmoo_build_info.c SHMOO_OBJ = $(patsubst %.c,%.o,$(filter %.c,$(SHMOO_SRC))) SHMOO_DEP = $(patsubst %.o,%.d,$(filter %.o,$(SHMOO_OBJ))) # cflags for shmoo CFLAGS += -DUSE_DIS_CLIENT=1 #CFLAGS += -DSHMOO_DEBUG=1 CFLAGS += -DWRITE_BYTE_LANE_SHMOO CFLAGS += -DREAD_BYTE_LANE_SHMOO CFLAGS += -DDDR_WIDTH=$(DDR_WIDTH) endif all : $(BLD_TARGET).bin $(BLD_TARGET).bin : $(BLD_TARGET).elf $(OBJCOPY) -S -O binary $< $@ ifeq ($(MULTI_STAGE),y) $(BLD_TARGET).elf : $(BLD_TARGET)_s1l.o $(BLD_TARGET).o $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@ else $(BLD_TARGET).elf : $(BLD_TARGET).o $(LIBDIR)/libshmoo.a $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@ endif 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) $(LIBDIR)/libshmoo.a $(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) $(BLDDIR)/shmoo_build_info.c : echo "#include \"memc_init.h\"" > $@ echo "char *shmoobuildinfo = \"`date`\";" >> $@ echo "#define SHMOO_VER_MAJ '$(SHMOO_VERSION_MAJ)'" >> $@ echo "#define SHMOO_VER_MIN '$(SHMOO_VERSION_MIN)'" >> $@ echo "int print_shmoo_ver ( void );" >> $@ echo "void print_char(uint32_t c);" >> $@ echo "int print_shmoo_ver(void){" >> $@ echo "print_char('\\\r');" >> $@ echo "print_char('\\\n');" >> $@ echo "print_char('S');" >> $@ echo "print_char('h');" >> $@ echo "print_char('m');" >> $@ echo "print_char('o');" >> $@ echo "print_char('o');" >> $@ echo "print_char(' ');" >> $@ echo "print_char('V');" >> $@ echo "print_char('e');" >> $@ echo "print_char('r');" >> $@ echo "print_char('s');" >> $@ echo "print_char('i');" >> $@ echo "print_char('o');" >> $@ echo "print_char('n');" >> $@ echo "print_char('=');" >> $@ echo "print_char(SHMOO_VER_MAJ);" >> $@ echo "print_char('.');" >> $@ echo "print_char(SHMOO_VER_MIN);" >> $@ echo "print_char('\\\r');" >> $@ echo "print_char('\\\n'); return 0;" >> $@ echo "}" >> $@ $(LIBDIR)/libshmoo.a : $(SHMOO_OBJ) $(LIBDIR)/libshmoo.a($(SHMOO_OBJ)) shmoo_clean : $(RM) -f $(LIBDIR)/libshmoo.a $(SHMOO_OBJ) $(SHMOO_DEP) clean : shmoo_clean -include $(SHMOO_DEP) endif -include $(BLD_DEP)