mirror of
https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_RTL8710BX_ALIOS_SDK.git
synced 2025-02-06 04:15:24 +00:00
143 lines
7 KiB
Makefile
143 lines
7 KiB
Makefile
|
.PHONY: bootloader download_bootloader total download_dct download kill_openocd
|
||
|
|
||
|
EXTRA_PRE_BUILD_TARGETS += bootloader
|
||
|
EXTRA_POST_BUILD_TARGETS += copy_output_for_eclipse
|
||
|
|
||
|
ifeq (download,$(findstring download,$(MAKECMDGOALS)))
|
||
|
EXTRA_POST_BUILD_TARGETS += sflash_write_app
|
||
|
OPENOCD_LOG_FILE ?= $(BUILD_DIR)/openocd_log.txt
|
||
|
DOWNLOAD_LOG := >> $(OPENOCD_LOG_FILE)
|
||
|
endif
|
||
|
|
||
|
#SFLASH_WRITER_APP Required by download_apps
|
||
|
SFLASH_APP_PLATFROM_BUS := $(PLATFORM)
|
||
|
|
||
|
BOOTLOADER_TARGET := bootloader@$(PLATFORM)@release
|
||
|
BOOTLOADER_OUTFILE := $(BUILD_DIR)/$(BOOTLOADER_TARGET)/binary/$(BOOTLOADER_TARGET)
|
||
|
BOOTLOADER_OUTFILE_BIN := $(BUILD_DIR)/$(BOOTLOADER_TARGET)/binary/$(BOOTLOADER_TARGET).bin
|
||
|
BOOTLOADER_LOG_FILE ?= $(BUILD_DIR)/bootloader.log
|
||
|
|
||
|
ifeq (,$(and $(OPENOCD_PATH),$(OPENOCD_FULL_NAME)))
|
||
|
$(error Path to OpenOCD has not been set using OPENOCD_PATH and OPENOCD_FULL_NAME)
|
||
|
endif
|
||
|
|
||
|
ifneq ($(VERBOSE),1)
|
||
|
BOOTLOADER_REDIRECT = > $(BOOTLOADER_LOG_FILE)
|
||
|
endif
|
||
|
|
||
|
# Build bootloader itself
|
||
|
ifneq (,$(findstring bootloader, $(BUILD_STRING)))
|
||
|
BOOTLOADER_APP:=1
|
||
|
BUILD_BOOTLOADER:=0
|
||
|
else
|
||
|
# Target "total" not exist, no need to build bootloader
|
||
|
ifneq (total,$(findstring total,$(MAKECMDGOALS)))
|
||
|
BOOTLOADER_APP:=0
|
||
|
BOOTLOADER_SUB_BUILD:=0
|
||
|
else
|
||
|
BOOTLOADER_APP:=0
|
||
|
BOOTLOADER_SUB_BUILD:=1
|
||
|
endif #$(total,$(findstring total,$(MAKECMDGOALS)))
|
||
|
endif #$(findstring bootloader, $(BUILD_STRING))
|
||
|
|
||
|
ifeq ($(BOOTLOADER_SUB_BUILD),1)
|
||
|
bootloader:
|
||
|
$(QUIET)$(ECHO) Building Bootloader...
|
||
|
$(QUIET)$(MAKE) -r -f $(SOURCE_ROOT)build/Makefile $(BOOTLOADER_TARGET) -I$(OUTPUT_DIR) SFLASH= EXTERNAL_AOS_GLOBAL_DEFINES=$(EXTERNAL_AOS_GLOBAL_DEFINES) SUB_BUILD=bootloader $(BOOTLOADER_REDIRECT)
|
||
|
$(QUIET)$(ECHO) Finished Building Bootloader
|
||
|
$(QUIET)$(ECHO_BLANK_LINE)
|
||
|
|
||
|
download_bootloader: bootloader display_map_summary sflash_write_app
|
||
|
$(eval BOOTLOADER_IMAGE_SIZE := $(shell $(PYTHON) $(IMAGE_SIZE_SCRIPT) $(BOOTLOADER_OUTFILE_BIN)))
|
||
|
$(QUIET)$(ECHO) Downloading bootloader to partition: $(BOOTLOADER_FIRMWARE_PARTITION_TCL) size: $(BOOTLOADER_IMAGE_SIZE) bytes...
|
||
|
$(call CONV_SLASHES, $(OPENOCD_FULL_NAME)) -s $(SOURCE_ROOT) -f $(OPENOCD_CFG_PATH)interface/$(JTAG).cfg -f $(OPENOCD_CFG_PATH)$(HOST_OPENOCD)/$(HOST_OPENOCD).cfg -c init -c soft_reset_halt -c flash_init -c "flash_erase 0x00000 0x10000" -c "load_image $(BUILD_DIR)/eclipse_debug/last_bootloader.elf 0" -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) Download complete && $(ECHO_BLANK_LINE) || $(ECHO) Download failed
|
||
|
|
||
|
#$(QUIET)$(call CONV_SLASHES,$(OPENOCD_FULL_NAME)) -f $(OPENOCD_PATH)$(JTAG).cfg -f $(OPENOCD_PATH)$(HOST_OPENOCD).cfg -f $(OPENOCD_PATH)$(HOST_OPENOCD)-flash-app.cfg -c "verify_image_checksum $(BOOTLOADER_OUTFILE).stripped.elf" -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) No changes detected && $(ECHO_BLANK_LINE) || $(call CONV_SLASHES,$(OPENOCD_FULL_NAME)) -f $(OPENOCD_PATH)$(JTAG).cfg -f $(OPENOCD_PATH)$(HOST_OPENOCD).cfg -f $(OPENOCD_PATH)$(HOST_OPENOCD)-flash-app.cfg -c "flash write_image erase $(BOOTLOADER_OUTFILE).hex" -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) Download complete && $(ECHO_BLANK_LINE) || $(ECHO) "**** OpenOCD failed - ensure you have installed the driver from the drivers directory, and that the debugger is not running **** In Linux this may be due to USB access permissions. In a virtual machine it may be due to USB passthrough settings. Check in the task list that another OpenOCD process is not running. Check that you have the correct target and JTAG device plugged in. ****"
|
||
|
|
||
|
copy_bootloader_output_for_eclipse: build_done
|
||
|
$(QUIET)$(call MKDIR, $(BUILD_DIR)/eclipse_debug/)
|
||
|
$(QUIET)$(CP) $(BOOTLOADER_OUTFILE).elf $(BUILD_DIR)/eclipse_debug/last_bootloader.elf
|
||
|
|
||
|
|
||
|
else
|
||
|
ifeq (0,$(BOOTLOADER_APP))
|
||
|
bootloader:
|
||
|
$(QUIET)$(ECHO) Skipping building bootloader due to \"total\" is not set
|
||
|
$(QUIET)$(ECHO_BLANK_LINE)
|
||
|
|
||
|
download_bootloader: display_map_summary sflash_write_app
|
||
|
$(QUIET)$(ECHO) Downloading Bootloader ...
|
||
|
$(QUIET)$(ECHO) Skipping download bootloader due to \"total\" is not set
|
||
|
$(QUIET)$(ECHO_BLANK_LINE)
|
||
|
|
||
|
else
|
||
|
bootloader:
|
||
|
@:
|
||
|
|
||
|
download_bootloader:
|
||
|
@:
|
||
|
endif
|
||
|
|
||
|
#copy_bootloader_output_for_eclipse: build_done
|
||
|
# $(QUIET)$(call MKDIR, $(BUILD_DIR)/eclipse_debug/)
|
||
|
# $(QUIET)$(CP) $(LINK_OUTPUT_FILE).elf $(BUILD_DIR)/eclipse_debug/last_bootloader.elf
|
||
|
|
||
|
copy_bootloader_output_for_eclipse:
|
||
|
@:
|
||
|
endif
|
||
|
|
||
|
total:
|
||
|
@:
|
||
|
|
||
|
ifeq ($(BOOTLOADER_APP),1)
|
||
|
download_app: $(STRIPPED_LINK_OUTPUT_FILE) display_map_summary sflash_write_app kill_openocd
|
||
|
$(eval IMAGE_SIZE := $(shell $(PYTHON) $(IMAGE_SIZE_SCRIPT) $(BIN_OUTPUT_FILE)))
|
||
|
$(call CONV_SLASHES, $(OPENOCD_FULL_NAME)) -s $(SOURCE_ROOT) -f $(OPENOCD_CFG_PATH)interface/$(JTAG).cfg -f $(OPENOCD_CFG_PATH)$(HOST_OPENOCD)/$(HOST_OPENOCD).cfg -c init -c soft_reset_halt -c flash_init -c "flash_erase 0x00000 0x10000" -c "load_image $(BUILD_DIR)/eclipse_debug/last_bootloader.elf 0" -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) Download complete && $(ECHO_BLANK_LINE) || $(ECHO) Download failed. See $(OPENOCD_LOG_FILE) for detail.
|
||
|
else
|
||
|
|
||
|
ifeq ($(PLATFORM),mk108)
|
||
|
APP_SIZE := 0xDE000
|
||
|
else
|
||
|
APP_SIZE := 0x8E000
|
||
|
endif
|
||
|
|
||
|
download_app: $(STRIPPED_LINK_OUTPUT_FILE) display_map_summary download_bootloader sflash_write_app kill_openocd
|
||
|
$(eval IMAGE_SIZE := $(shell $(PYTHON) $(IMAGE_SIZE_SCRIPT) $(BIN_OUTPUT_FILE)))
|
||
|
$(QUIET)$(ECHO) Downloading application to partition: $(APPLICATION_FIRMWARE_PARTITION_TCL) size: $(IMAGE_SIZE) bytes...
|
||
|
$(call CONV_SLASHES, $(OPENOCD_FULL_NAME)) -s $(SOURCE_ROOT) -f $(OPENOCD_CFG_PATH)interface/$(JTAG).cfg -f $(OPENOCD_CFG_PATH)$(HOST_OPENOCD)/$(HOST_OPENOCD).cfg -c init -c flash_boot_check -c "flash_program $(LINK_OUTPUT_FILE:$(LINK_OUTPUT_SUFFIX)=.ota$(BIN_OUTPUT_SUFFIX)) $(BINS_DOWNLOAD_ADDR)" -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) Download complete && $(ECHO_BLANK_LINE) || $(ECHO) Download failed. See $(OPENOCD_LOG_FILE) for detail.
|
||
|
|
||
|
endif
|
||
|
|
||
|
ifeq (download,$(filter download,$(MAKECMDGOALS)))
|
||
|
EXT_IMAGES_DOWNLOAD_DEP := download_app
|
||
|
endif
|
||
|
|
||
|
download: download_app $(if $(findstring total,$(MAKECMDGOALS)), EXT_IMAGE_DOWNLOAD,)
|
||
|
|
||
|
kill_openocd:
|
||
|
$(info kill_openocd)
|
||
|
|
||
|
run: $(SHOULD_I_WAIT_FOR_DOWNLOAD)
|
||
|
$(QUIET)$(ECHO) Resetting target
|
||
|
$(QUIET)$(call CONV_SLASHES,$(OPENOCD_FULL_NAME)) -c "log_output $(OPENOCD_LOG_FILE)" -s $(SOURCE_ROOT) -f $(OPENOCD_CFG_PATH)interface/$(JTAG).cfg -f $(OPENOCD_CFG_PATH)$(HOST_OPENOCD)/$(HOST_OPENOCD).cfg -c init -c soft_reset_halt -c resume -c shutdown $(DOWNLOAD_LOG) 2>&1 && $(ECHO) Target running
|
||
|
|
||
|
ifeq ($(BOOTLOADER_APP),1)
|
||
|
copy_output_for_eclipse: build_done
|
||
|
$(QUIET)$(call MKDIR, $(BUILD_DIR)/eclipse_debug/)
|
||
|
#$(QUIET)$(CP) $(LINK_OUTPUT_FILE) $(BUILD_DIR)/eclipse_debug/last_bootloader.elf
|
||
|
else
|
||
|
copy_output_for_eclipse: build_done copy_bootloader_output_for_eclipse
|
||
|
$(QUIET)$(call MKDIR, $(BUILD_DIR)/eclipse_debug/)
|
||
|
ifeq (,$(BINS))
|
||
|
$(QUIET)$(CP) $(LINK_OUTPUT_FILE) $(BUILD_DIR)/eclipse_debug/last_built.elf
|
||
|
else
|
||
|
$(QUIET)$(CP) $(LINK_OUTPUT_FILE) $(BUILD_DIR)/eclipse_debug/$(BINSTYPE_LOWER)_built.elf
|
||
|
endif
|
||
|
endif
|
||
|
|
||
|
debug: $(BUILD_STRING) $(SHOULD_I_WAIT_FOR_DOWNLOAD)
|
||
|
$(QUIET)$(GDB_COMMAND) $(LINK_OUTPUT_FILE) -x .gdbinit_attach
|
||
|
|
||
|
|
||
|
|