diff options
Diffstat (limited to 'platforms/chibios/flash.mk')
-rw-r--r-- | platforms/chibios/flash.mk | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/platforms/chibios/flash.mk b/platforms/chibios/flash.mk new file mode 100644 index 000000000..46aff6e4b --- /dev/null +++ b/platforms/chibios/flash.mk | |||
@@ -0,0 +1,87 @@ | |||
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 | dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter | ||
27 | $(call EXEC_DFU_UTIL) | ||
28 | |||
29 | # TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS | ||
30 | # within the emulated eeprom via dfu-util or another tool | ||
31 | ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left)) | ||
32 | OPT_DEFS += -DINIT_EE_HANDS_LEFT | ||
33 | endif | ||
34 | |||
35 | ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right)) | ||
36 | OPT_DEFS += -DINIT_EE_HANDS_RIGHT | ||
37 | endif | ||
38 | |||
39 | dfu-util-split-left: dfu-util | ||
40 | |||
41 | dfu-util-split-right: dfu-util | ||
42 | |||
43 | ST_LINK_CLI ?= st-link_cli | ||
44 | ST_LINK_ARGS ?= | ||
45 | |||
46 | st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter | ||
47 | $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst | ||
48 | |||
49 | ST_FLASH ?= st-flash | ||
50 | ST_FLASH_ARGS ?= | ||
51 | |||
52 | st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter | ||
53 | $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex | ||
54 | |||
55 | # Autodetect teensy loader | ||
56 | ifndef TEENSY_LOADER_CLI | ||
57 | ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) | ||
58 | TEENSY_LOADER_CLI ?= teensy-loader-cli | ||
59 | else | ||
60 | TEENSY_LOADER_CLI ?= teensy_loader_cli | ||
61 | endif | ||
62 | endif | ||
63 | |||
64 | TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT) | ||
65 | |||
66 | define EXEC_TEENSY | ||
67 | $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
68 | endef | ||
69 | |||
70 | teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter | ||
71 | $(call EXEC_TEENSY) | ||
72 | |||
73 | |||
74 | flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter | ||
75 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
76 | $(PROGRAM_CMD) | ||
77 | else ifeq ($(strip $(BOOTLOADER)),kiibohd) | ||
78 | $(call EXEC_DFU_UTIL) | ||
79 | else ifeq ($(strip $(MCU_FAMILY)),KINETIS) | ||
80 | $(call EXEC_TEENSY) | ||
81 | else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062) | ||
82 | $(call EXEC_TEENSY) | ||
83 | else ifeq ($(strip $(MCU_FAMILY)),STM32) | ||
84 | $(call EXEC_DFU_UTIL) | ||
85 | else | ||
86 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" | ||
87 | endif | ||