From f9a6e34c28f6de0f6ec505144acc287b90326436 Mon Sep 17 00:00:00 2001
From: Fred Sundvik <fsundvik@gmail.com>
Date: Tue, 5 Jul 2016 19:28:17 +0300
Subject: [PATCH] Add dfu-util command for programming

Also add .bin generation, which is needed for dfu-util.
---
 tmk_core/avr.mk     | 1 +
 tmk_core/chibios.mk | 6 +++++-
 tmk_core/rules.mk   | 6 ++++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk
index 72be5e6da1..3bf2b34f88 100644
--- a/tmk_core/avr.mk
+++ b/tmk_core/avr.mk
@@ -10,6 +10,7 @@ AR = avr-ar rcs
 NM = avr-nm
 HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature
 EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) 
+BIN =
 
 
 
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk
index 0abb933a8d..cb67ac6f25 100644
--- a/tmk_core/chibios.mk
+++ b/tmk_core/chibios.mk
@@ -113,6 +113,7 @@ AR = arm-none-eabi-ar
 NM = arm-none-eabi-nm
 HEX = $(OBJCOPY) -O $(FORMAT)
 EEP = 
+BIN = $(OBJCOPY) -O binary
 
 THUMBFLAGS = -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB 
 
@@ -151,4 +152,7 @@ else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","")
 endif
 
 # List any extra directories to look for libraries here.
-EXTRALIBDIRS = $(RULESPATH)/ld
\ No newline at end of file
+EXTRALIBDIRS = $(RULESPATH)/ld
+
+dfu-util: $(BUILD_DIR)/$(TARGET).bin sizeafter
+	dfu-util -D $(BUILD_DIR)/$(TARGET).bin
\ No newline at end of file
diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk
index 7d3d8f9a6b..352e9314b6 100644
--- a/tmk_core/rules.mk
+++ b/tmk_core/rules.mk
@@ -234,6 +234,7 @@ MSG_COFF = Converting to AVR COFF:
 MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
 MSG_FLASH = Creating load file for Flash:
 MSG_EEPROM = Creating load file for EEPROM:
+MSG_BIN = Creating binary load file for Flash:
 MSG_EXTENDED_LISTING = Creating Extended Listing:
 MSG_SYMBOL_TABLE = Creating Symbol Table:
 MSG_LINKING = Linking:
@@ -369,6 +370,11 @@ gccversion :
 	$(eval CMD=$(NM) -n $< > $@ )
 	@$(BUILD_CMD)
 
+%.bin: %.elf
+	@$(SILENT) || printf "$(MSG_BIN) $@" | $(AWK_CMD)
+	$(eval CMD=$(BIN) $< $@ || exit 0)
+	@$(BUILD_CMD)
+
 # Create library from object files.
 .SECONDARY : $(BUILD_DIR)/$(TARGET).a
 .PRECIOUS : $(OBJ)