Add WSL specific logic for avrdude device detection (#12392)
This commit is contained in:
parent
4e2ab3a177
commit
60e1910e5b
1 changed files with 35 additions and 30 deletions
|
@ -154,38 +154,43 @@ dfu-split-left: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
|
||||||
dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
|
dfu-split-right: $(BUILD_DIR)/$(TARGET).hex cpfirmware check-size
|
||||||
$(call EXEC_DFU,eeprom-righthand.eep)
|
$(call EXEC_DFU,eeprom-righthand.eep)
|
||||||
|
|
||||||
|
AVRDUDE_PROGRAMMER ?= avrdude
|
||||||
|
|
||||||
define EXEC_AVRDUDE
|
define EXEC_AVRDUDE
|
||||||
USB= ;\
|
list_devices() { \
|
||||||
if $(GREP) -q -s Microsoft /proc/version; then \
|
if $(GREP) -q -s icrosoft /proc/version; then \
|
||||||
echo 'ERROR: AVR flashing cannot be automated within the Windows Subsystem for Linux (WSL) currently. Instead, take the .hex file generated and flash it using QMK Toolbox, AVRDUDE, AVRDUDESS, or XLoader.'; \
|
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; \
|
||||||
else \
|
|
||||||
printf "Detecting USB port, reset your controller now."; \
|
|
||||||
TMP1=`mktemp`; \
|
|
||||||
TMP2=`mktemp`; \
|
|
||||||
ls /dev/tty* > $$TMP1; \
|
|
||||||
while [ -z $$USB ]; do \
|
|
||||||
sleep 0.5; \
|
|
||||||
printf "."; \
|
|
||||||
ls /dev/tty* > $$TMP2; \
|
|
||||||
USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \
|
|
||||||
mv $$TMP2 $$TMP1; \
|
|
||||||
done; \
|
|
||||||
rm $$TMP1; \
|
|
||||||
echo ""; \
|
|
||||||
echo "Device $$USB has appeared; assuming it is the controller."; \
|
|
||||||
if $(GREP) -q -s 'MINGW\|MSYS' /proc/version; then \
|
|
||||||
USB=`echo "$$USB" | perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \
|
|
||||||
echo "Remapped MSYS2 USB port to $$USB"; \
|
|
||||||
sleep 1; \
|
|
||||||
else \
|
else \
|
||||||
printf "Waiting for $$USB to become writable."; \
|
ls /dev/tty*; \
|
||||||
while [ ! -w "$$USB" ]; do sleep 0.5; printf "."; done; echo ""; \
|
|
||||||
fi; \
|
fi; \
|
||||||
if [ -z "$(1)" ]; then \
|
}; \
|
||||||
avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \
|
USB= ;\
|
||||||
else \
|
printf "Detecting USB port, reset your controller now."; \
|
||||||
avrdude -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \
|
TMP1=`mktemp`; \
|
||||||
fi \
|
TMP2=`mktemp`; \
|
||||||
|
list_devices > $$TMP1; \
|
||||||
|
while [ -z $$USB ]; do \
|
||||||
|
sleep 0.5; \
|
||||||
|
printf "."; \
|
||||||
|
list_devices > $$TMP2; \
|
||||||
|
USB=`comm -13 $$TMP1 $$TMP2 | $(GREP) -o '/dev/tty.*'`; \
|
||||||
|
mv $$TMP2 $$TMP1; \
|
||||||
|
done; \
|
||||||
|
rm $$TMP1; \
|
||||||
|
echo ""; \
|
||||||
|
echo "Device $$USB has appeared; assuming it is the controller."; \
|
||||||
|
if $(GREP) -q -s 'MINGW\|MSYS\|icrosoft' /proc/version; then \
|
||||||
|
USB=`echo "$$USB" | LANG=C perl -pne 's/\/dev\/ttyS(\d+)/COM.($$1+1)/e'`; \
|
||||||
|
echo "Remapped USB port to $$USB"; \
|
||||||
|
sleep 1; \
|
||||||
|
else \
|
||||||
|
printf "Waiting for $$USB to become writable."; \
|
||||||
|
while [ ! -w "$$USB" ]; do sleep 0.5; printf "."; done; echo ""; \
|
||||||
|
fi; \
|
||||||
|
if [ -z "$(1)" ]; then \
|
||||||
|
$(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex; \
|
||||||
|
else \
|
||||||
|
$(AVRDUDE_PROGRAMMER) -p $(MCU) -c avr109 -P $$USB -U flash:w:$(BUILD_DIR)/$(TARGET).hex -U eeprom:w:$(QUANTUM_PATH)/split_common/$(1); \
|
||||||
fi
|
fi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
@ -204,7 +209,7 @@ avrdude-split-right: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware
|
||||||
$(call EXEC_AVRDUDE,eeprom-righthand.eep)
|
$(call EXEC_AVRDUDE,eeprom-righthand.eep)
|
||||||
|
|
||||||
define EXEC_USBASP
|
define EXEC_USBASP
|
||||||
avrdude -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex
|
$(AVRDUDE_PROGRAMMER) -p $(AVRDUDE_MCU) -c usbasp -U flash:w:$(BUILD_DIR)/$(TARGET).hex
|
||||||
endef
|
endef
|
||||||
|
|
||||||
usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware
|
usbasp: $(BUILD_DIR)/$(TARGET).hex check-size cpfirmware
|
||||||
|
|
Loading…
Reference in a new issue