126 lines
4.1 KiB
Makefile
126 lines
4.1 KiB
Makefile
|
|
|
|
|
|
include $(MAIN_TOPDIR)/build_tmp/config/soc_product_config.mk
|
|
include $(MAIN_TOPDIR)/boot/flashboot/boot_ver.mk
|
|
|
|
ifeq ($(PRODUCT_CFG_BUILD_RELEASE), yes)
|
|
MAIN_OUT_DIR_NAME = $(project_name)_release
|
|
else
|
|
MAIN_OUT_DIR_NAME = $(project_name)_debug
|
|
endif
|
|
|
|
MAIN_BUILD_TMP_OUT := $(MAIN_TOPDIR)/build_tmp/$(MAIN_OUT_DIR_NAME)
|
|
MAIN_BUILD_OUTPUT := $(MAIN_TOPDIR)/output/$(MAIN_OUT_DIR_NAME)
|
|
ALL_TARGET := $(MAIN_BUILD_TMP_OUT)/all/bin
|
|
ALL_LIBS := $(MAIN_BUILD_TMP_OUT)/all/lib
|
|
|
|
OUT=$(ALL_TARGET)/flashboot/start_from_romboot
|
|
|
|
TARGET := dw21_flash_boot
|
|
TARGET_ELF := $(OUT)/$(TARGET).elf
|
|
TARGET_FLASH_BIN := $(OUT)/$(TARGET)_flash.bin
|
|
TARGET_FLASH_SECURE_BIN:= $(OUT)/$(TARGET)_secure_flash.bin
|
|
TOOLS_BOOT_DIR := $(MAIN_TOPDIR)/tools/boot
|
|
TARGET_FIX_ROM_BIN_BAK := $(MAIN_TOPDIR)/target/libs/rom_bin/dw21_boot_fixrom.bin
|
|
TARGET_FIX_ROM_BIN := $(OUT)/dw21_boot_fixrom.bin
|
|
TARGET_HEX := $(OUT)/$(TARGET).hex
|
|
TARGET_ASM := $(OUT)/$(TARGET).asm
|
|
TARGET_MAP := $(OUT)/$(TARGET).map
|
|
TARGET_BIN := $(OUT)/$(TARGET).bin
|
|
TARGET_ROM := $(ALL_LIBS)/librom.o
|
|
|
|
OBJCPFLAGS_ELF_TO_BIN = -Obinary
|
|
OBJCPFLAGS_ELF_TO_HEX = -Oihex
|
|
OBJCPFLAGS_BIN_TO_HEX = -Ibinary -Oihex
|
|
OBJCPFLAGS_ELF_TO_SREC = -Osrec
|
|
OBJCPFLAGS_ELF_TO_LIST = -S
|
|
|
|
# Defines the directory to store object files during compile
|
|
PROJECTBASE = $(MAIN_TOPDIR)/boot/flashboot
|
|
TOP_DIR := $(PROJECTBASE)
|
|
LDSCRIPT = $(PROJECTBASE)/scripts/dw21_boot_from_romboot_linux_usermap.lds
|
|
|
|
# rom directory
|
|
CMN_DIR := $(PROJECTBASE)/../fixed_rom
|
|
|
|
CFLAGS = -Werror -O2 -std=c99 -falign-functions=4 -mcpu=cortex-m3 -mthumb -fdata-sections -ffunction-sections -fno-inline -fno-common -DOBC_IMAGE_BOOT -DBOOT_VER=$(CFG_BOOT_VER)
|
|
ASFLAG = -Werror -O2 -mcpu=cortex-m3 -mthumb -fdata-sections -ffunction-sections -D__ASM__
|
|
|
|
LDFLAGS = -nostdlib -L $(ALL_LIBS) -T $(LDSCRIPT) -nostartfiles -static -Wl,--gc-sections
|
|
|
|
|
|
SRC = $(wildcard $(TOP_DIR)/lzmaram/*.c) \
|
|
$(wildcard $(TOP_DIR)/crc32/*.c)\
|
|
$(wildcard $(TOP_DIR)/upg/*.c) \
|
|
$(wildcard $(TOP_DIR)/nvm/*.c) \
|
|
$(wildcard $(TOP_DIR)/partition_table/*.c) \
|
|
$(wildcard $(TOP_DIR)/arch/cortex_m3/dw21/*.c) \
|
|
$(wildcard $(TOP_DIR)/cmd/*.c) \
|
|
$(wildcard $(TOP_DIR)/rom_addition/*.c)
|
|
|
|
ASM_SRC := ${wildcard $(TOP_DIR)/arch/cortex_m3/dw21/*.S}
|
|
|
|
|
|
|
|
|
|
OBJ := $(SRC:%.c=%.o)
|
|
ASMOBJ := $(ASM_SRC:%.S=%.o)
|
|
|
|
# The code under ROM can only depend on the header files under ROM.
|
|
ROM_CFLAGS := $(CFLAGS) -Wall -I $(CMN_DIR) \
|
|
-I $(CMN_DIR)/include \
|
|
-I $(MAIN_TOPDIR)/target/common_include\
|
|
-I $(MAIN_TOPDIR)/build_tmp/config
|
|
|
|
# Non-ROM
|
|
NOROM_CFLAGS := $(ROM_CFLAGS) -Wall -I $(TOP_DIR) \
|
|
-I $(TOP_DIR)/include
|
|
|
|
NOROM_ASFLAG := $(ASFLAG) -Wall -I $(CMN_DIR)/include \
|
|
-I $(TOP_DIR)/include
|
|
|
|
.PHONY: all clean
|
|
|
|
all: prepare $(TARGET_FLASH_BIN)
|
|
$(TARGET_FLASH_BIN): $(TARGET_ELF)
|
|
$(Q)$(OBJCOPY) $(OBJCPFLAGS_ELF_TO_BIN) -R .rom.text -R .u_boot_cmd -R .rom.data -R .rom.bss -S $(TARGET_ELF) $(TARGET_FLASH_BIN)
|
|
#$(Q)$(OBJCOPY) $(OBJCPFLAGS_ELF_TO_BIN) -j .rom.text -j .u_boot_cmd -j .rom.data -j .rom.bss -S $(TARGET_ELF) $(TARGET_FIX_ROM_BIN)
|
|
#$(Q)dd if=$(TARGET_FLASH_BIN) of=$(TARGET_BIN)
|
|
#$(Q)dd if=$(TARGET_FIX_ROM_BIN) of=$(TARGET_BIN) bs=8k seek=1
|
|
$(Q)$(OBJDUMP) -d $(TARGET_ELF) > $(TARGET_ASM)
|
|
$(Q)$(OBJDUMP) -stD $(TARGET_ELF) > $(TARGET_MAP)
|
|
#$(Q)if cmp -s $(TARGET_FIX_ROM_BIN) $(TARGET_FIX_ROM_BIN_BAK); \
|
|
#then echo "#########ROM BIN IS THE SAME!#########"; \
|
|
#else echo "#########ROM BIN IS DIFFERENT!#########"; exit 1;fi
|
|
$(Q)$(TOOLS_BOOT_DIR)/MakeFlashBootTool -i $(TARGET_FLASH_BIN) -o $(TARGET_FLASH_SECURE_BIN) -ver $(CFG_BOOT_VER) -rootkey $(TOOLS_BOOT_DIR)/root_private.pem \
|
|
-subkey $(TOOLS_BOOT_DIR)/subkey_private.pem -compress_flag 0
|
|
|
|
|
|
|
|
$(TARGET_ELF):$(OBJ) $(ASMOBJ)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $(sort $^) -o $@ -Wl,--just-symbols=$(PROJECTBASE)/scripts/fixrom.sym
|
|
|
|
$(OBJ): %.o : %.c
|
|
@echo Compile $<
|
|
$(Q)$(CC) $(NOROM_CFLAGS) -c $< -o $@
|
|
|
|
$(ASMOBJ):%.o:%.S
|
|
@echo Compile $<
|
|
$(Q)$(CC) $(NOROM_ASFLAG) -c $< -o $@
|
|
|
|
|
|
prepare:
|
|
$(Q)mkdir -p $(OUT)
|
|
$(Q)mkdir -p $(ALL_LIBS)
|
|
|
|
clean_out:
|
|
$(Q)$(RM) $(OUT)
|
|
|
|
clean:
|
|
$(Q)$(RM) $(OBJ)
|
|
$(Q)$(RM) $(ASMOBJ)
|
|
|
|
|
|
|