flash.mk 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # Hey Emacs, this is a -*- makefile -*-
  2. ##############################################################################
  3. # Architecture or project specific options
  4. #
  5. DFU_ARGS ?=
  6. ifneq ("$(SERIAL)","")
  7. DFU_ARGS += -S $(SERIAL)
  8. endif
  9. DFU_UTIL ?= dfu-util
  10. define EXEC_DFU_UTIL
  11. if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \
  12. printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\
  13. sleep $(BOOTLOADER_RETRY_TIME) ;\
  14. while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \
  15. printf "." ;\
  16. sleep $(BOOTLOADER_RETRY_TIME) ;\
  17. done ;\
  18. printf "\n" ;\
  19. fi
  20. $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin
  21. endef
  22. define EXEC_WB32_DFU_UPDATER
  23. if ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; then \
  24. printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\
  25. sleep $(BOOTLOADER_RETRY_TIME) ;\
  26. while ! wb32-dfu-updater_cli -l | grep -q "Found DFU"; do \
  27. printf "." ;\
  28. sleep $(BOOTLOADER_RETRY_TIME) ;\
  29. done ;\
  30. printf "\n" ;\
  31. fi
  32. wb32-dfu-updater_cli -D $(BUILD_DIR)/$(TARGET).bin
  33. endef
  34. dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
  35. $(call EXEC_DFU_UTIL)
  36. # TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS
  37. # within the emulated eeprom via dfu-util or another tool
  38. ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left))
  39. OPT_DEFS += -DINIT_EE_HANDS_LEFT
  40. endif
  41. ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right))
  42. OPT_DEFS += -DINIT_EE_HANDS_RIGHT
  43. endif
  44. dfu-util-split-left: dfu-util
  45. dfu-util-split-right: dfu-util
  46. ST_LINK_CLI ?= st-link_cli
  47. ST_LINK_ARGS ?=
  48. st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter
  49. $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst
  50. ST_FLASH ?= st-flash
  51. ST_FLASH_ARGS ?=
  52. st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter
  53. $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex
  54. # Autodetect teensy loader
  55. ifndef TEENSY_LOADER_CLI
  56. ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
  57. TEENSY_LOADER_CLI ?= teensy-loader-cli
  58. else
  59. TEENSY_LOADER_CLI ?= teensy_loader_cli
  60. endif
  61. endif
  62. TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT)
  63. define EXEC_TEENSY
  64. $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
  65. endef
  66. teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter
  67. $(call EXEC_TEENSY)
  68. flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
  69. ifneq ($(strip $(PROGRAM_CMD)),)
  70. $(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD)
  71. else ifeq ($(strip $(BOOTLOADER)),kiibohd)
  72. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  73. else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
  74. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
  75. else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062)
  76. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
  77. else ifeq ($(strip $(MCU_FAMILY)),STM32)
  78. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  79. else ifeq ($(strip $(MCU_FAMILY)),WB32)
  80. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_WB32_DFU_UPDATER)
  81. else ifeq ($(strip $(MCU_FAMILY)),GD32V)
  82. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  83. else
  84. $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)"
  85. endif