inwudriver-weibo/boot/flashboot/Makefile.start_from_no_rom

126 lines
4.1 KiB
Makefile
Raw Permalink Normal View History

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)