You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.5 KiB

  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. dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
  23. $(call EXEC_DFU_UTIL)
  24. # TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS
  25. # within the emulated eeprom via dfu-util or another tool
  26. ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left))
  27. OPT_DEFS += -DINIT_EE_HANDS_LEFT
  28. endif
  29. ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right))
  30. OPT_DEFS += -DINIT_EE_HANDS_RIGHT
  31. endif
  32. dfu-util-split-left: dfu-util
  33. dfu-util-split-right: dfu-util
  34. ST_LINK_CLI ?= st-link_cli
  35. ST_LINK_ARGS ?=
  36. st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter
  37. $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst
  38. ST_FLASH ?= st-flash
  39. ST_FLASH_ARGS ?=
  40. st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter
  41. $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex
  42. # Autodetect teensy loader
  43. ifndef TEENSY_LOADER_CLI
  44. ifneq (, $(shell which teensy-loader-cli 2>/dev/null))
  45. TEENSY_LOADER_CLI ?= teensy-loader-cli
  46. else
  47. TEENSY_LOADER_CLI ?= teensy_loader_cli
  48. endif
  49. endif
  50. TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT)
  51. define EXEC_TEENSY
  52. $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex
  53. endef
  54. teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter
  55. $(call EXEC_TEENSY)
  56. flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter
  57. ifneq ($(strip $(PROGRAM_CMD)),)
  58. $(UNSYNC_OUTPUT_CMD) && $(PROGRAM_CMD)
  59. else ifeq ($(strip $(BOOTLOADER)),kiibohd)
  60. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  61. else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
  62. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
  63. else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062)
  64. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
  65. else ifeq ($(strip $(MCU_FAMILY)),STM32)
  66. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  67. else ifeq ($(strip $(MCU_FAMILY)),GD32V)
  68. $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
  69. else
  70. $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)"
  71. endif