blob: a051928c405cf6c1f5c91a8c17aef789ab4dcf2d [file] [log] [blame]
################################################################################
#
# @file nvds.mk
#
# @brief NVDS make helper
#
# Copyright (C) Atmosic 2018-2022
#
################################################################################
ifndef __NVDS_MK__
__NVDS_MK__ = 1
include $(COMMON_USER_DIR)/tools.mk
include $(ROM_DIR)/rom.mk
DEF_MPR_BIN_FILE := flash_mpr_nvds.bin
ifdef MPR_SIZE
ifneq ($(shell printf "%d" $$(($(MPR_SIZE)&0x0FFF))),0)
$(error "MPR_SIZE is not at 4K boundary")
endif
ifndef FLASH_SIZE
$(error "usage: Need to compile with FLASH_SIZE. ex: make FLASH_SIZE=0x40000 MPR_SIZE=0x1000")
endif #FLASH_SIZE
endif
ifneq ($(or $(MPR_SIZE),$(USER_SIZE),$(FLASH_SIZE),$(NVDS_SIZE)),)
FLASH_SIZE ?= 0x80000
NVDS_SIZE ?= 0x8000
MPR_SIZE ?= 0
USER_SIZE ?= 0
FLASH_MEM_BANK ?= "bank0"
FLASH_START := 0
ifeq ($(MPR_SIZE),0)
NVDS_START := $(shell printf "0x%x" $$(($(FLASH_SIZE) - $(NVDS_SIZE))))
else
ifneq (,$(filter OTAPS,$(PROFILES)))
MPR_START := $(shell printf "0x%x" $$(($(FLASH_SIZE)*2 - $(MPR_SIZE))))
NVDS_START := $(shell printf "0x%x" $$(($(FLASH_SIZE) - $(MPR_SIZE) - $(NVDS_SIZE))))
else
MPR_START := $(shell printf "0x%x" $$(($(FLASH_SIZE) - $(MPR_SIZE))))
NVDS_START := $(shell printf "0x%x" $$(($(MPR_START) - $(NVDS_SIZE))))
endif #OTAPS
endif #MPR_SIZE
ifneq ($(USER_SIZE),0)
USER_START := $(shell printf "0x%x" $$(($(NVDS_START) - $(USER_SIZE))))
endif #USER_SIZE
UFLASH_SIZE := $(shell printf "0x%x" $$(($(FLASH_SIZE) - $(NVDS_SIZE) - $(USER_SIZE) - $(MPR_SIZE))))
endif
TAG_DATA_DIR ?= tag_data
.PHONY: all
all:
$(TAG_DATA_DIR)/%.bin: $(TAG_DATA_DIR)/%.tds
sed 's,#.*$$,,' < $< | tr -d '[:space:]' | xxd -ps -r > $@
pre_bond_files := $(basename $(foreach file,$(TAG_DATA_DIR)/*,$(wildcard $(file)/*_pre_bond.tds)))
ifdef pre_bond_files
flash_nvds.data += $(foreach file,$(pre_bond_files),$(subst $(TAG_DATA_DIR)/,,$(file)))
endif
ifdef WDOG
flash_nvds.data += b5-SYDNEY_TAG_WATCHDOG/wdog
otp_nvds.data += b5-SYDNEY_TAG_WATCHDOG/wdog
endif
$(TAG_DATA_DIR)/18-PROG_DELAY:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/18-PROG_DELAY/%.tds
$(TAG_DATA_DIR)/18-PROG_DELAY/%.tds: | $(TAG_DATA_DIR)/18-PROG_DELAY
echo "# Programing delay (margin for programing the baseband in advance of each activity in half-slots)" > $@
echo $(18-PROG_DELAY.$(@F)) >> $@
ifeq ($(filter 18-PROG_DELAY/%,$(flash_nvds.data)),)
18-PROG_DELAY.default.tds := "04" # 4 half slots (1250us)
flash_nvds.data += 18-PROG_DELAY/default
endif
clean::
rm -f $(TAG_DATA_DIR)/18-PROG_DELAY/default.tds
$(TAG_DATA_DIR)/2e-SLEEP_ALGO_DUR:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/2e-SLEEP_ALGO_DUR/%.tds
$(TAG_DATA_DIR)/2e-SLEEP_ALGO_DUR/%.tds: | $(TAG_DATA_DIR)/2e-SLEEP_ALGO_DUR
echo $(2e-SLEEP_ALGO_DUR.$(@F)) > $@
ifeq ($(filter 2e-SLEEP_ALGO_DUR/%,$(flash_nvds.data)),)
2e-SLEEP_ALGO_DUR.sleep_algo.tds := "F4 01" # 500 half-us (250 us)
flash_nvds.data += 2e-SLEEP_ALGO_DUR/sleep_algo
otp_nvds.data += 2e-SLEEP_ALGO_DUR/sleep_algo
endif
clean::
rm -f $(TAG_DATA_DIR)/2e-SLEEP_ALGO_DUR/sleep_algo.tds
ifdef LPC_RCOS
$(TAG_DATA_DIR)/0d-EXT_WAKEUP_TIME:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/0d-EXT_WAKEUP_TIME/%.tds
$(TAG_DATA_DIR)/0d-EXT_WAKEUP_TIME/%.tds: | $(TAG_DATA_DIR)/0d-EXT_WAKEUP_TIME
echo "# 9ms in us" > $@
echo $(0d-EXT_WAKEUP_TIME.$(@F)) > $@
$(TAG_DATA_DIR)/0e-OSC_WAKEUP_TIME:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/0e-OSC_WAKEUP_TIME/%.tds
$(TAG_DATA_DIR)/0e-OSC_WAKEUP_TIME/%.tds: | $(TAG_DATA_DIR)/0e-OSC_WAKEUP_TIME
echo "# 9ms in us" > $@
echo $(0e-OSC_WAKEUP_TIME.$(@F)) > $@
$(TAG_DATA_DIR)/2b-SLEEP_ADJ:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/2b-SLEEP_ADJ/%.tds
$(TAG_DATA_DIR)/2b-SLEEP_ADJ/%.tds: | $(TAG_DATA_DIR)/2b-SLEEP_ADJ
echo "# Number of half slots (312.5us)" > $@
echo $(2b-SLEEP_ADJ.$(@F)) > $@
0d-EXT_WAKEUP_TIME.no_32KHz_xtal.tds := "28 23"
0e-OSC_WAKEUP_TIME.no_32KHz_xtal.tds := "28 23"
2b-SLEEP_ADJ.no_32KHz_xtal.tds := "02 00 00 00"
flash_nvds.data += 0d-EXT_WAKEUP_TIME/no_32KHz_xtal \
0e-OSC_WAKEUP_TIME/no_32KHz_xtal \
2b-SLEEP_ADJ/no_32KHz_xtal \
clean::
rm -f $(TAG_DATA_DIR)/0d-EXT_WAKEUP_TIME/no_32KHz_xtal.tds
rm -f $(TAG_DATA_DIR)/0e-OSC_WAKEUP_TIME/no_32KHz_xtal.tds
rm -f $(TAG_DATA_DIR)/2b-SLEEP_ADJ/no_32KHz_xtal.tds
endif # LPC_RCOS
ifdef USER_BD_ADDR
flash_nvds.data += 01-BD_ADDRESS/user
$(TAG_DATA_DIR)/01-BD_ADDRESS:
mkdir -p $@
.PHONY: $(TAG_DATA_DIR)/01-BD_ADDRESS/user.tds
$(TAG_DATA_DIR)/01-BD_ADDRESS/user.tds: | $(TAG_DATA_DIR)/01-BD_ADDRESS
echo $(USER_BD_ADDR) > $@
endif
$(TAG_DATA_DIR)/b3-FLASH_POWERUP_DELAY:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/b3-FLASH_POWERUP_DELAY/%.tds
$(TAG_DATA_DIR)/b3-FLASH_POWERUP_DELAY/%.tds: | $(TAG_DATA_DIR)/b3-FLASH_POWERUP_DELAY
echo $(b3-FLASH_POWERUP_DELAY.$(@F)) > $@
ifeq ($(filter b3-FLASH_POWERUP_DELAY/%,$(otp_nvds.data)),)
# Use Macronix delay as the superset default value
b3-FLASH_POWERUP_DELAY.macronix.tds := "1a 00" # 800us @ 32.768khz
otp_nvds.data += b3-FLASH_POWERUP_DELAY/macronix
endif
clean::
rm -f $(TAG_DATA_DIR)/b3-FLASH_POWERUP_DELAY/macronix.tds
ifdef NVDS_APP
otp_nvds.data += b6-USER_APP/$(NVDS_APP)
all: $(TAG_DATA_DIR)/b6-USER_APP/$(NVDS_APP).bin
.PHONY: gdb_otp
gdb_otp: $(TAG_DATA_DIR)/b6-USER_APP/$(NVDS_APP).elf $(TAG_DATA_DIR)/b6-USER_APP/rom.elf $(GDB)
$(GDB) -x $(GDB_CFG_DIR)/sydney.gdb $< -ex "add-symbol-file $(TAG_DATA_DIR)/b6-USER_APP/rom.elf"
.PHONY: gdb_otp_target
gdb_otp_target: $(TAG_DATA_DIR)/b6-USER_APP/$(NVDS_APP).elf $(TAG_DATA_DIR)/b6-USER_APP/rom.elf $(GDB)
$(GDB) -x $(GDB_CFG_DIR)/sydney.gdb $< -ex "add-symbol-file $(TAG_DATA_DIR)/b6-USER_APP/rom.elf" -ex "target remote $(GDB_REMOTE)"
endif
NVDS_APP_INCLUDES := \
$(INCLUDE_DIR) \
$(INCLUDE_DIR)/armgcc \
$(INCLUDE_DIR)/reg \
$(INCLUDE_DIR)/reg_ble \
$(INCLUDE_DIR)/arm \
$(INCLUDE_DIR)/ble \
$(DRIVER_DIR)/flash \
$(DRIVER_DIR)/spi \
$(DRIVER_DIR)/timer \
$(LIB_DIR)/atm_utils_c \
$(LIB_DIR)/atm_utils_math \
$(NVDS_APP_INCLUDES)
$(TAG_DATA_DIR)/b6-USER_APP/rom.elf: $(ROM_DIR)/fw.elf
$(OBJCOPY) $(NVDS_APP_ROMCOPY_FLAGS) $< $@
$(TAG_DATA_DIR)/b6-USER_APP/rom.o: $(TAG_DATA_DIR)/b6-USER_APP/rom.elf
$(COMMON_USER_DIR)/gen_symtab.py $< $@
.PRECIOUS: $(TAG_DATA_DIR)/b6-USER_APP/%.elf
$(TAG_DATA_DIR)/b6-USER_APP/%.elf: $(TAG_DATA_DIR)/b6-USER_APP/%.c \
$(TAG_DATA_DIR)/b6-USER_APP/rom.o
cd $(@D) && $(GCC) -mcpu=cortex-m0 -Os -mthumb -mlong-calls \
-fms-extensions -ffunction-sections -fdata-sections \
-fno-strict-aliasing -g3 -flto \
-Wall -Wchar-subscripts -Wformat -Wformat-signedness \
-Wuninitialized -Winit-self \
-Wignored-qualifiers -Wswitch-default -Wswitch-enum -Wunused -Wundef \
-Wnull-dereference -Wsuggest-attribute=noreturn -Wdouble-promotion \
-Wwrite-strings -Wshadow -Wcast-qual \
-Wpointer-arith \
-Wstrict-prototypes -Wold-style-declaration -Wold-style-definition \
-Wmissing-parameter-type \
-std=c17 -Werror \
-DCORTEX_M0 $(ROM_CFLAGS) -DCFG_USER \
$(NVDS_APP_CFLAGS) \
$(NVDS_APP_INCLUDES:%=-I%) \
-MD $(<F) \
-Wl,--fatal-warnings,--warn-common \
-nostdlib -Wl,--gc-sections \
-L$(ROM_DIR) -L$(USER_DIR) -Tcmsdk_cm0_user_ram.ld \
$(if $(NVDS_APP_URAM_SIZE),-Wl$(comma)--defsym=URAM_SIZE=$(NVDS_APP_URAM_SIZE)) \
$(word 2,$(^F)) \
-o $(@F)
-include $(TAG_DATA_DIR)/b6-USER_APP/*.d
$(TAG_DATA_DIR)/b6-USER_APP/%.bin: $(TAG_DATA_DIR)/b6-USER_APP/%.elf
$(OBJCOPY) -O binary $< $@
$(TAG_DATA_DIR)/b5-SYDNEY_TAG_WATCHDOG:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/b5-SYDNEY_TAG_WATCHDOG/%.tds
$(TAG_DATA_DIR)/b5-SYDNEY_TAG_WATCHDOG/%.tds: | $(TAG_DATA_DIR)/b5-SYDNEY_TAG_WATCHDOG
echo $(call wdog_tag,$(WDOG)) > $@
clean::
rm -f $(TAG_DATA_DIR)/b5-SYDNEY_TAG_WATCHDOG/wdog.tds
$(TAG_DATA_DIR)/fe-MEM_RMW:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/fe-MEM_RMW/%.tds
$(TAG_DATA_DIR)/fe-MEM_RMW/%.tds: | $(TAG_DATA_DIR)/fe-MEM_RMW
echo $($(@F)) > $@
$(TAG_DATA_DIR)/fc-PMU_W:
mkdir -p $@
.PRECIOUS: $(TAG_DATA_DIR)/fc-PMU_W/%.tds
$(TAG_DATA_DIR)/fc-PMU_W/%.tds: | $(TAG_DATA_DIR)/fc-PMU_W
echo $($(@F)) > $@
data2deps = $(addprefix $(TAG_DATA_DIR)/,$(addsuffix .bin,$1))
data2opts = $(foreach data,$1,-t $(firstword $(subst -, ,$(data))) -d $(TAG_DATA_DIR)/$(data).bin)
HARV_CFG := $(filter -DCFG_NONRF_HARV -DCFG_RF_HARV,$(CFLAGS))
RECHARGE_BATT := $(filter -DCFG_RECHBATT,$(CFLAGS))
ifneq ($(RECHARGE_BATT),)
PMU13.tds := "093800000100"
otp_nvds.data += fc-PMU_W/PMU13
ifeq ($(PMU_CFG),VBAT_GT_1p8V_VDDIO_EXT)
otp_nvds.hw := OTP_BATT_TYPE:RECHARGE_VBAT_GT_1p8V OTP_DISABLE_VDDIO
else
otp_nvds.hw := OTP_BATT_TYPE:RECHARGE_VBAT_GT_1p8V
endif # VBAT_GT_1p8V_VDDIO_EXT
SWREG_CTRL_5.tds := "0c141a0a4e01"
SWREG_CTRL_6.tds := "0c184d0a8c09"
otp_nvds.data += fc-PMU_W/SWREG_CTRL_5
otp_nvds.data += fc-PMU_W/SWREG_CTRL_6
else # RECHARGE_BATT
ifneq ($(PMU_CFG),)
ifeq ($(PMU_CFG),VBAT_GT_1p8V_VDDIO_EXT)
otp_nvds.hw := OTP_BATT_TYPE:VBAT_GT_1p8V OTP_DISABLE_VDDIO
else ifeq ($(PMU_CFG),VBAT_GT_1p8V_VDDIO_INT)
otp_nvds.hw := OTP_BATT_TYPE:VBAT_GT_1p8V
else ifeq ($(PMU_CFG),VBAT_LE_1p8V)
otp_nvds.hw := OTP_BATT_TYPE:VBAT_LE_1p8V
else ifeq ($(PMU_CFG),NO_VBAT)
ifeq ($(HARV_CFG),)
$(error No harvesting option specified when using NO_VBAT)
endif
otp_nvds.hw := OTP_BATT_TYPE:NO_VBAT
else
$(warning Unknown PMU_CFG $(PMU_CFG))
endif
endif # PMU_CFG
endif # RECHARGE_BATT
ifneq ($(HARV_CFG),)
ifeq ($(HARV_CFG),-DCFG_NONRF_HARV)
NONRF_HARV.tds := "09406E5a0000"
otp_nvds.data += fc-PMU_W/NONRF_HARV
ifneq ($(filter -DVSTORE_MAX_EQ_3p0V,$(CFLAGS)),)
NONRF_VRANGE_1p1_1p4.tds := "0918211c1400"
NONRF_VRANGE_1p2_1p5.tds := "0918215c1600"
NONRF_VRANGE_1p3_1p6.tds := "0918219c1800"
NONRF_VRANGE_1p4_1p7.tds := "091821dc1a00"
NONRF_VRANGE_1p5_1p8.tds := "0918211c1d00"
NONRF_VRANGE_1p6_1p9.tds := "0918215c1f00"
else
NONRF_VRANGE_1p1_1p4.tds := "0918211e1400"
NONRF_VRANGE_1p2_1p5.tds := "0918215e1600"
NONRF_VRANGE_1p3_1p6.tds := "0918219e1800"
NONRF_VRANGE_1p4_1p7.tds := "091821de1a00"
NONRF_VRANGE_1p5_1p8.tds := "0918211e1d00"
NONRF_VRANGE_1p6_1p9.tds := "0918215e1f00"
endif # VSTORE_MAX_EQ_3p0V
ifneq ($(filter -DCFG_NONRF_VRANGE_1p1_1p4,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p1_1p4
else ifneq ($(filter -DCFG_NONRF_VRANGE_1p2_1p5,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p2_1p5
else ifneq ($(filter -DCFG_NONRF_VRANGE_1p3_1p6,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p3_1p6
else ifneq ($(filter -DCFG_NONRF_VRANGE_1p4_1p7,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p4_1p7
else ifneq ($(filter -DCFG_NONRF_VRANGE_1p5_1p8,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p5_1p8
else ifneq ($(filter -DCFG_NONRF_VRANGE_1p6_1p9,$(CFLAGS)),)
otp_nvds.data += fc-PMU_W/NONRF_VRANGE_1p6_1p9
else
$(error Voltage Range Config not defined in $(CFLAGS))
endif # CFG_NONRF_VRANGE_XX_XX
else # CFG_NONRF_HARV
otp_nvds.hw += OTP_HARV_TYPE
MDM_AGCCNTL_CLR_PEAKDET.tds := "306000500000000001000000"
otp_nvds.data += fe-MEM_RMW/MDM_AGCCNTL_CLR_PEAKDET
ifneq ($(filter -DVSTORE_MAX_EQ_3p0V,$(CFLAGS)),)
PMU5.tds := "0918215c1f00"
otp_nvds.data += fc-PMU_W/PMU5
endif # VSTORE_MAX_EQ_3p0V
endif # CFG_RF_HARV
endif # HARV_CFG
BRWNOUT_OPT := $(filter -DBRWNOUT_THR%,$(CFLAGS))
ifdef BRWNOUT_OPT
otp_nvds.hw += OTP_BROWNOUT_THR:$(BRWNOUT_OPT:-DBRWNOUT_THR%=%)
endif
ifneq ($(or $(otp_nvds.data),$(otp_nvds.hw)),)
nvds_tool_otp_args = $(call data2opts,$(otp_nvds.data)) $(if $(otp_nvds.hw),$(addprefix -w ,$(otp_nvds.hw)))
.PHONY: build_archive_otp_nvds
build_archive_otp_nvds: $(NVDS_TOOL) $(call data2deps,$(otp_nvds.data))
$< -i $(nvds_tool_otp_args) -b -o otp_nvds.nvm
.PHONY: rebuild_otp_nvds
rebuild_otp_nvds: $(NVDS_TOOL) $(call data2deps,$(otp_nvds.data))
$< -i -r otp_nvds.nvm $(nvds_tool_otp_args) -b -o otp_nvds_new.nvm
mv -f otp_nvds.nvm otp_nvds_$(shell $(MD5SUM) otp_nvds.nvm | cut -d " " -f 1).nvm
mv otp_nvds_new.nvm otp_nvds.nvm
otp_nvds.nvm:
@echo "ERROR: Use build_archive_otp_nvds/rebuild_otp_nvds to make otp_nvds.nvm before invoking build_archive"
@exit 1
.PHONY: arch_add_otp_nvds
arch_add_otp_nvds: otp_nvds.nvm
$(call ATM_ISP_LOAD,$<,OtpNvds)
ifdef ADD_OTP_TO_ARCHIVE
build_archive: arch_add_otp_nvds
endif
endif # otp_nvds.data
NVDS_TOOL_F = $(if $(NVDS_SIZE),-f $(shell printf '%u' $(NVDS_SIZE)))
NVDS_TOOL_MPR_F = $(if $(MPR_SIZE),-f $(shell printf '%u' $(MPR_SIZE)))
ifdef flash_nvds.data
.PHONY: build_flash_nvds
build_flash_nvds: $(NVDS_TOOL) $(call data2deps,$(flash_nvds.data))
$< $(NVDS_TOOL_F) -b $(call data2opts,$(flash_nvds.data)) > flash_nvds.bin
.PHONY: rebuild_flash_nvds
rebuild_flash_nvds: $(NVDS_TOOL) $(call data2deps,$(flash_nvds.data))
$< $(NVDS_TOOL_F) -b -r flash_nvds.bin $(call data2opts,$(flash_nvds.data)) > flash_nvds_new.bin
mv -f flash_nvds.bin flash_nvds_$(shell $(MD5SUM) flash_nvds.bin | cut -d " " -f 1).bin
mv flash_nvds_new.bin flash_nvds.bin
flash_nvds.bin:
@echo "ERROR: Use re/build_flash_nvds to make flash_nvds.bin before invoking build_archive"
@exit 1
.PHONY: arch_add_flash_nvds
arch_add_flash_nvds: flash_nvds.bin
$(call ATM_ISP_LOAD,$< $(if $(NVDS_START),$(NVDS_START) $(if $(NVDS_SIZE),$(NVDS_SIZE))),FlashNvds)
build_archive: arch_add_flash_nvds
endif # flash_nvds.data
.PHONY: pull_otp_nvds
pull_otp_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_dump_nvm otp_nvds.nvm; exit"
.PHONY: show_otp_nvds
show_otp_nvds:
$(NVDS_TOOL) -i -r otp_nvds.nvm -v
.PHONY: show_pretty_otp_nvds
show_pretty_otp_nvds: $(NVDS_TOOL)
$(NVDS_TOOL) -i -r otp_nvds.nvm -p
.PHONY: show_otp_hw_cfg
show_otp_hw_cfg:
$(NVDS_TOOL) -i -r otp_nvds.nvm -v -N
.PHONY: show_pretty_otp_hw_cfg
show_pretty_otp_hw_cfg:
$(NVDS_TOOL) -i -r otp_nvds.nvm -p -N
.PHONY: split_otp_nvds
split_otp_nvds:
$(NVDS_TOOL) -i -r otp_nvds.nvm -S
.PHONY: push_otp_nvds
push_otp_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_burn_nvm otp_nvds.nvm; sydney_verify_nvm otp_nvds.nvm; exit"
.PHONY: pull_flash_nvds
pull_flash_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_dump_nvds flash_nvds.bin $(if $(NVDS_START),$(NVDS_START) $(if $(NVDS_SIZE),$(NVDS_SIZE) $(if $(FLASH_MEM_BANK),$(FLASH_MEM_BANK)))); exit"
.PHONY: show_flash_nvds
show_flash_nvds:
$(NVDS_TOOL) $(NVDS_TOOL_F) -r flash_nvds.bin -v
.PHONY: show_pretty_flash_nvds
show_pretty_flash_nvds:
$(NVDS_TOOL) $(NVDS_TOOL_F) -r flash_nvds.bin -p
.PHONY: split_flash_nvds
split_flash_nvds:
$(NVDS_TOOL) $(NVDS_TOOL_F) -r flash_nvds.bin -S
.PHONY: erase_flash_nvds
erase_flash_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_erase_nvds $(if $(NVDS_START),$(NVDS_START) $(if $(NVDS_SIZE),$(NVDS_SIZE))); exit"
.PHONY: push_flash_nvds
push_flash_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_load_nvds flash_nvds.bin $(if $(NVDS_START),$(NVDS_START) $(if $(NVDS_SIZE),$(NVDS_SIZE))); exit"
ifdef MPR_START
.PHONY: pull_mpr_nvds
pull_mpr_nvds: reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_dump_nvds $(DEF_MPR_BIN_FILE) $(if $(MPR_START),$(MPR_START) $(if $(MPR_SIZE),$(MPR_SIZE))); exit"
.PHONY: show_mpr_nvds
show_mpr_nvds:
$(NVDS_TOOL) $(NVDS_TOOL_MPR_F) -r $(DEF_MPR_BIN_FILE) -v
.PHONY: show_pretty_mpr_nvds
show_pretty_mpr_nvds:
$(NVDS_TOOL) $(NVDS_TOOL_MPR_F) -r $(DEF_MPR_BIN_FILE) -p
endif # MPR_START
ifdef USER_START
.PHONY: erase_user
erase_user: check_openocd reset_target
$(OPENOCD) -c "init; verify_rom_version; sydney_erase_nvds $(USER_START) $(USER_SIZE); exit"
endif
ifndef APP
.PHONY: iar_gen keil_arm_gen keil_gcc_gen ses_gen
iar_gen: ide_not_support
keil_arm_gen: ide_not_support
keil_gcc_gen: ide_not_support
ses_gen: ide_not_support
ide_not_support:
@echo "NVDS only application doesn't support IDE project generation"
endif
.PHONY: clean
clean::
-rm -f $(TAG_DATA_DIR)/*/*.bin
-rm -f $(TAG_DATA_DIR)/*/*_pre_bond.*
-rm -f $(TAG_DATA_DIR)/b6-USER_APP/*.o
-rm -f $(TAG_DATA_DIR)/b6-USER_APP/*.d
-rm -f $(TAG_DATA_DIR)/b6-USER_APP/*.elf
endif # __NVDS_MK__