1 include makefile_common.mk
 
    6 # Choose permissible app area IDs
 
    7 ifeq ($(bl_updater_match_app_area_id),no)
 
    8 # Match any app area ID
 
   11 ifeq ($(bl_updater_match_app_area_id),yes)
 
   12 # Match only the app area ID of the application being built
 
   13 MATCH_APP_AREA_ID := $(app_area_id)
 
   15 # Match multiple app area IDs, including the application being built
 
   16 MATCH_APP_AREA_ID := $(app_area_id),$(bl_updater_match_app_area_id)
 
   20 # Include HAL driver code, needed to link bootloader updater
 
   21 -include $(HAL_API_PATH)makefile
 
   22 INCLUDES += -iquote$(API_PATH) -I$(UTIL_PATH)
 
   27 # The bootloader library, which includes the Generic Bootloader Updater Tool
 
   28 BOOTLOADER_LIB := $(BUILDPREFIX_BOOTLOADER)bootloader.a
 
   30 # Entry point, converted to HEX to determine the overlapping portion with stack
 
   31 ENTRYPOINT_ASM := $(MCU_PATH)common/bl_updater_entrypoint.s
 
   32 ENTRYPOINT_ELF := $(BUILDPREFIX_BL_UPDATER)$(ENTRYPOINT_ASM:.s=.elf)
 
   33 ENTRYPOINT_HEX := $(BUILDPREFIX_BL_UPDATER)$(ENTRYPOINT_ASM:.s=.hex)
 
   36 SRCS += $(notdir $(BL_UPDATER_NEW_BL_DATA) $(BL_UPDATER_CONFIG) $(BL_UPDATER_STACK_BACKUP))
 
   37 ASM_SRCS := $(ENTRYPOINT_ASM)
 
   40 OBJS_ := $(SRCS:.c=.o) $(ASM_SRCS:.s=.o)
 
   41 OBJS := $(addprefix $(BUILDPREFIX_BL_UPDATER), $(OBJS_))
 
   43 # Linker script for the Generic Bootloader Updater Tool
 
   45 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_updater_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR).ld
 
   47 LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_bl_updater_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR)_$(MCU_RAM_VAR).ld
 
   50 # Compiled and linked bootloader updater
 
   51 BL_UPDATER_ELF := $(BUILDPREFIX_BL_UPDATER)bl_updater.elf
 
   54 CLEAN := $(STACK_WITH_BL_UPDATER_HEX) $(BL_UPDATER_ELF) $(BL_UPDATER_HEX)
 
   55 CLEAN += $(OBJS) $(BL_UPDATER_BL_DATA) $(BL_UPDATER_CONFIG) $(BL_UPDATER_OLD_CONFIG_INI)
 
   56 CLEAN += $(BL_UPDATER_STACK_BACKUP) $(ENTRYPOINT_HEX) $(BL_UPDATER_BUILD_VARIABLES_MK)
 
   58 # Generate a hex file of the stack, with the bootloader updater embedded in it
 
   59 $(STACK_WITH_BL_UPDATER_HEX): $(BL_UPDATER_STACK_HEX) $(BL_UPDATER_HEX) $(BL_UPDATER_OLD_CONFIG_INI)
 
   60     @echo "$(COLOR_INFO)Combining:$(COLOR_END) $@"
 
   64         $(BL_UPDATER_STACK_HEX) \
 
   66         --oldconfigfile=$(BL_UPDATER_OLD_CONFIG_INI)
 
   68 $(BL_UPDATER_STACK_HEX): $(BL_UPDATER_BUILD_VARIABLES_MK)
 
   69     @echo "$(COLOR_INFO)Select Stack firmware for the Generic Bootloader Updater Tool$(COLOR_END)"
 
   72         --firmware_path=$(FIRMWARE_PATH) \
 
   73         --firmware_type="wp_stack" \
 
   74         --archive_path=$(ARCHIVE_PATH)\
 
   75         --extract_path=$(EXTRACT_PATH)\
 
   77         --output_name=$(FIRMWARE_NAME)_for_bl_updater \
 
   79         --mcu_sub=$(MCU_SUB) \
 
   80         --mcu_mem_var=$(MCU_MEM_VAR) \
 
   81         --mac_profile=$(mac_profile) \
 
   82         --mac_profileid=$(mac_profileid) \
 
   83         --mode=$(stack_mode) \
 
   84         --modem_fw=$(modemfw_name) \
 
   86         --radio_config=$(radio_config) \
 
   87         --version=$(MIN_STACK_VERSION) \
 
   88         --stack_area_addr=$(stack_area_addr)
 
   90 # Link entrypoint, bootloader updater library, new bootloader and bootloader updater config
 
   91 $(BL_UPDATER_ELF): $(OBJS) $(BOOTLOADER_LIB)
 
   93     @echo "$(COLOR_LINK)Linking$(COLOR_END) $@"
 
   94     $(D)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ \
 
   95               -Wl,-Map=$(BUILDPREFIX_BL_UPDATER)bl_updater.map \
 
   99 $(BL_UPDATER_HEX): $(BL_UPDATER_ELF)
 
  101     @echo "$(COLOR_INFO)Generating:$(COLOR_END) $@"
 
  102     $(D)$(OBJCOPY) $< -O ihex $@
 
  104 # Link just the entrypoint, to determine the overlapping portion with stack
 
  105 # _bl_updater_start is a dummy value here, but it is not needed
 
  106 $(ENTRYPOINT_ELF): $(ENTRYPOINT_ELF:.elf=.o)
 
  108     $(D)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ \
 
  109               -Wl,-Map=$(ENTRYPOINT_ELF:.elf=.map) \
 
  111               -Wl,--defsym,_bl_updater_start=0x0000
 
  113 $(ENTRYPOINT_HEX): $(ENTRYPOINT_ELF)
 
  119 $(BL_UPDATER_NEW_BL_DATA): $(BOOTLOADER_HEX) $(BOOTLOADER_CONFIG_INI)
 
  121     @echo "$(COLOR_INFO)Converting:$(COLOR_END) $@"
 
  124         $(BUILDPREFIX_BL_UPDATER) \
 
  126         --configfile=$(BOOTLOADER_CONFIG_INI)
 
  128 $(BL_UPDATER_CONFIG): $(BOOTLOADER_CONFIG_INI) $(BL_UPDATER_OLD_CONFIG_INI)
 
  130     @echo "$(COLOR_INFO)Converting:$(COLOR_END) $@"
 
  133         $(BUILDPREFIX_BL_UPDATER) \
 
  134         $(BL_UPDATER_CMD_LIST) \
 
  135         --configfile=$(BOOTLOADER_CONFIG_INI) \
 
  136         --oldconfigfile=$(BL_UPDATER_OLD_CONFIG_INI) \
 
  137         --match_app_area_id=$(MATCH_APP_AREA_ID)
 
  139 $(BL_UPDATER_STACK_BACKUP): $(BL_UPDATER_STACK_HEX) $(ENTRYPOINT_HEX) $(BL_UPDATER_OLD_CONFIG_INI)
 
  141     @echo "$(COLOR_INFO)Converting:$(COLOR_END) $@"
 
  144         $(BUILDPREFIX_BL_UPDATER) \
 
  145         $(BL_UPDATER_STACK_HEX) \
 
  147         --configfile=$(BOOTLOADER_CONFIG_INI) \
 
  148         --oldconfigfile=$(BL_UPDATER_OLD_CONFIG_INI)
 
  150 $(BUILDPREFIX_BL_UPDATER)%.o: %.c
 
  152     @echo "$(COLOR_CC)CC$(COLOR_END) $<"
 
  153     $(D)$(CC) $(INCLUDES) $(CFLAGS) -MMD -MP -c $< -o $@
 
  155 $(BUILDPREFIX_BL_UPDATER)%.o: $(BUILDPREFIX_BL_UPDATER)%.c
 
  157     @echo "$(COLOR_CC)CC$(COLOR_END) $<"
 
  158     $(D)$(CC) $(INCLUDES) $(CFLAGS) -MMD -MP -c $< -o $@
 
  160 $(BUILDPREFIX_BL_UPDATER)%.o: %.s
 
  162     @echo "$(COLOR_CC)CC$(COLOR_END) $<"
 
  163     $(D)$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
 
  165 # Generate full bootloader configuration and makefile
 
  166 # fragment that match the old bootloader configuration
 
  167 $(BL_UPDATER_OLD_CONFIG_INI) $(BL_UPDATER_BUILD_VARIABLES_MK): $(ini_file_wp) $(ini_file_app) $(bl_updater_old_key_file)
 
  172         -i $(platform_config_ini) \
 
  173         -i $(bl_updater_old_key_file) \
 
  174         -o $(BL_UPDATER_OLD_CONFIG_INI) \
 
  175         -om $(BL_UPDATER_BUILD_VARIABLES_MK) \
 
  176         -ol APP_AREA_ID:$(app_area_id) \
 
  178         -hv 0x$(HW_VARIANT_ID) \
 
  179         -fb $(FLASH_BASE_ADDR) \
 
  180         -bs $(old_bootloader_size) \
 
  181         -as $(BOOTLOADER_SIZES)
 
  183 # Include a makefile fragment for build-time make
 
  184 # variables, generated by the rule above
 
  185 -include $(BL_UPDATER_BUILD_VARIABLES_MK)
 
  188 all: $(STACK_WITH_BL_UPDATER_HEX)
 
  191     $(D)$(RM) -rf $(CLEAN)