################################################################ # # Broadcom Corp. Confidential # Copyright 2003 Broadcom Corp. All Rights Reserved. # # THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED # SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. # YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT # SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. # # $brcm_Workfile: $ # $brcm_Revision: $ # $brcm_Date: $ # # Module Description: ram makefile # # Revision History: # # Created: Wed Sep 13 11:49:24 PDT 2006 by Jeffrey Fisher # # $brcm_Log: $ # ################################################################/ TOP_DIR := $(shell cd ../../ ; /bin/pwd) # # Software version number MAJOR_VERSION.MINOR_VERSION.SUB_VERSION # Major number can be in the range from 0 to 7 # Minor number can be in the range 0 to 31 # Sub version can be in the range 0 to 15 # MAJOR_VERSION ?= 0 MINOR_VERSION ?= 2 SUB_VERSION ?= 0 # # # ROM_CHECKSUM ?= 0x00000000 # # Configuration for default build # PLATFORM = 97574 # # To suppress the display all make commands # #QUIET = @ QUIET = # # To build in debug support # DEBUG ?= y export DEBUG # # Types of applications # APP_TYPE ?= dta # # BUILD_NEXUS # BUILD_NEXUS = y # # BUILD_NEXUS_APP # BUILD_NEXUS_APP ?= n # # To include profiling support # PROFILE ?=n # # Include EIA 708 CC rendering # HAS_EIA_708 ?= y # # Include SCTE65 parsing rendering # # # Include Subtitle parsing and rendering # HAS_SCTE27 ?=n HAS_SCTE65 ?= y HAS_SCTE18 ?=y #HAS_SCTE127 ?=y HAS_CAT ?=y # # Include PSIP parsing rendering # HAS_ATSC_PSIP ?= y # # Select remote protocol. # # 0 - Remote A # 1 - Twirp,XMP # 3 - Remote B # 8 - Motorola # USERIO_ID ?= 8 # # Since platform.inc define CFLAGS it is important it be included before any other CFLAGS are set. # include platform.inc TUNER_TEST ?= n # # SCTE-65 defines # ifeq (${HAS_SCTE65}, y) # # Enable/Disable DTA Cable mode. # # Power Monitor CFLAGS += -DCONFIG_MONITOR_PVT -DCONFIG_SMARTCARD_TEST # For inital SCTE-65 test streams set CONFIG_NETWORK_PID to 0x777 CFLAGS += -DCONFIG_NETWORK_PID=0x1FFC -DDEF_VERSION=0x00000011 CFLAGS += -DCONFIG_DTA_CABLE -DCONFIG_SCREENSAVER -DCONFIG_COMCAST_BUILD CFLAGS += -DDOWNLOAD_FLASH_OFFSET=0x68000 CFLAGS += -DCONFIG_CUSTOMER_PASSWD=0x00030201 # # TUNER_BAND for historical reasons is actualy which parser to use and # PARSER_BAND is actualy the input source of the parser */ # CFLAGS += -DTUNER_BAND=0 -DPARSER_BAND=3 # # NEXUS Defines normalin in platform header file in Nexus build # CFLAGS += -DNEXUS_NUM_AUDIO_DECODERS=3 # # Enable all the following to meet NEW UDTA Spec Requirements # CFLAGS += -DCONFIG_REQUIRE_CAT # To IGNORE VCT ID set CONFIG_DEF_VCT_ID=0xFFFF CFLAGS += -DCONFIG_DEF_VCT_ID=0xF100 CFLAGS += -DCONFIG_DEF_EMM_PID=0x1FF0 # Vendor and Hardware ID CFLAGS += -DDEF_VENDOR_ID=0x0FACED # 3 bytes CFLAGS += -DDEF_HARDWARE_ID=$(PLATFORM) CFLAGS += -DDEF_VENDOR_NAME=\"Broadcom\" endif ### ifeq (${HAS_SCTE65}, y) ### # # Root directories where sources reside # DTA_DIR = $(TOP_DIR)/dta BUILD_DIR = $(DTA_DIR)/build SOURCE_DIR = $(DTA_DIR)/src MAGNUM_DIR = $(TOP_DIR)/magnum BSEAV_DIR = $(TOP_DIR)/BSEAV BCMBIN_DIR = $(TOP_DIR)/dta/bin SYSLIB_DIR = $(MAGNUM_DIR)/syslib NEXUS_TOP = $(TOP_DIR)/nexus # # Defines important to PI Module # OS = ucos_ii MAGNUM = $(MAGNUM_DIR) # # Source directories # OS_DIR = $(SOURCE_DIR)/$(OS) Z_DIR = $(SOURCE_DIR)/z BFDB_DIR = $(SOURCE_DIR)/bfdb FCC_DIR = $(SOURCE_DIR)/settop_api APP_DIR = $(SOURCE_DIR)/app ifeq (${APP_TYPE},dta) APP_SRC_DIR = $(APP_DIR)/dta else APP_SRC_DIR = $(APP_DIR)/nanotv endif LIB_DIR = $(DTA_DIR)/lib # # Base CFLAGS # CFLAGS += -DUCOS_II # # Identify chip # CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER) # # Identify version # CFLAGS += -DMAJOR_VERSION=$(MAJOR_VERSION) -DMINOR_VERSION=$(MINOR_VERSION) -DSUB_VERSION=$(SUB_VERSION) # # DTA defines # ifeq ($(CONFIG_XMP_REMOTE),y) CFLAGS += -DCONFIG_XMP_REMOTE endif CFLAGS += -DUSERIO_ID=$(USERIO_ID) ifeq (${HAS_EIA_708},y) CFLAGS += -DCONFIG_EIA_708 endif CFLAGS += -DCONFIG_ENABLE_UART # # Flags enabling build of non-distributed sources # BUILD_UCOS ?= n BUILD_LIBFCC ?= n ENABLE_UMESSAGE ?= n # # Flags enabling HDCP lib support # ifeq ($(HDCPLIB),y) CFLAGS += -DHDCPLIB BHSM_SECURE_KEYLADDER_MK ?=1 BHDCPLIB_HDCP_SUPPORT ?=1 export CUST=G export BHSM_KEYLADDER=ON export KEYLADDER_SUPPORT=y endif # # Target binary name # TARGET = nexus$(PLATFORM) # # The targets # all: api makefile jar nexus$(PLATFORM).gz LDFLAGS += -T ld.script NEXUS_PLATFORM = 97552 BCM_SRC = $(SOURCE_DIR)/boot_nexus.c \ $(SOURCE_DIR)/ram_init_nexus.c \ $(SOURCE_DIR)/nexus_msg.c BCM_SRC += \ $(SOURCE_DIR)/bos_ucos_ii.c \ $(SOURCE_DIR)/bos_trace.c \ $(SOURCE_DIR)/gdb_nub.c CFLAGS += -DMINISTD_RAM=1 # # use 32 bit for Aspect Ratio manipulation CFLAGS += -DBVDC_UINT32_ONLY=1 BCM_ASM_SRC += $(SOURCE_DIR)/crt.S $(SOURCE_DIR)/memcpy.S CFLAGS += -DNEXUS_UCOS_II CFLAGS += -I$(MAGNUM_DIR)/portinginterface/urt/$(BCHP_CHIP) CFLAGS += -I$(MAGNUM_DIR)/basemodules/int BCM_SRC += $(SOURCE_DIR)/ministd.c \ $(SOURCE_DIR)/bcmmemmgr.c \ $(SOURCE_DIR)/serial.c TEST_SRC = \ $(SOURCE_DIR)/stdio.c \ $(SOURCE_DIR)/libc.c BCM_SRC += $(SOURCE_DIR)/cache_util.c export BUILD_SYSTEM=nexus export PVR_SUPPORT=n export PLAYBACK_IP_SUPPORT=n export LANGUAGE=en_US.UTF-8 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 BCM_VARIABLES = PLATFORM=97552 \ BCHP_VER=$(BCHP_VER) \ BUILD_SYSTEM=nexus \ NETACCEL_SUPPORT=n \ PLAYBACK_IP_SUPPORT=n \ PVR_SUPPORT=n \ NEXUS_SERVER_SUPPORT=n \ OS=ucos_ii \ DEBUG=$(DEBUG) Q_= ifeq ($(HDCPLIB),y) BCM_VARIABLES += HDCPLIB=y \ BHSM_SECURE_KEYLADDER_MK=1 \ BHDCPLIB_HDCP_SUPPORT=1 \ CUST=G \ BHSM_KEYLADDER=ON \ KEYLADDER_SUPPORT=y endif # # PI Modules # CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE include ucos.mk include $(NEXUS_TOP)/platforms/$(NEXUS_PLATFORM)/build/platform_app.inc BCM_LIBS += -lnexus -L${NEXUS_BIN_DIR} # # This is the minimum needed to compile and link with Nexus # CFLAGS += $(NEXUS_CFLAGS) $(addprefix -I,$(NEXUS_APP_INCLUDE_PATHS)) $(addprefix -D,$(NEXUS_APP_DEFINES)) include settop_api.mk include soft_gfx.mk # # Include path definitions # BCM_INCLUDE = $(patsubst %,-I%,$(subst :, ,$(BCM_VPATH))) # # more CFLAG defines # CFLAGS += $(BCM_INCLUDE) -I./ -DMEMCOPY -DBKNI_TRACK_MALLOCS=0 # # 3560 Driver obj files # BCM_OBJS = $(BCM_SRC:.c=.o) BCM_ASM_OBJS += $(BCM_ASM_SRC:.S=.o) ifeq (${ENABLE_APP},n) CFLAGS += -DDEBUG_APP endif # # Soft floating point # SOFT_FP_LIB = $(LIB_DIR)/soft-fp.a BCM_LIB_OBJS = $(NEXUS_BIN_DIR)/libnexus.a $(LIB_DIR)/libucos_ii.a $(SOFT_FP_LIB) ifeq (${BUILD_SETTOP_API},y) SETTOP_API_OBJS += $(LIB_DIR)/libsoft_gfx.a $(LIB_DIR)/libb_os.a LDFLAGS += --whole-archive # BCM_LIBS += -lb_os -lsoft_gfx -L$(LIB_DIR) endif SYM_OBJ = $(SYM_SRC:%.c=%.o) SYM_INC = $(SYM_SRC:%.c=%.inc) BCM_DEPENDS := $(BCM_OBJS:.o=.d) $(BCM_ASM_OBJS:.o=.d) api: $(MAKE) $(BCM_VARIABLES) -C $(NEXUS_TOP)/build nexus_clean: $(MAKE) $(BCM_VARIABLES) -C $(NEXUS_TOP)/build clean ${SYM_OBJ} : ${SYM_SRC} $(filter-out $(SYM_OBJ),$(BCM_OBJS) ${BCM_ASM_OBJS}) ${ECHO} Building symbol table $< ${QUIET}# compile empty sym-table and link with it ${QUIET}${RM) ${SYM_INC} ${QUIET}echo '/* */' >${SYM_INC} ${QUIET}$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@) ${QUIET}$(LD) $(LDFLAGS) $(BCM_OBJS) $(BCM_ASM_OBJS) $(SOFT_FP_LIB) -o ${TARGET}.elf.sym ${QUIET}# compile with real sym-table but possibly wrong offsets ${QUIET}${RM) ${SYM_INC} ${QUIET}${NM} -f bsd -n --defined-only ${TARGET}.elf.sym|grep -v "_ftext"|awk '/.* [Tt] .*/ {printf "B_SYM(0x%su,%s)\n",$$1,$$3}' >${SYM_INC} $(QUIET)$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@) ${QUIET}${RM} ${SYM_INC} ${QUIET}$(LD) -Map $(TARGET).map.sym $(LFLAGS) $(BCM_OBJS) $(BCM_ASM_OBJS) $(SOFT_FP_LIB) -o ${TARGET}.elf.sym ${QUIET}# build real symtable and compile with it ${QUIET}${NM} -f bsd -n --defined-only ${TARGET}.elf.sym|grep -v "_ftext"|awk '/.* [Tt] .*/ {printf "B_SYM(0x%su,%s)\n",$$1,$$3}' >${SYM_INC} $(QUIET)$(CC) $(CFLAGS) -I. -c $< -o $(notdir $@) ${QUIET}${MV} ${SYM_INC} $(SYM_INC:%.inc=%.sym) $(TARGET).elf: $(BCM_OBJS) $(BCM_ASM_OBJS) $(BCM_LIB_OBJS) $(SETTOP_API_OBJS) $(LD) -Map $(TARGET).map $(LDFLAGS) $(BCM_ASM_OBJS) $(BCM_OBJS) $(BCM_LIB_OBJS) $(SETTOP_API_OBJS) -o $@ $(TARGET).bin: $(TARGET).elf $(CROSS_COMPILE)objcopy -S -O binary $(TARGET).elf $(TARGET).bin # $(CROSS_COMPILE)objdump -d $(TARGET).elf > $(TARGET).dis # $(CAT) $(TARGET).bin | $(TOP_DIR)/tools/zpipe > $(BCMBIN_DIR)/$(TARGET).gz %.o: %.c $(ECHO) '$(CC) -c $(notdir $<)' $(QUIET)$(CC) $(CFLAGS) -c $< -o $@ %.o: %.S $(ECHO) '$(CC) -c $(notdir $<)' $(QUIET)$(CC) $(ASFLAGS) -c $< -o $@ clean: nexus_clean $(RM) -f $(TARGET) *.gz *.o_* *.sym *.map *~ core *.elf *.bin *.dis *.lst $(BCM_OBJS) $(BCM_ASM_OBJS) $(BCM_DEPENDS) ifeq (${BUILD_MIPS_AC3},y) $(RM) -f ${AUDIO_FLAG} endif JAR_BINARY = $(SOURCE_DIR)/jar/jar.bin jar : $(JAR_BINARY) $(TARGET).gz $(TARGET)_jar.bin $(TARGET).gz : $(TARGET).bin gzip -cn -9 $< > $@ $(TARGET)_jar.bin : $(TARGET).gz cat $(JAR_BINARY) $< > $@ $(JAR_BINARY) : make -C $(SOURCE_DIR)/jar clean all bootloader : cd $(SOURCE_DIR)/bootloader ; $(MAKE) -f $(BUILD_DIR)/bootloader.mk DEBUG=$(DEBUG) PLATFORM=$(PLATFORM) bootloader_clean : cd $(SOURCE_DIR)/bootloader ; $(MAKE) -f $(BUILD_DIR)/bootloader.mk DEBUG=$(DEBUG) PLATFORM=$(PLATFORM) clean $(SOURCE_DIR)/bootloader/bootloader.bin : bootloader # To build comple flash we need to: # 1 build bootloader # 2 pad bootloader to 64K # 3 build compressed image # 4 concatenate padded bootloader and comressed image flash$(PLATFORM)_nexus.bin : $(SOURCE_DIR)/bootloader/bootloader.bin $(TARGET).gz dd if=$< of=bootloader-128k.bin bs=64k count=2 conv=sync cat bootloader-128k.bin $(TARGET).gz > $@ flash$(PLATFORM)_nexus.gz : flash$(PLATFORM)_nexus.bin gzip -cn -9 $< > $@ flash_clean : $(RM) -f flash$(PLATFORM)_nexus.bin flash$(PLATFORM)_nexus.gz # # Include all the depends # -include $(BCM_DEPENDS)