aboutsummaryrefslogtreecommitdiffstats
path: root/Bootloaders/DFU
diff options
context:
space:
mode:
Diffstat (limited to 'Bootloaders/DFU')
-rw-r--r--Bootloaders/DFU/BootloaderDFU.c46
-rw-r--r--Bootloaders/DFU/Descriptors.c13
-rw-r--r--Bootloaders/DFU/Descriptors.h9
-rw-r--r--Bootloaders/DFU/asf.xml312
-rw-r--r--Bootloaders/DFU/makefile14
5 files changed, 220 insertions, 174 deletions
diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c
index f20cdd72b..883afef03 100644
--- a/Bootloaders/DFU/BootloaderDFU.c
+++ b/Bootloaders/DFU/BootloaderDFU.c
@@ -136,8 +136,8 @@ void Application_Jump_Check(void)
if (!(BootloaderAPI_ReadFuse(GET_HIGH_FUSE_BITS) & ~FUSE_BOOTRST))
{
/* If the reset source was not an external reset or the key is correct, clear it and jump to the application */
- if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY))
- JumpToApplication = true;
+ //if (!(MCUSR & (1 << EXTRF)) || (MagicBootKey == MAGIC_BOOT_KEY))
+ // JumpToApplication = true;
/* Clear reset source */
MCUSR &= ~(1 << EXTRF);
@@ -146,8 +146,8 @@ void Application_Jump_Check(void)
{
/* If the reset source was the bootloader and the key is correct, clear it and jump to the application;
* this can happen in the HWBE fuse is set, and the HBE pin is low during the watchdog reset */
- if ((MCUSR & (1 << WDRF)) && (MagicBootKey == MAGIC_BOOT_KEY))
- JumpToApplication = true;
+ //if ((MCUSR & (1 << WDRF)) && (MagicBootKey == MAGIC_BOOT_KEY))
+ // JumpToApplication = true;
/* Clear reset source */
MCUSR &= ~(1 << WDRF);
@@ -182,14 +182,32 @@ int main(void)
SetupHardware();
/* Turn on first LED on the board to indicate that the bootloader has started */
- LEDs_SetAllLEDs(LEDS_LED1);
+ LEDs_SetAllLEDs(LEDS_LED1 | LEDS_LED2);
/* Enable global interrupts so that the USB stack can function */
GlobalInterruptEnable();
+
+ #if (BOARD == BOARD_QMK)
+ uint16_t keypress = 0;
+ #endif
+
/* Run the USB management task while the bootloader is supposed to be running */
- while (RunBootloader || WaitForExit)
+ while (RunBootloader || WaitForExit) {
USB_USBTask();
+ #if (BOARD == BOARD_QMK)
+ bool pressed = (PIN(QMK_ESC_INPUT) & NUM(QMK_ESC_INPUT));
+ if ((DFU_State == dfuIDLE) && (keypress > 5000) && pressed) {
+ break;
+ }
+ if (pressed) {
+ keypress++;
+ } else {
+ keypress = 0;
+ }
+
+ #endif
+ }
/* Wait a short time to end all USB transactions and then disconnect */
_delay_us(1000);
@@ -215,6 +233,15 @@ static void SetupHardware(void)
MCUCR = (1 << IVCE);
MCUCR = (1 << IVSEL);
+ #if (BOARD == BOARD_QMK)
+ // output setup
+ DDR(QMK_ESC_OUTPUT) |= NUM(QMK_ESC_OUTPUT);
+ PORT(QMK_ESC_OUTPUT) |= NUM(QMK_ESC_OUTPUT);
+
+ // row setup
+ DDR(QMK_ESC_INPUT) |= NUM(QMK_ESC_INPUT);
+ #endif
+
/* Initialize the USB and other board hardware drivers */
USB_Init();
LEDs_Init();
@@ -222,7 +249,8 @@ static void SetupHardware(void)
/* Bootloader active LED toggle timer initialization */
TIMSK1 = (1 << TOIE1);
TCCR1B = ((1 << CS11) | (1 << CS10));
-}
+
+}
/** Resets all configured hardware required for the bootloader back to their original states. */
static void ResetHardware(void)
@@ -238,6 +266,10 @@ static void ResetHardware(void)
/* Relocate the interrupt vector table back to the application section */
MCUCR = (1 << IVCE);
MCUCR = 0;
+
+ #if (BOARD == BOARD_QMK)
+ DDR(QMK_ESC_OUTPUT) = PORT(QMK_ESC_OUTPUT) = DDR(QMK_ESC_INPUT) = PORT(QMK_ESC_INPUT) = 0;
+ #endif
}
/** ISR to periodically toggle the LEDs on the board to indicate that the bootloader is active. */
diff --git a/Bootloaders/DFU/Descriptors.c b/Bootloaders/DFU/Descriptors.c
index 234469d37..dcad11d6c 100644
--- a/Bootloaders/DFU/Descriptors.c
+++ b/Bootloaders/DFU/Descriptors.c
@@ -36,6 +36,14 @@
*/
#include "Descriptors.h"
+#include "Keyboard.h"
+
+ #ifndef MANUFACTURER
+ #define MANUFACTURER QMK
+#endif
+#ifndef PRODUCT
+ #define PRODUCT Keyboard
+#endif
/** Device descriptor structure. This descriptor, located in SRAM memory, describes the overall
* device characteristics, including the supported USB version, control endpoint size and the
@@ -125,13 +133,13 @@ const USB_Descriptor_String_t LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGU
* form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
* Descriptor.
*/
-const USB_Descriptor_String_t ManufacturerString = USB_STRING_DESCRIPTOR(L"LUFA Library");
+const USB_Descriptor_String_t ManufacturerString = USB_STRING_DESCRIPTOR(LSTR(MANUFACTURER));
/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
* and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
* Descriptor.
*/
-const USB_Descriptor_String_t ProductString = USB_STRING_DESCRIPTOR(L"LUFA DFU");
+const USB_Descriptor_String_t ProductString = USB_STRING_DESCRIPTOR(LSTR(PRODUCT));
/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
* documentation) by the application code so that the address and size of a requested descriptor can be given
@@ -182,4 +190,3 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
*DescriptorAddress = Address;
return Size;
}
-
diff --git a/Bootloaders/DFU/Descriptors.h b/Bootloaders/DFU/Descriptors.h
index d70b477dc..40f604a1e 100644
--- a/Bootloaders/DFU/Descriptors.h
+++ b/Bootloaders/DFU/Descriptors.h
@@ -189,6 +189,13 @@
const uint16_t wIndex,
const void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
+
+ // convert to L string
+ #define LSTR(s) XLSTR(s)
+ #define XLSTR(s) L ## #s
+ // convert to string
+ #define STR(s) XSTR(s)
+ #define XSTR(s) #s
-#endif
+#endif
diff --git a/Bootloaders/DFU/asf.xml b/Bootloaders/DFU/asf.xml
index 6f3312b76..f56aba69f 100644
--- a/Bootloaders/DFU/asf.xml
+++ b/Bootloaders/DFU/asf.xml
@@ -1,156 +1,156 @@
-<asf xmlversion="1.0">
- <project caption="DFU Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.128_4" force-caption="true" workspace-name="lufa_dfu_128kb_4kb_">
- <require idref="lufa.bootloaders.dfu"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="at90usb1287"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <config name="config.compiler.optimization.level" value="size"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
-
- <build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
- <build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
-
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
- </project>
-
- <project caption="DFU Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.64_4" force-caption="true" workspace-name="lufa_dfu_64kb_4kb_">
- <require idref="lufa.bootloaders.dfu"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="at90usb647"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <config name="config.compiler.optimization.level" value="size"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
-
- <build type="define" name="BOOT_START_ADDR" value="0xF000"/>
- <build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
-
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
- </project>
-
- <project caption="DFU Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.32_4" force-caption="true" workspace-name="lufa_dfu_32kb_4kb_">
- <require idref="lufa.bootloaders.dfu"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="atmega32u4"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <config name="config.compiler.optimization.level" value="size"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
-
- <build type="define" name="BOOT_START_ADDR" value="0x7000"/>
- <build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
-
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
- </project>
-
- <project caption="DFU Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.16_4" force-caption="true" workspace-name="lufa_dfu_16kb_4kb_">
- <require idref="lufa.bootloaders.dfu"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="atmega16u2"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
-
- <build type="define" name="BOOT_START_ADDR" value="0x3000"/>
- <build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
-
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
- </project>
-
- <project caption="DFU Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.8_4" force-caption="true" workspace-name="lufa_dfu_8kb_4kb_">
- <require idref="lufa.bootloaders.dfu"/>
- <require idref="lufa.boards.dummy.avr8"/>
- <generator value="as5_8"/>
-
- <device-support value="atmega8u2"/>
- <config name="lufa.drivers.board.name" value="none"/>
-
- <build type="define" name="F_CPU" value="16000000UL"/>
- <build type="define" name="F_USB" value="16000000UL"/>
-
- <build type="define" name="BOOT_START_ADDR" value="0x1000"/>
- <build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
-
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
- <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
- <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
- </project>
-
- <module type="application" id="lufa.bootloaders.dfu" caption="DFU Bootloader">
- <info type="description" value="summary">
- DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host.
- </info>
-
- <info type="gui-flag" value="move-to-root"/>
-
- <info type="keyword" value="Technology">
- <keyword value="Bootloaders"/>
- <keyword value="USB Device"/>
- </info>
-
- <device-support-alias value="lufa_avr8"/>
- <device-support-alias value="lufa_xmega"/>
- <device-support-alias value="lufa_uc3"/>
-
- <build type="include-path" value="."/>
- <build type="c-source" value="BootloaderDFU.c"/>
- <build type="header-file" value="BootloaderDFU.h"/>
- <build type="c-source" value="Descriptors.c"/>
- <build type="header-file" value="Descriptors.h"/>
- <build type="c-source" value="BootloaderAPI.c"/>
- <build type="header-file" value="BootloaderAPI.h"/>
- <build type="asm-source" value="BootloaderAPITable.S"/>
-
- <build type="module-config" subtype="path" value="Config"/>
- <build type="header-file" value="Config/LUFAConfig.h"/>
- <build type="header-file" value="Config/AppConfig.h"/>
-
- <build type="distribute" subtype="user-file" value="doxyfile"/>
- <build type="distribute" subtype="user-file" value="BootloaderDFU.txt"/>
-
- <require idref="lufa.common"/>
- <require idref="lufa.platform"/>
- <require idref="lufa.drivers.usb"/>
- <require idref="lufa.drivers.board"/>
- <require idref="lufa.drivers.board.leds"/>
- </module>
-</asf>
+<asf xmlversion="1.0">
+ <project caption="DFU Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.128_4" force-caption="true" workspace-name="lufa_dfu_128kb_4kb_">
+ <require idref="lufa.bootloaders.dfu"/>
+ <require idref="lufa.boards.dummy.avr8"/>
+ <generator value="as5_8"/>
+
+ <device-support value="at90usb1287"/>
+ <config name="lufa.drivers.board.name" value="none"/>
+
+ <config name="config.compiler.optimization.level" value="size"/>
+
+ <build type="define" name="F_CPU" value="16000000UL"/>
+ <build type="define" name="F_USB" value="16000000UL"/>
+
+ <build type="define" name="BOOT_START_ADDR" value="0x1F000"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.text=0x1F000"/>
+
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FFA0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FFE0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FFF8"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+ </project>
+
+ <project caption="DFU Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.64_4" force-caption="true" workspace-name="lufa_dfu_64kb_4kb_">
+ <require idref="lufa.bootloaders.dfu"/>
+ <require idref="lufa.boards.dummy.avr8"/>
+ <generator value="as5_8"/>
+
+ <device-support value="at90usb647"/>
+ <config name="lufa.drivers.board.name" value="none"/>
+
+ <config name="config.compiler.optimization.level" value="size"/>
+
+ <build type="define" name="F_CPU" value="16000000UL"/>
+ <build type="define" name="F_USB" value="16000000UL"/>
+
+ <build type="define" name="BOOT_START_ADDR" value="0xF000"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.text=0xF000"/>
+
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0xFFA0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0xFFE0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0xFFF8"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+ </project>
+
+ <project caption="DFU Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.32_4" force-caption="true" workspace-name="lufa_dfu_32kb_4kb_">
+ <require idref="lufa.bootloaders.dfu"/>
+ <require idref="lufa.boards.dummy.avr8"/>
+ <generator value="as5_8"/>
+
+ <device-support value="atmega32u4"/>
+ <config name="lufa.drivers.board.name" value="none"/>
+
+ <config name="config.compiler.optimization.level" value="size"/>
+
+ <build type="define" name="F_CPU" value="16000000UL"/>
+ <build type="define" name="F_USB" value="16000000UL"/>
+
+ <build type="define" name="BOOT_START_ADDR" value="0x7000"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.text=0x7000"/>
+
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x7FA0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x7FE0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x7FF8"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+ </project>
+
+ <project caption="DFU Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.16_4" force-caption="true" workspace-name="lufa_dfu_16kb_4kb_">
+ <require idref="lufa.bootloaders.dfu"/>
+ <require idref="lufa.boards.dummy.avr8"/>
+ <generator value="as5_8"/>
+
+ <device-support value="atmega16u2"/>
+ <config name="lufa.drivers.board.name" value="none"/>
+
+ <build type="define" name="F_CPU" value="16000000UL"/>
+ <build type="define" name="F_USB" value="16000000UL"/>
+
+ <build type="define" name="BOOT_START_ADDR" value="0x3000"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
+
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x3FA0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x3FE0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x3FF8"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+ </project>
+
+ <project caption="DFU Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.dfu.avr8.8_4" force-caption="true" workspace-name="lufa_dfu_8kb_4kb_">
+ <require idref="lufa.bootloaders.dfu"/>
+ <require idref="lufa.boards.dummy.avr8"/>
+ <generator value="as5_8"/>
+
+ <device-support value="atmega8u2"/>
+ <config name="lufa.drivers.board.name" value="none"/>
+
+ <build type="define" name="F_CPU" value="16000000UL"/>
+ <build type="define" name="F_USB" value="16000000UL"/>
+
+ <build type="define" name="BOOT_START_ADDR" value="0x1000"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.text=0x1000"/>
+
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_trampolines=0x1FA0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Trampolines"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_jumptable=0x1FE0"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_JumpTable"/>
+ <build type="linker-config" subtype="flags" value="--section-start=.apitable_signatures=0x1FF8"/>
+ <build type="linker-config" subtype="flags" value="--undefined=BootloaderAPI_Signatures"/>
+ </project>
+
+ <module type="application" id="lufa.bootloaders.dfu" caption="DFU Bootloader">
+ <info type="description" value="summary">
+ DFU Class Bootloader, capable of reprogramming a device using the Atmel FLIP or other AVR DFU programming software when plugged into a host.
+ </info>
+
+ <info type="gui-flag" value="move-to-root"/>
+
+ <info type="keyword" value="Technology">
+ <keyword value="Bootloaders"/>
+ <keyword value="USB Device"/>
+ </info>
+
+ <device-support-alias value="lufa_avr8"/>
+ <device-support-alias value="lufa_xmega"/>
+ <device-support-alias value="lufa_uc3"/>
+
+ <build type="include-path" value="."/>
+ <build type="c-source" value="BootloaderDFU.c"/>
+ <build type="header-file" value="BootloaderDFU.h"/>
+ <build type="c-source" value="Descriptors.c"/>
+ <build type="header-file" value="Descriptors.h"/>
+ <build type="c-source" value="BootloaderAPI.c"/>
+ <build type="header-file" value="BootloaderAPI.h"/>
+ <build type="asm-source" value="BootloaderAPITable.S"/>
+
+ <build type="module-config" subtype="path" value="Config"/>
+ <build type="header-file" value="Config/LUFAConfig.h"/>
+ <build type="header-file" value="Config/AppConfig.h"/>
+
+ <build type="distribute" subtype="user-file" value="doxyfile"/>
+ <build type="distribute" subtype="user-file" value="BootloaderDFU.txt"/>
+
+ <require idref="lufa.common"/>
+ <require idref="lufa.platform"/>
+ <require idref="lufa.drivers.usb"/>
+ <require idref="lufa.drivers.board"/>
+ <require idref="lufa.drivers.board.leds"/>
+ </module>
+</asf>
diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile
index 2859aa0b1..b9b7a73d4 100644
--- a/Bootloaders/DFU/makefile
+++ b/Bootloaders/DFU/makefile
@@ -11,11 +11,11 @@
# Run "make help" for target help.
-MCU = at90usb1287
-ARCH = AVR8
-BOARD = USBKEY
-F_CPU = 8000000
-F_USB = $(F_CPU)
+MCU ?= atmega32u4
+ARCH ?= AVR8
+BOARD = QMK
+F_CPU ?= 16000000
+F_USB ?= $(F_CPU)
OPTIMIZATION = s
TARGET = BootloaderDFU
SRC = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB)
@@ -27,8 +27,8 @@ LTO = Y
# Flash size and bootloader section sizes of the target, in KB. These must
# match the target's total FLASH size and the bootloader size set in the
# device's fuses.
-FLASH_SIZE_KB = 128
-BOOT_SECTION_SIZE_KB = 8
+FLASH_SIZE_KB ?= 32
+BOOT_SECTION_SIZE_KB ?= 4
# Bootloader address calculation formulas
# Do not modify these macros, but rather modify the dependent values above.