qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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