flash.mk (3720B)
1 # Hey Emacs, this is a -*- makefile -*- 2 ############################################################################## 3 # Architecture or project specific options 4 # 5 6 DFU_ARGS ?= 7 ifneq ("$(SERIAL)","") 8 DFU_ARGS += -S $(SERIAL) 9 endif 10 11 DFU_UTIL ?= dfu-util 12 13 define EXEC_DFU_UTIL 14 if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \ 15 printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ 16 sleep $(BOOTLOADER_RETRY_TIME) ;\ 17 while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \ 18 printf "." ;\ 19 sleep $(BOOTLOADER_RETRY_TIME) ;\ 20 done ;\ 21 printf "\n" ;\ 22 fi 23 $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin 24 endef 25 26 WB32_DFU_UPDATER ?= wb32-dfu-updater_cli 27 28 define EXEC_WB32_DFU_UPDATER 29 if ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; then \ 30 printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ 31 sleep $(BOOTLOADER_RETRY_TIME) ;\ 32 while ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; do \ 33 printf "." ;\ 34 sleep $(BOOTLOADER_RETRY_TIME) ;\ 35 done ;\ 36 printf "\n" ;\ 37 fi 38 $(WB32_DFU_UPDATER) -D $(BUILD_DIR)/$(TARGET).bin && $(WB32_DFU_UPDATER) -R 39 endef 40 41 dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter 42 $(call EXEC_DFU_UTIL) 43 44 define EXEC_UF2_UTIL_DEPLOY 45 $(UF2CONV) --wait --deploy $(BUILD_DIR)/$(TARGET).uf2 46 endef 47 48 # TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS 49 # within the emulated eeprom via dfu-util or another tool 50 ifneq (,$(filter $(MAKECMDGOALS), dfu-util-split-left uf2-split-left)) 51 OPT_DEFS += -DINIT_EE_HANDS_LEFT 52 endif 53 54 ifneq (,$(filter $(MAKECMDGOALS), dfu-util-split-right uf2-split-right)) 55 OPT_DEFS += -DINIT_EE_HANDS_RIGHT 56 endif 57 58 dfu-util-split-left: dfu-util 59 60 dfu-util-split-right: dfu-util 61 62 uf2-split-left: flash 63 64 uf2-split-right: flash 65 66 ST_LINK_CLI ?= st-link_cli 67 ST_LINK_ARGS ?= 68 69 st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter 70 $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst 71 72 ST_FLASH ?= st-flash 73 ST_FLASH_ARGS ?= 74 75 st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter 76 $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex 77 78 # Autodetect teensy loader 79 ifndef TEENSY_LOADER_CLI 80 ifneq (, $(shell which teensy_loader_cli 2>/dev/null)) 81 TEENSY_LOADER_CLI ?= teensy_loader_cli 82 else 83 TEENSY_LOADER_CLI ?= teensy-loader-cli 84 endif 85 endif 86 87 TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT) 88 89 define EXEC_TEENSY 90 $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex 91 endef 92 93 teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter 94 $(call EXEC_TEENSY) 95 96 flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter 97 $(SILENT) || printf "Flashing for bootloader: $(BLUE)$(BOOTLOADER)$(NO_COLOR)\n" 98 ifneq ($(strip $(PROGRAM_CMD)),) 99 $(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD) 100 else ifeq ($(strip $(BOOTLOADER)),kiibohd) 101 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) 102 else ifeq ($(strip $(BOOTLOADER)),tinyuf2) 103 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) 104 else ifeq ($(strip $(BOOTLOADER)),uf2boot) 105 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) 106 else ifeq ($(strip $(BOOTLOADER)),rp2040) 107 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) 108 else ifeq ($(strip $(MCU_FAMILY)),KINETIS) 109 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY) 110 else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062) 111 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY) 112 else ifeq ($(strip $(MCU_FAMILY)),STM32) 113 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) 114 else ifeq ($(strip $(MCU_FAMILY)),WB32) 115 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_WB32_DFU_UPDATER) 116 else ifeq ($(strip $(MCU_FAMILY)),AT32) 117 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) 118 else ifeq ($(strip $(MCU_FAMILY)),GD32V) 119 $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) 120 else 121 $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" 122 endif