diff options
author | Joel Challis <git@zvecr.com> | 2021-08-15 21:55:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-15 21:55:23 +0100 |
commit | ab941ce614e19a7f4bb5bd34dd0ab9eee86bdc27 (patch) | |
tree | ff8bfefacffaac38893dd423d018c84068258bd1 | |
parent | 4e3726bfe11b02757c5724211d2a0fc62c7f66e8 (diff) | |
download | qmk_firmware-ab941ce614e19a7f4bb5bd34dd0ab9eee86bdc27.tar.gz qmk_firmware-ab941ce614e19a7f4bb5bd34dd0ab9eee86bdc27.zip |
Move all the flash logic from tmk_core (#13927)
-rw-r--r-- | build_keyboard.mk | 1 | ||||
-rw-r--r-- | platforms/arm_atsam/flash.mk | 11 | ||||
-rw-r--r-- | platforms/avr/flash.mk | 179 | ||||
-rw-r--r-- | platforms/chibios/flash.mk | 87 | ||||
-rw-r--r-- | tmk_core/arm_atsam.mk | 7 | ||||
-rw-r--r-- | tmk_core/avr.mk | 175 | ||||
-rw-r--r-- | tmk_core/chibios.mk | 87 |
7 files changed, 278 insertions, 269 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk index 38ca2aaa9..262bfd9a7 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk | |||
@@ -375,6 +375,7 @@ ifneq ($(strip $(PROTOCOL)),) | |||
375 | else | 375 | else |
376 | include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk | 376 | include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk |
377 | endif | 377 | endif |
378 | -include $(TOP_DIR)/platforms/$(PLATFORM_KEY)/flash.mk | ||
378 | 379 | ||
379 | # TODO: remove this bodge? | 380 | # TODO: remove this bodge? |
380 | PROJECT_DEFS := $(OPT_DEFS) | 381 | PROJECT_DEFS := $(OPT_DEFS) |
diff --git a/platforms/arm_atsam/flash.mk b/platforms/arm_atsam/flash.mk new file mode 100644 index 000000000..444ba77f5 --- /dev/null +++ b/platforms/arm_atsam/flash.mk | |||
@@ -0,0 +1,11 @@ | |||
1 | # Hey Emacs, this is a -*- makefile -*- | ||
2 | ############################################################################## | ||
3 | # Architecture or project specific options | ||
4 | # | ||
5 | |||
6 | flash: bin | ||
7 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
8 | $(PROGRAM_CMD) | ||
9 | else | ||
10 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_ARCH)" | ||
11 | endif | ||
diff --git a/platforms/avr/flash.mk b/platforms/avr/flash.mk new file mode 100644 index 000000000..e679bf0ac --- /dev/null +++ b/platforms/avr/flash.mk | |||
@@ -0,0 +1,179 @@ | |||
1 | # Hey Emacs, this is a -*- makefile -*- | ||
2 | ############################################################################## | ||
3 | # Architecture or project specific options | ||
4 | # | ||
5 | |||
6 | # Autodetect teensy loader | ||
7 | ifndef TEENSY_LOADER_CLI | ||
8 | ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) | ||
9 | TEENSY_LOADER_CLI ?= teensy-loader-cli | ||
10 | else | ||
11 | TEENSY_LOADER_CLI ?= teensy_loader_cli | ||
12 | endif | ||
13 | endif | ||
14 | |||
15 | define EXEC_TEENSY | ||
16 | $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
17 | endef | ||
18 | |||
19 | teensy: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
20 | $(call EXEC_TEENSY) | ||
21 | |||
22 | DFU_PROGRAMMER ?= dfu-programmer | ||
23 | GREP ?= grep | ||
24 | |||
25 | define EXEC_DFU | ||
26 | if [ "$(1)" ]; then \ | ||
27 | echo "Flashing '$(1)' for EE_HANDS split keyboard support." ;\ | ||
28 | fi; \ | ||
29 | if ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; then\ | ||
30 | printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ | ||
31 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
32 | while ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; do\ | ||
33 | printf "." ;\ | ||
34 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
35 | done ;\ | ||
36 | printf "\n" ;\ | ||
37 | fi; \ | ||
38 | $(DFU_PROGRAMMER) $(MCU) get bootloader-version ;\ | ||
39 | if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ | ||
40 | $(DFU_PROGRAMMER) $(MCU) erase --force; \ | ||
41 | if [ "$(1)" ]; then \ | ||
42 | $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(QUANTUM_PATH)/split_common/$(1);\ | ||
43 | fi; \ | ||
44 | $(DFU_PROGRAMMER) $(MCU) flash --force $(BUILD_DIR)/$(TARGET).hex;\ | ||
45 | else \ | ||
46 | $(DFU_PROGRAMMER) $(MCU) erase; \ | ||
47 | if [ "$(1)" ]; then \ | ||
48 | $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(QUANTUM_PATH)/split_common/$(1);\ | ||
49 | fi; \ | ||
50 | $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex;\ | ||
51 | fi; \ | ||
52 | $(DFU_PROGRAMMER) $(MCU) reset | ||
53 | endef | ||
54 | |||
55 | dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
56 | $(call EXEC_DFU) | ||
57 | |||
58 | dfu-start: | ||
59 | $(DFU_PROGRAMMER) $(MCU) reset | ||
60 | $(DFU_PROGRAMMER) $(MCU) start | ||
61 | |||
62 | dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep | ||
63 | if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ | ||
64 | $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(BUILD_DIR)/$(TARGET).eep;\ | ||
65 | else\ | ||
66 | $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\ | ||
67 | fi | ||
68 | $(DFU_PROGRAMMER) $(MCU) reset | ||
69 | |||
70 | dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
71 | $(call EXEC_DFU,eeprom-lefthand.eep) | ||
72 | |||
73 | dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
74 | $(call EXEC_DFU,eeprom-righthand.eep) | ||
75 | |||
76 | AVRDUDE_PROGRAMMER ?= avrdude | ||
77 | |||
78 | define EXEC_AVRDUDE | ||
79 | list_devices() { \ | ||
80 | if $(GREP) -q -s icrosoft /proc/version; then \ | ||
81 | wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ | ||
82 | elif [ "`uname`" = "FreeBSD" ]; then \ | ||
83 | ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \ | ||
84 | else \ | ||
85 | ls /dev/tty*; \ | ||
86 | fi; \ | ||
87 | }; \ | ||
88 | USB= ;\ | ||
89 | printf "Waiting for USB serial port - reset your controller now (Ctrl+C to cancel)"; \ | ||
90 | TMP1=`mktemp`; \ | ||
91 | TMP2=`mktemp`; \ | ||
92 | list_devices > $$TMP1; \ | ||
93 | while [ -z "$$USB" ]; do \ | ||
94 | sleep $(BOOTLOADER_RETRY_TIME); \ | ||
95 | printf "."; \ | ||
96 | list_devices > $$TMP2; \ | ||
97 | USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ | ||
98 | mv $$TMP2 $$TMP1; \ | ||
99 | done; \ | ||
100 | rm $$TMP1; \ | ||
101 | echo ""; \ | ||
102 | echo "Device $$USB has appeared; assuming it is the controller."; \ | ||
103 | if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \ | ||
104 | USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ | ||
105 | echo "Remapped USB port to $$USB"; \ | ||
106 | sleep 1; \ | ||
107 | else \ | ||
108 | printf "Waiting for $$USB to become writable."; \ | ||
109 | while [ ! -w "$$USB" ]; do sleep $(BOOTLOADER_RETRY_TIME); printf "."; done; echo ""; \ | ||
110 | fi; \ | ||
111 | if [ -z "$(1)" ]; then \ | ||
112 | $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ | ||
113 | else \ | ||
114 | $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ | ||
115 | fi | ||
116 | endef | ||
117 | |||
118 | avrdude: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
119 | $(call EXEC_AVRDUDE) | ||
120 | |||
121 | avrdude-loop: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
122 | while true; do \ | ||
123 | $(call EXEC_AVRDUDE) ; \ | ||
124 | done | ||
125 | |||
126 | avrdude-split-left: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
127 | $(call EXEC_AVRDUDE,eeprom-lefthand.eep) | ||
128 | |||
129 | avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
130 | $(call EXEC_AVRDUDE,eeprom-righthand.eep) | ||
131 | |||
132 | define EXEC_USBASP | ||
133 | $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex | ||
134 | endef | ||
135 | |||
136 | usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
137 | $(call EXEC_USBASP) | ||
138 | |||
139 | BOOTLOADHID_PROGRAMMER ?= bootloadHID | ||
140 | |||
141 | define EXEC_BOOTLOADHID | ||
142 | # bootloadHid executable has no cross platform detect methods | ||
143 | # so keep running bootloadHid if the output contains "The specified device was not found" | ||
144 | until $(BOOTLOADHID_PROGRAMMER) -r $(BUILD_DIR)/$(TARGET).hex 2>&1 | tee /dev/stderr | grep -v "device was not found"; do\ | ||
145 | printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\ | ||
146 | sleep 5 ;\ | ||
147 | done | ||
148 | endef | ||
149 | |||
150 | bootloadHID: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
151 | $(call EXEC_BOOTLOADHID) | ||
152 | |||
153 | HID_BOOTLOADER_CLI ?= hid_bootloader_cli | ||
154 | |||
155 | define EXEC_HID_LUFA | ||
156 | $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
157 | endef | ||
158 | |||
159 | hid_bootloader: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
160 | $(call EXEC_HID_LUFA) | ||
161 | |||
162 | flash: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
163 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
164 | $(PROGRAM_CMD) | ||
165 | else ifeq ($(strip $(BOOTLOADER)), caterina) | ||
166 | $(call EXEC_AVRDUDE) | ||
167 | else ifeq ($(strip $(BOOTLOADER)), halfkay) | ||
168 | $(call EXEC_TEENSY) | ||
169 | else ifeq (dfu,$(findstring dfu,$(BOOTLOADER))) | ||
170 | $(call EXEC_DFU) | ||
171 | else ifeq ($(strip $(BOOTLOADER)), USBasp) | ||
172 | $(call EXEC_USBASP) | ||
173 | else ifeq ($(strip $(BOOTLOADER)), bootloadHID) | ||
174 | $(call EXEC_BOOTLOADHID) | ||
175 | else ifeq ($(strip $(BOOTLOADER)), qmk-hid) | ||
176 | $(call EXEC_HID_LUFA) | ||
177 | else | ||
178 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" | ||
179 | endif | ||
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 | ||
diff --git a/tmk_core/arm_atsam.mk b/tmk_core/arm_atsam.mk index e4bf60e1a..e9bdc2c3c 100644 --- a/tmk_core/arm_atsam.mk +++ b/tmk_core/arm_atsam.mk | |||
@@ -54,10 +54,3 @@ EXTRALIBDIRS = | |||
54 | bin: $(BUILD_DIR)/$(TARGET).hex | 54 | bin: $(BUILD_DIR)/$(TARGET).hex |
55 | $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin | 55 | $(OBJCOPY) -Iihex -Obinary $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin |
56 | $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; | 56 | $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; |
57 | |||
58 | flash: bin | ||
59 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
60 | $(PROGRAM_CMD) | ||
61 | else | ||
62 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_ARCH)" | ||
63 | endif | ||
diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index a44e15700..d7bee6d34 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk | |||
@@ -89,162 +89,6 @@ DEBUG_PORT = 4242 | |||
89 | DEBUG_HOST = localhost | 89 | DEBUG_HOST = localhost |
90 | 90 | ||
91 | #============================================================================ | 91 | #============================================================================ |
92 | # Autodetect teensy loader | ||
93 | ifndef TEENSY_LOADER_CLI | ||
94 | ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) | ||
95 | TEENSY_LOADER_CLI ?= teensy-loader-cli | ||
96 | else | ||
97 | TEENSY_LOADER_CLI ?= teensy_loader_cli | ||
98 | endif | ||
99 | endif | ||
100 | |||
101 | define EXEC_TEENSY | ||
102 | $(TEENSY_LOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
103 | endef | ||
104 | |||
105 | teensy: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
106 | $(call EXEC_TEENSY) | ||
107 | |||
108 | DFU_PROGRAMMER ?= dfu-programmer | ||
109 | GREP ?= grep | ||
110 | |||
111 | |||
112 | define EXEC_DFU | ||
113 | if [ "$(1)" ]; then \ | ||
114 | echo "Flashing '$(1)' for EE_HANDS split keyboard support." ;\ | ||
115 | fi; \ | ||
116 | if ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; then\ | ||
117 | printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ | ||
118 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
119 | while ! $(DFU_PROGRAMMER) $(MCU) get bootloader-version >/dev/null 2>/dev/null; do\ | ||
120 | printf "." ;\ | ||
121 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
122 | done ;\ | ||
123 | printf "\n" ;\ | ||
124 | fi; \ | ||
125 | $(DFU_PROGRAMMER) $(MCU) get bootloader-version ;\ | ||
126 | if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ | ||
127 | $(DFU_PROGRAMMER) $(MCU) erase --force; \ | ||
128 | if [ "$(1)" ]; then \ | ||
129 | $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(QUANTUM_PATH)/split_common/$(1);\ | ||
130 | fi; \ | ||
131 | $(DFU_PROGRAMMER) $(MCU) flash --force $(BUILD_DIR)/$(TARGET).hex;\ | ||
132 | else \ | ||
133 | $(DFU_PROGRAMMER) $(MCU) erase; \ | ||
134 | if [ "$(1)" ]; then \ | ||
135 | $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(QUANTUM_PATH)/split_common/$(1);\ | ||
136 | fi; \ | ||
137 | $(DFU_PROGRAMMER) $(MCU) flash $(BUILD_DIR)/$(TARGET).hex;\ | ||
138 | fi; \ | ||
139 | $(DFU_PROGRAMMER) $(MCU) reset | ||
140 | endef | ||
141 | |||
142 | dfu: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
143 | $(call EXEC_DFU) | ||
144 | |||
145 | dfu-start: | ||
146 | $(DFU_PROGRAMMER) $(MCU) reset | ||
147 | $(DFU_PROGRAMMER) $(MCU) start | ||
148 | |||
149 | dfu-ee: $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).eep | ||
150 | if $(DFU_PROGRAMMER) --version 2>&1 | $(GREP) -q 0.7 ; then\ | ||
151 | $(DFU_PROGRAMMER) $(MCU) flash --force --eeprom $(BUILD_DIR)/$(TARGET).eep;\ | ||
152 | else\ | ||
153 | $(DFU_PROGRAMMER) $(MCU) flash-eeprom $(BUILD_DIR)/$(TARGET).eep;\ | ||
154 | fi | ||
155 | $(DFU_PROGRAMMER) $(MCU) reset | ||
156 | |||
157 | dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
158 | $(call EXEC_DFU,eeprom-lefthand.eep) | ||
159 | |||
160 | dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size | ||
161 | $(call EXEC_DFU,eeprom-righthand.eep) | ||
162 | |||
163 | AVRDUDE_PROGRAMMER ?= avrdude | ||
164 | |||
165 | define EXEC_AVRDUDE | ||
166 | list_devices() { \ | ||
167 | if $(GREP) -q -s icrosoft /proc/version; then \ | ||
168 | wmic.exe path Win32_SerialPort get DeviceID 2>/dev/null | LANG=C perl -pne 's/COM(\d+)/COM.($$1-1)/e' | sed 's!COM!/dev/ttyS!' | xargs echo -n | sort; \ | ||
169 | elif [ "`uname`" = "FreeBSD" ]; then \ | ||
170 | ls /dev/tty* | grep -v '\.lock$$' | grep -v '\.init$$'; \ | ||
171 | else \ | ||
172 | ls /dev/tty*; \ | ||
173 | fi; \ | ||
174 | }; \ | ||
175 | USB= ;\ | ||
176 | printf "Waiting for USB serial port - reset your controller now (Ctrl+C to cancel)"; \ | ||
177 | TMP1=`mktemp`; \ | ||
178 | TMP2=`mktemp`; \ | ||
179 | list_devices > $$TMP1; \ | ||
180 | while [ -z "$$USB" ]; do \ | ||
181 | sleep $(BOOTLOADER_RETRY_TIME); \ | ||
182 | printf "."; \ | ||
183 | list_devices > $$TMP2; \ | ||
184 | USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \ | ||
185 | mv $$TMP2 $$TMP1; \ | ||
186 | done; \ | ||
187 | rm $$TMP1; \ | ||
188 | echo ""; \ | ||
189 | echo "Device $$USB has appeared; assuming it is the controller."; \ | ||
190 | if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \ | ||
191 | USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \ | ||
192 | echo "Remapped USB port to $$USB"; \ | ||
193 | sleep 1; \ | ||
194 | else \ | ||
195 | printf "Waiting for $$USB to become writable."; \ | ||
196 | while [ ! -w "$$USB" ]; do sleep $(BOOTLOADER_RETRY_TIME); printf "."; done; echo ""; \ | ||
197 | fi; \ | ||
198 | if [ -z "$(1)" ]; then \ | ||
199 | $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \ | ||
200 | else \ | ||
201 | $(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \ | ||
202 | fi | ||
203 | endef | ||
204 | |||
205 | avrdude: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
206 | $(call EXEC_AVRDUDE) | ||
207 | |||
208 | avrdude-loop: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
209 | while true; do \ | ||
210 | $(call EXEC_AVRDUDE) ; \ | ||
211 | done | ||
212 | |||
213 | avrdude-split-left: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
214 | $(call EXEC_AVRDUDE,eeprom-lefthand.eep) | ||
215 | |||
216 | avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
217 | $(call EXEC_AVRDUDE,eeprom-righthand.eep) | ||
218 | |||
219 | define EXEC_USBASP | ||
220 | $(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex | ||
221 | endef | ||
222 | |||
223 | usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
224 | $(call EXEC_USBASP) | ||
225 | |||
226 | BOOTLOADHID_PROGRAMMER ?= bootloadHID | ||
227 | |||
228 | define EXEC_BOOTLOADHID | ||
229 | # bootloadHid executable has no cross platform detect methods | ||
230 | # so keep running bootloadHid if the output contains "The specified device was not found" | ||
231 | until $(BOOTLOADHID_PROGRAMMER) -r $(BUILD_DIR)/$(TARGET).hex 2>&1 | tee /dev/stderr | grep -v "device was not found"; do\ | ||
232 | printf "$(MSG_BOOTLOADER_NOT_FOUND)" ;\ | ||
233 | sleep 5 ;\ | ||
234 | done | ||
235 | endef | ||
236 | |||
237 | bootloadHID: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
238 | $(call EXEC_BOOTLOADHID) | ||
239 | |||
240 | HID_BOOTLOADER_CLI ?= hid_bootloader_cli | ||
241 | |||
242 | define EXEC_HID_LUFA | ||
243 | $(HID_BOOTLOADER_CLI) -mmcu=$(MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
244 | endef | ||
245 | |||
246 | hid_bootloader: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
247 | $(call EXEC_HID_LUFA) | ||
248 | 92 | ||
249 | # Convert hex to bin. | 93 | # Convert hex to bin. |
250 | bin: $(BUILD_DIR)/$(TARGET).hex | 94 | bin: $(BUILD_DIR)/$(TARGET).hex |
@@ -335,22 +179,3 @@ production: $(BUILD_DIR)/$(TARGET).hex bootloader cpfirmware | |||
335 | @cat $(TARGET)_bootloader.hex >> $(TARGET)_production.hex | 179 | @cat $(TARGET)_bootloader.hex >> $(TARGET)_production.hex |
336 | echo "File sizes:" | 180 | echo "File sizes:" |
337 | $(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex | 181 | $(SIZE) $(TARGET).hex $(TARGET)_bootloader.hex $(TARGET)_production.hex |
338 | |||
339 | flash: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware | ||
340 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
341 | $(PROGRAM_CMD) | ||
342 | else ifeq ($(strip $(BOOTLOADER)), caterina) | ||
343 | $(call EXEC_AVRDUDE) | ||
344 | else ifeq ($(strip $(BOOTLOADER)), halfkay) | ||
345 | $(call EXEC_TEENSY) | ||
346 | else ifeq (dfu,$(findstring dfu,$(BOOTLOADER))) | ||
347 | $(call EXEC_DFU) | ||
348 | else ifeq ($(strip $(BOOTLOADER)), USBasp) | ||
349 | $(call EXEC_USBASP) | ||
350 | else ifeq ($(strip $(BOOTLOADER)), bootloadHID) | ||
351 | $(call EXEC_BOOTLOADHID) | ||
352 | else ifeq ($(strip $(BOOTLOADER)), qmk-hid) | ||
353 | $(call EXEC_HID_LUFA) | ||
354 | else | ||
355 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" | ||
356 | endif | ||
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index 7eda36046..827f080e5 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk | |||
@@ -325,95 +325,8 @@ MCUFLAGS = -mcpu=$(MCU) | |||
325 | 325 | ||
326 | DEBUG = gdb | 326 | DEBUG = gdb |
327 | 327 | ||
328 | DFU_ARGS ?= | ||
329 | ifneq ("$(SERIAL)","") | ||
330 | DFU_ARGS += -S $(SERIAL) | ||
331 | endif | ||
332 | |||
333 | ST_LINK_ARGS ?= | ||
334 | ST_FLASH_ARGS ?= | ||
335 | |||
336 | # List any extra directories to look for libraries here. | 328 | # List any extra directories to look for libraries here. |
337 | EXTRALIBDIRS = $(RULESPATH)/ld | 329 | EXTRALIBDIRS = $(RULESPATH)/ld |
338 | 330 | ||
339 | DFU_UTIL ?= dfu-util | ||
340 | ST_LINK_CLI ?= st-link_cli | ||
341 | ST_FLASH ?= st-flash | ||
342 | |||
343 | define EXEC_DFU_UTIL | ||
344 | if ! $(DFU_UTIL) -l | grep -q "Found DFU"; then \ | ||
345 | printf "$(MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY)" ;\ | ||
346 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
347 | while ! $(DFU_UTIL) -l | grep -q "Found DFU"; do \ | ||
348 | printf "." ;\ | ||
349 | sleep $(BOOTLOADER_RETRY_TIME) ;\ | ||
350 | done ;\ | ||
351 | printf "\n" ;\ | ||
352 | fi | ||
353 | $(DFU_UTIL) $(DFU_ARGS) -D $(BUILD_DIR)/$(TARGET).bin | ||
354 | endef | ||
355 | |||
356 | dfu-util: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter | ||
357 | $(call EXEC_DFU_UTIL) | ||
358 | |||
359 | # Legacy alias | ||
360 | dfu-util-wait: dfu-util | ||
361 | |||
362 | # TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS | ||
363 | # within the emulated eeprom via dfu-util or another tool | ||
364 | ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left)) | ||
365 | OPT_DEFS += -DINIT_EE_HANDS_LEFT | ||
366 | endif | ||
367 | |||
368 | ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right)) | ||
369 | OPT_DEFS += -DINIT_EE_HANDS_RIGHT | ||
370 | endif | ||
371 | |||
372 | dfu-util-split-left: dfu-util | ||
373 | |||
374 | dfu-util-split-right: dfu-util | ||
375 | |||
376 | |||
377 | st-link-cli: $(BUILD_DIR)/$(TARGET).hex sizeafter | ||
378 | $(ST_LINK_CLI) $(ST_LINK_ARGS) -q -c SWD -p $(BUILD_DIR)/$(TARGET).hex -Rst | ||
379 | |||
380 | st-flash: $(BUILD_DIR)/$(TARGET).hex sizeafter | ||
381 | $(ST_FLASH) $(ST_FLASH_ARGS) --reset --format ihex write $(BUILD_DIR)/$(TARGET).hex | ||
382 | |||
383 | |||
384 | # Autodetect teensy loader | ||
385 | ifndef TEENSY_LOADER_CLI | ||
386 | ifneq (, $(shell which teensy-loader-cli 2>/dev/null)) | ||
387 | TEENSY_LOADER_CLI ?= teensy-loader-cli | ||
388 | else | ||
389 | TEENSY_LOADER_CLI ?= teensy_loader_cli | ||
390 | endif | ||
391 | endif | ||
392 | |||
393 | TEENSY_LOADER_CLI_MCU ?= $(MCU_LDSCRIPT) | ||
394 | |||
395 | define EXEC_TEENSY | ||
396 | $(TEENSY_LOADER_CLI) -mmcu=$(TEENSY_LOADER_CLI_MCU) -w -v $(BUILD_DIR)/$(TARGET).hex | ||
397 | endef | ||
398 | |||
399 | teensy: $(BUILD_DIR)/$(TARGET).hex cpfirmware sizeafter | ||
400 | $(call EXEC_TEENSY) | ||
401 | |||
402 | bin: $(BUILD_DIR)/$(TARGET).bin sizeafter | 331 | bin: $(BUILD_DIR)/$(TARGET).bin sizeafter |
403 | $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; | 332 | $(COPY) $(BUILD_DIR)/$(TARGET).bin $(TARGET).bin; |
404 | |||
405 | |||
406 | flash: $(BUILD_DIR)/$(TARGET).bin cpfirmware sizeafter | ||
407 | ifneq ($(strip $(PROGRAM_CMD)),) | ||
408 | $(PROGRAM_CMD) | ||
409 | else ifeq ($(strip $(BOOTLOADER)),kiibohd) | ||
410 | $(call EXEC_DFU_UTIL) | ||
411 | else ifeq ($(strip $(MCU_FAMILY)),KINETIS) | ||
412 | $(call EXEC_TEENSY) | ||
413 | else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062) | ||
414 | $(call EXEC_TEENSY) | ||
415 | else ifeq ($(strip $(MCU_FAMILY)),STM32) | ||
416 | $(call EXEC_DFU_UTIL) | ||
417 | else | ||
418 | $(PRINT_OK); $(SILENT) || printf "$(MSG_FLASH_BOOTLOADER)" | ||
419 | endif | ||