.PHONY: flash-fetch flash-push flash-clean-fetch flash-clean-push all: flash-fetch: $(MCU_FLASH_FETCH_FILE_HEX) flash-fetch-mem: $(MCU_MEM_FETCH_FILE_HEX) clean: flash-clean-fetch flash-clean-fetch: $(RM) -f -- $(MCU_FLASH_FETCH_FILE_BIN) $(MCU_FLASH_FETCH_FILE_HEX) *.tmp $(RM) -f -- $(MCU_MEM_FETCH_FILE_BIN) $(MCU_MEM_FETCH_FILE_HEX) flash-clean-push: $(RM) -f -- $(MCU_FLASH_PUSH_FILE_BIN) $(MCU_FLASH_PUSH_FILE_HEX) *.tmp $(RM) -f -- $(MCU_MEM_PUSH_FILE_BIN) $(MCU_MEM_PUSH_FILE_HEX) flash-clean: flash-clean-fetch flash-clean-push $(MCU_FLASH_FETCH_FILE_BIN): $(TIME) $(MCU_OPENOCD) -c "init" -c "reset init" -c "flash read_bank $(MCU_FLASH_FETCH_BANK) $@.tmp $(MCU_FLASH_FETCH_OFFSET) $(MCU_FLASH_FETCH_SIZE)" -c "exit" $(MV) $@.tmp $@ $(MCU_MEM_FETCH_FILE_BIN): $(MCU_OPENOCD) -c "init" -c "reset init" -c "dump_image $@.tmp $(MCU_MEM_FETCH_OFFSET) $(MCU_MEM_FETCH_SIZE)" -c "exit" $(MV) $@.tmp $@ %.hex: %.elf $(OBJCOPY) -O ihex $< $@.tmp $(MV) $@.tmp $@ clean: flash-clean-hex flash-clean-hex: $(RM) -rf $(MCU_FLASH_PUSH_FILE_HEX) %.hex: %.bin $(OBJCOPY) $(MCU_OBJCOPY_FETCH_OPTS) -I binary -O ihex $< $@.tmp $(MV) $@.tmp $@ flash-push: $(MCU_FLASH_PUSH_FILE_HEX) # see http://openocd.org/doc/html/Flash-Programming.html $(TIME) $(MCU_OPENOCD) -c "program $< verify reset exit $(MCU_FLASH_PUSH_OFFSET)" %-flash-push: MCU_FLASH_PUSH_FILE_HEX=$* make flash-push openocd: $(MCU_OPENOCD) openocd-bg: $(MCU_OPENOCD) & openocd-reset-bg: $(MCU_OPENOCD) -c "init" -c "reset init" & openocd-kill: killall $(MCU_OPENOCD_BIN) openocd-telnet: telnet localhost $(MCU_OPENOCD_TELNET_PORT)