aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbootloaders/caterina_LUFA/Caterina.c92
-rwxr-xr-xbootloaders/caterina_LUFA/Caterina.h15
-rw-r--r--bootloaders/caterina_LUFA/Caterina.hex452
-rwxr-xr-xbootloaders/caterina_LUFA/makefile2
4 files changed, 325 insertions, 236 deletions
diff --git a/bootloaders/caterina_LUFA/Caterina.c b/bootloaders/caterina_LUFA/Caterina.c
index f95613f..82d468f 100755
--- a/bootloaders/caterina_LUFA/Caterina.c
+++ b/bootloaders/caterina_LUFA/Caterina.c
@@ -56,26 +56,58 @@ static uint32_t CurrAddress;
*/
static bool RunBootloader = true;
-void StartSketch()
+/* Pulse generation counters to keep track of the time remaining for each pulse type */
+#define TX_RX_LED_PULSE_PERIOD 100
+uint16_t TxLEDPulse = 0; // time remaining for Tx LED pulse
+uint16_t RxLEDPulse = 0; // time remaining for Rx LED pulse
+
+/* Bootloader timeout timer */
+uint16_t Timeout = 0;
+
+void StartSketch(void)
{
cli();
+
+ /* Undo TIMER1 setup and clear the count before running the sketch */
+ TIMSK1 = 0;
+ TCCR1B = 0;
+ TCNT1H = 0; // 16-bit write to TCNT1 requires high byte be written first
+ TCNT1L = 0;
+
/* Relocate the interrupt vector table to the application section */
MCUCR = (1 << IVCE);
MCUCR = 0;
-
-// UDCON = 1; // Detach USB
-// UDIEN = 0;
+
+ L_LED_OFF();
+ TX_LED_OFF();
+ RX_LED_OFF();
/* jump to beginning of application space */
__asm__ volatile("jmp 0x0000");
}
+/* Breathing animation on L LED indicates bootloader is running */
+uint16_t LLEDPulse;
+void LEDPulse(void)
+{
+ LLEDPulse++;
+ uint8_t p = LLEDPulse >> 8;
+ if (p > 127)
+ p = 254-p;
+ p += p;
+ if (((uint8_t)LLEDPulse) > p)
+ L_LED_OFF();
+ else
+ L_LED_ON();
+}
+
/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
* runs the bootloader processing routine until instructed to soft-exit, or hard-reset via the watchdog to start
* the loaded application code.
*/
int main(void)
{
+ /* Watchdog may be configured with a 15 ms period so must disable it before doing anything else */
wdt_disable();
/* Setup hardware required for the bootloader */
@@ -88,10 +120,11 @@ int main(void)
{
CDC_Task();
USB_USBTask();
- /* time out and start the sketch if one is present
- * TODO - handle ctr now that TIMER1 is gone */
-// if (ctr++ > 10000 && pgm_read_word(0) != 0xFFFF)
-// RunBootloader = false;
+ /* Time out and start the sketch if one is present */
+ if (Timeout > 8000 && pgm_read_word(0) != 0xFFFF)
+ RunBootloader = false;
+
+ LEDPulse();
}
/* Disconnect from the host - USB interface will be reset later along with the AVR */
@@ -114,11 +147,39 @@ void SetupHardware(void)
/* Relocate the interrupt vector table to the bootloader section */
MCUCR = (1 << IVCE);
MCUCR = (1 << IVSEL);
+
+ LED_SETUP();
+ CPU_PRESCALE(0);
+ L_LED_OFF();
+ TX_LED_OFF();
+ RX_LED_OFF();
+
+ /* Initialize TIMER1 to handle bootloader timeout and LED tasks. Compare match happens at approx. 1 ms interval */
+ OCR1AH = 0;
+ OCR1AL = 250;
+ TIMSK1 = (1 << OCIE1A);
+ TCCR1B = ((1 << CS11) | (1 << CS10));
/* Initialize USB Subsystem */
USB_Init();
}
+//uint16_t ctr = 0;
+ISR(TIMER1_COMPA_vect, ISR_BLOCK)
+{
+ /* Reset counter */
+ TCNT1H = 0;
+ TCNT1L = 0;
+
+ /* Check whether the TX or RX LED one-shot period has elapsed. if so, turn off the LED */
+ if (TxLEDPulse && !(--TxLEDPulse))
+ TX_LED_OFF();
+ if (RxLEDPulse && !(--RxLEDPulse))
+ RX_LED_OFF();
+
+ Timeout++;
+}
+
/** Event handler for the USB_ConfigurationChanged event. This configures the device's endpoints ready
* to relay data to and from the attached USB host.
*/
@@ -345,6 +406,9 @@ static void WriteNextResponseByte(const uint8_t Response)
/* Write the next byte to the IN endpoint */
Endpoint_Write_8(Response);
+
+ TX_LED_ON();
+ TxLEDPulse = TX_RX_LED_PULSE_PERIOD;
}
#define STK_OK 0x10
@@ -372,19 +436,13 @@ void CDC_Task(void)
/* Check if endpoint has a command in it sent from the host */
if (!(Endpoint_IsOUTReceived()))
return;
+
+ RX_LED_ON();
+ RxLEDPulse = TX_RX_LED_PULSE_PERIOD;
/* Read in the bootloader command (first byte sent from host) */
uint8_t Command = FetchNextCommandByte();
- /*
- if (STK_UNIVERSAL == Command) {
- WriteNextResponseByte(')');
- } else {
- WriteNextResponseByte(Command);
- }
- */
-
-
if (Command == 'E')
{
RunBootloader = false;
diff --git a/bootloaders/caterina_LUFA/Caterina.h b/bootloaders/caterina_LUFA/Caterina.h
index 4260166..7f37063 100755
--- a/bootloaders/caterina_LUFA/Caterina.h
+++ b/bootloaders/caterina_LUFA/Caterina.h
@@ -62,13 +62,26 @@
#define BOOTLOADER_HWVERSION_MINOR 0x00
/** Eight character bootloader firmware identifier reported to the host when requested */
- #define SOFTWARE_IDENTIFIER "LUFACDC"
+ #define SOFTWARE_IDENTIFIER "CATERINA"
+
+ #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
+ #define LED_SETUP() DDRC |= (1<<7); DDRB |= (1<<0); DDRD |= (1<<5);
+ #define L_LED_OFF() PORTC &= ~(1<<7)
+ #define L_LED_ON() PORTC |= (1<<7)
+ #define L_LED_TOGGLE() PORTC ^= (1<<7)
+ #define TX_LED_OFF() PORTD |= (1<<5)
+ #define TX_LED_ON() PORTD &= ~(1<<5)
+ #define RX_LED_OFF() PORTB |= (1<<0)
+ #define RX_LED_ON() PORTB &= ~(1<<0)
/* Type Defines: */
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
/* Function Prototypes: */
+ void StartSketch(void);
+ void LEDPulse();
+
void CDC_Task(void);
void SetupHardware(void);
diff --git a/bootloaders/caterina_LUFA/Caterina.hex b/bootloaders/caterina_LUFA/Caterina.hex
index c3c1d93..5987d79 100644
--- a/bootloaders/caterina_LUFA/Caterina.hex
+++ b/bootloaders/caterina_LUFA/Caterina.hex
@@ -1,228 +1,246 @@
:1070000055C000006EC000006CC000006AC00000E7
:1070100068C0000066C0000064C0000062C00000DC
-:1070200060C000005EC000001FC400005AC0000025
+:1070200060C000005EC00000B0C400005AC0000094
:1070300058C0000056C0000054C0000052C00000FC
-:1070400050C000004EC000004CC000004AC000000C
+:1070400050C0000078C000004CC000004AC00000E2
:1070500048C0000046C0000044C0000042C000001C
:1070600040C000003EC000003CC000003AC000002C
:1070700038C0000036C0000034C0000032C000003C
:1070800030C000002EC000002CC000002AC000004C
:1070900028C0000026C0000024C0000022C000005C
:1070A00020C000001EC000001CC0000011241FBE34
-:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0ECE859
-:1070C000FDE702C005900D92AC38B107D9F711E089
-:1070D000ACE8B1E001C01D92AA39B107E1F7FCD2DA
-:1070E00053C68ECFF89481E085BF15BE0C94000086
-:1070F000089584E08093E9000DC08091E8008B77CB
-:107100008093E80003C08EB3882351F08091E8009B
-:1071100082FFF9CF8091E80085FFEFCF8091F100E9
-:107120000895982F83E08093E9008091E80085FD21
-:107130000DC08091E8008E778093E80003C08EB385
-:10714000882331F08091E80080FFF9CF9093F1001F
-:1071500008954F925F926F927F928F929F92AF921B
-:10716000BF92CF92DF92EF92FF920F931F93CF9334
-:10717000DF9384E08093E9008091E80082FF45C2BC
-:10718000B8DF182F853419F41092080103C0843534
-:1071900019F4AFDF8DE00FC28C34E1F38035D1F309
-:1071A000843721F484E4BDDF80E005C2813611F428
-:1071B00089E501C28134B1F49CDF182F9ADF90E099
-:1071C000880F991FAA2797FDA095BA2F312F330F4B
-:1071D00020E0442737FD4095542F822B932BA42B7E
-:1071E000B52BBAC1803711F483E5E5C1833549F485
-:1071F000C0E0D1E0899195DF21E0C730D207D1F717
-:10720000DBC1863521F481E38CDF80E3D4C1833791
-:1072100031F487E886DF85E984DF8EE1CCC18536ED
-:10722000B9F4E0E0F0E093E085E090935700E89552
-:1072300007B600FCFDCF80935700E89507B600FC29
-:10724000FDCFE058FF4FA0E7E030FA0771F7A2CF7B
-:107250008C3651F44EDF809599E0E1E0F0E0082EA5
-:1072600090935700E89596CF823739F4E1E0F0E04B
-:1072700089E08093570084919EC1863439F4E0E020
-:10728000F0E089E080935700849195C18E3439F401
-:10729000E3E0F0E089E08093570084918CC1813570
-:1072A00039F4E2E0F0E089E080935700849183C1F3
-:1072B000823631F489E535DF80E033DF80E87BC159
-:1072C000823419F0873609F0DBC013DF082F11DF95
-:1072D000F82E0FDF682E8554823008F06BC1902F96
-:1072E00080E0CF2DD0E0C82BD92B173609F04BC04A
-:1072F00081E180935700E895DD24CC24C3943FC0FE
-:10730000E0908C01F0908D0100918E0110918F0121
-:10731000B6E46B16D9F4ED2DF0E0EE29FF29E491E7
-:107320008E2FFFDEDD2081F082E090E0A0E0B0E073
-:10733000E80EF91E0A1F1B1FE0928C01F0928D01CE
-:1073400000938E0110938F01DC2418C0D801C7016F
-:10735000B695A7959795879501D5E3DE82E090E0F5
-:10736000A0E0B0E0E80EF91E0A1F1B1FE0928C019E
-:10737000F0928D0100938E0110938F012197209739
-:1073800009F0BECF19C180908C0190908D01A09022
-:107390008E01B0908F0196E4691609F05DC083E01C
-:1073A000F40180935700E89507B600FCFDCF54C068
-:1073B000F6E46F1661F5772031F1E0908C01F090E2
-:1073C0008D0100918E0110918F0193DED82ECC2477
-:1073D000852D90E08C299D29F7010C0140925700E2
-:1073E000E895112482E090E0A0E0B0E0E80EF91EFC
-:1073F0000A1F1B1FE0928C01F0928D0100938E01F9
-:1074000010938F0102C075DE582E742423C0E090C3
-:107410008C01F0908D0100918E0110918F011695D5
-:107420000795F794E79465DE682FC7019FD4809194
-:107430008C0190918D01A0918E01B0918F010296E7
-:10744000A11DB11D80938C0190938D01A0938E019D
-:10745000B0938F01219704C055247724442443948A
-:10746000209709F0A5CF96E4691609F093CE85E040
-:10747000F40180935700E89507B600FCFDCF8ACE53
-:10748000833471F400918C0110918D0132DE90E013
-:1074900021E0F8010C0120935700E89511247ACEE1
-:1074A000833619F5E0908C01F0908D0100918E01EA
-:1074B00010918F011EDEF701E16090E021E00C01E8
-:1074C00020935700E895112482E090E0A0E0B0E01E
-:1074D000E80EF91E0A1F1B1FE0928C01F0928D012D
-:1074E00000938E0110938F0155CE8D3661F4E0919B
-:1074F0008C01F0918D0185E080935700E89507B6E7
-:1075000000FCFDCF47CE823551F4E0918C01F09123
-:107510008D0105911491812F04DE802F4CC084349D
-:1075200021F5E0908C01F0908D0100918E01109179
-:107530008F0116950795F794E794DBDD682FC70157
-:1075400015D480918C0190918D01A0918E01B09104
-:107550008F010296A11DB11D80938C0190938D0126
-:10756000A0938E01B0938F0115CE843609F5E0907B
-:107570008C01F0908D0100918E0110918F01D80146
-:10758000C701B695A79597958795E8D3CADD82E0A0
-:1075900090E0A0E0B0E0E80EF91E0A1F1B1FE09289
-:1075A0008C01F0928D0100938E0110938F0104C025
-:1075B0008B3111F08FE3B5DD83E08093E90090918A
-:1075C000E8008091E8008E778093E80095FF04C082
-:1075D00010C08EB38823C9F08091E80080FFF9CFF6
-:1075E0008091E8008E778093E80003C08EB38823F3
-:1075F00061F08091E80080FFF9CF84E08093E9009A
-:107600008091E8008B778093E800DF91CF911F9104
-:107610000F91FF90EF90DF90CF90BF90AF909F9031
-:107620008F907F906F905F904F900895909192010E
-:10763000892F8F77813249F5809193018032A1F0B3
-:10764000813219F5913A09F58091E800877F80939E
-:10765000E80089E091E067E070E0B7D18091E80050
-:107660008B778093E8000895913279F48091E80057
-:10767000877F8093E80089E091E067E070E009D2BD
-:107680008091E8008E778093E800089582E061ECB5
-:1076900042E061D083E061E842E15DD084E060E8EF
-:1076A00042E159C084B7877F84BF88E10FB6F89460
-:1076B00080936000109260000FBE80E090E020E8B0
-:1076C0000FB6F89420936100809361000FBE81E0B3
-:1076D00085BF82E085BFB0C088E10FB6F894809383
-:1076E0006000109260000FBEDDDF789402C031DDD3
-:1076F00023D3809108018823D1F78091E000816035
-:107700008093E000EFDC80E090E00895FA01923091
-:1077100071F0933089F0913029F480E191E022E119
-:1077200030E015C080E090E020E030E010C082E260
-:1077300091E02EE330E00BC0882329F480E691E04D
-:1077400024E030E004C084E691E026E230E091835A
-:107750008083C90108958093E9008091EB008160E6
-:107760008093EB001092ED006093EC004093ED00ED
-:107770008091EE00881F8827881F089580919201CC
-:1077800088238CF403C08EB38823B1F08091E80085
-:1077900082FFF9CF8091E8008B778093E80008950D
-:1077A0008EB3882349F08091E80080FFF9CF809163
-:1077B000E8008E778093E8000895EF92FF920F9390
-:1077C0001F9345D04CD008ED10E0F80180818F77F1
-:1077D000808380818068808380818F7D808319BCD5
-:1077E0001EBA1092900180EEE82EF12CF7018081F4
-:1077F0008B7F8083F80180818160808380E060E0FE
-:1078000042E0A9DFE1EEF0E080818E7F8083E2EE4E
-:10781000F0E0808181608083808188608083F701CF
-:1078200080818E7F8083F8018081806180831F91B9
-:107830000F91FF90EF900895E7EDF0E08081816077
-:1078400080838AE482BF81E080939101B6CFE8ED26
-:10785000F0E080818E7F80831092E2000895109284
-:10786000DA001092E10008951F920F920FB60F9266
-:1078700011242F933F934F935F936F937F938F9335
-:107880009F93AF93BF93EF93FF938091DA0080FFB4
-:107890001BC08091D80080FF17C08091DA008E7FD6
-:1078A0008093DA008091D90080FF0BC080E189BD10
-:1078B00082E189BD09B400FEFDCF81E08EBB3BD2E1
-:1078C00003C019BC1EBA37D28091E10080FF17C0F7
-:1078D0008091E20080FF13C08091E2008E7F809350
-:1078E000E2008091E20080618093E2008091D80004
-:1078F00080628093D80019BC85E08EBB1CD2809139
-:10790000E10084FF2CC08091E20084FF28C080E168
-:1079100089BD82E189BD09B400FEFDCF8091D80008
-:107920008F7D8093D8008091E1008F7E8093E1006D
-:107930008091E2008F7E8093E2008091E20081607E
-:107940008093E20080919001882331F48091E300DC
-:1079500087FD02C081E001C084E08EBBECD1809144
-:10796000E10083FF21C08091E20083FF1DC0809170
-:10797000E100877F8093E10082E08EBB109290014E
-:107980008091E1008E7F8093E1008091E2008E7F04
-:107990008093E2008091E20080618093E20080E0C9
-:1079A00060E042E0D8DEC7D1FF91EF91BF91AF9187
-:1079B0009F918F917F916F915F914F913F912F9107
-:1079C0000F900FBE0F901F9018959C014091980149
-:1079D000509199014617570718F4F90190E044C0F7
-:1079E0006115710511F0AB01F8CF8091E8008E7739
-:1079F0008093E80040E050E0F0CF8EB3882309F494
-:107A000044C0853009F443C08091E80083FF02C080
-:107A100081E008958091E80082FD31C08091E80006
-:107A200080FF22C08091F3009091F200782F60E0F7
-:107A3000292F30E0262B372B07C081918093F1004E
-:107A4000415050402F5F3F4F4115510519F02830EC
-:107A5000310598F390E02830310509F491E08091E8
-:107A6000E8008E778093E8004115510531F699239F
-:107A700021F605C08EB3882341F0853041F0809116
-:107A8000E80082FFF7CF80E0089582E0089583E068
-:107A900008959C016115710529F48091E8008B77A8
-:107AA0008093E800F90126C08EB3882391F18530D8
-:107AB00091F18091E80083FF02C081E008958091F8
-:107AC000E80082FFF1CF06C08091F1008193615000
-:107AD000704059F02091F3008091F200322F20E0A5
-:107AE00090E0822B932B892B79F78091E8008B779C
-:107AF0008093E80061157105B9F605C08EB388233F
-:107B000041F0853041F08091E80080FFF7CF80E0C0
-:107B1000089582E0089583E008950F931F93DF9303
-:107B2000CF9300D0CDB7DEB7E2E9F1E08091F1006C
-:107B3000819381E0EA39F807C9F778DD8091E800A0
-:107B400083FFE4C08091920190919301953009F4F4
-:107B50006DC0963040F4913081F1913070F09330E7
-:107B600009F0D4C02AC0983009F4A3C0993009F4B0
-:107B7000B2C0963009F0CAC07CC0803809F4C6C0D3
-:107B8000823809F0C3C08091960187708093E90024
-:107B90008091EB001092E9002091E800277F20936C
-:107BA000E80090E025E0969587952A95E1F78170A9
-:107BB0008093F1001092F10087C0882319F0823081
-:107BC00009F0A4C08F71823009F0A0C080919401A7
-:107BD000882331F520919601277009F497C02093EE
-:107BE000E9008091EB0080FF1BC0933021F480916D
-:107BF000EB00806213C08091EB0080618093EB000A
-:107C000081E090E002C0880F991F2A95E2F78093E7
-:107C1000EA001092EA008091EB0088608093EB000C
-:107C20001092E9008091E800877F51C0882309F015
-:107C30006DC0109194011F770FB7F8948091E80000
-:107C4000877F8093E8009ADD8091E80080FFFCCF79
-:107C50008091E3008078812B8093E300806880939B
-:107C6000E300112311F482E001C083E08EBB0FBF5B
-:107C70004DC08058823008F049C0809194019091A5
-:107C8000950160919601AE014F5F5F4F3FDDBC01F2
-:107C9000009709F43BC08091E800877F8093E8005B
-:107CA00089819A8192DE8091E8008B778093E80049
-:107CB0002DC0803859F58091E800877F8093E800D7
-:107CC000809190018093F1008091E8008E778093FD
-:107CD000E80054DD1BC08823C9F4909194019230D0
-:107CE000A8F48091E800877F8093E800909390014A
-:107CF00045DD80919001882331F48091E30087FD78
-:107D000002C081E001C084E08EBBC0DC8091E8004D
-:107D100083FF0AC08091EB0080628093EB0080912A
-:107D2000E800877F8093E8000F900F90CF91DF915C
-:107D30001F910F91089508951F938EB3882361F0CA
-:107D40001091E9001092E9008091E80083FF01C0E2
-:107D5000E4DE17701093E9001F910895F999FECFA2
-:107D600092BD81BDF89A992780B50895262FF9997B
-:107D7000FECF1FBA92BD81BD20BD0FB6F894FA9A0E
-:0C7D8000F99A0FBE01960895F894FFCF09
-:107D8C004C554641434443000100000000000008EC
-:107D9C001201100102000008EB034A20010000014F
-:107DAC00000109023E0002010080320904000001BA
-:107DBC00020201000524001001042402040524061B
-:107DCC000001070582030800FF09040100020A00F4
-:107DDC0000000705040210000107058302100001D2
-:107DEC0004030904260341005600520020004300FE
-:107DFC0044004300200042006F006F0074006C00D0
-:0C7E0C006F00610064006500720000005F
+:1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEEA55
+:1070C000FEE702C005900D92AE38B107D9F711E086
+:1070D000AEE8B1E001C01D92A43AB107E1F777D361
+:1070E000E4C68ECFF89410926F0010928100109237
+:1070F00085001092840081E085BF15BE47985D9A97
+:10710000289A0C94000008952091980130919901DB
+:107110002F5F3F4F3093990120939801932F37FFB2
+:1071200003C08EEF831B982F990F921710F4479886
+:107130000895479A08951F920F920FB60F92112447
+:107140008F939F93109285001092840080918E01FE
+:1071500090918F01009741F0019790938F01809358
+:107160008E01892B09F45D9A809190019091910193
+:10717000009741F001979093910180939001892BA2
+:1071800009F4289A8091920190919301019690932D
+:107190009301809392019F918F910F900FBE0F905A
+:1071A0001F90189584E08093E9000DC08091E8005D
+:1071B0008B778093E80003C08EB3882351F08091D1
+:1071C000E80082FFF9CF8091E80085FFEFCF809142
+:1071D000F1000895982F83E08093E9008091E80002
+:1071E00085FD0DC08091E8008E778093E80003C094
+:1071F0008EB3882369F08091E80080FFF9CF9093E7
+:10720000F1005D9884E690E090938F0180938E0169
+:1072100008954F925F926F927F928F929F92AF925A
+:10722000BF92CF92DF92EF92FF920F931F93CF9373
+:10723000DF9384E08093E9008091E80082FF4CC2F4
+:10724000289884E690E09093910180939001AADFC2
+:10725000182F853419F41092090103C0843519F4EC
+:10726000A1DF8DE00FC28C34E1F38035D1F3843798
+:1072700021F484E4AFDF80E005C2813611F489E5B2
+:1072800001C28134B1F48EDF182F8CDF90E0880FBB
+:10729000991FAA2797FDA095BA2F312F330F20E011
+:1072A000442737FD4095542F822B932BA42BB52BCD
+:1072B000BAC1803711F483E5E5C1833549F4C0E0F4
+:1072C000D1E0899187DF21E0C730D207D1F7DBC158
+:1072D000863521F481E37EDF80E3D4C1833731F446
+:1072E00087E878DF85E976DF8EE1CCC18536B9F4B1
+:1072F000E0E0F0E093E085E090935700E89507B672
+:1073000000FCFDCF80935700E89507B600FCFDCF49
+:10731000E058FF4FA0E7E030FA0771F7A2CF8C36B4
+:1073200051F440DF809599E0E1E0F0E0082E909381
+:107330005700E89596CF823739F4E1E0F0E089E034
+:107340008093570084919EC1863439F4E0E0F0E0E8
+:1073500089E080935700849195C18E3439F4E3E03D
+:10736000F0E089E08093570084918CC1813539F435
+:10737000E2E0F0E089E080935700849183C1823697
+:1073800031F489E527DF80E025DF80E87BC18234A6
+:1073900019F0873609F0DBC005DF082F03DFF82E70
+:1073A00001DF682E8554823008F06BC1902F80E099
+:1073B000CF2DD0E0C82BD92B173609F04BC081E177
+:1073C00080935700E895DD24CC24C3943FC0E0901F
+:1073D0009401F09095010091960110919701B6E407
+:1073E0006B16D9F4ED2DF0E0EE29FF29E4918E2FF4
+:1073F000F1DEDD2081F082E090E0A0E0B0E0E80E78
+:10740000F91E0A1F1B1FE0929401F0929501009350
+:10741000960110939701DC2418C0D801C701B695D6
+:10742000A795979587952BD5D5DE82E090E0A0E0D3
+:10743000B0E0E80EF91E0A1F1B1FE0929401F092C3
+:10744000950100939601109397012197209709F0D9
+:10745000BECF19C18090940190909501A0909601A3
+:10746000B090970196E4691609F05DC083E0F401DD
+:1074700080935700E89507B600FCFDCF54C0F6E4B2
+:107480006F1661F5772031F1E0909401F09095014D
+:10749000009196011091970185DED82ECC24852D80
+:1074A00090E08C299D29F7010C0140925700E89546
+:1074B000112482E090E0A0E0B0E0E80EF91E0A1F7F
+:1074C0001B1FE0929401F092950100939601109396
+:1074D000970102C067DE582E742423C0E090940107
+:1074E000F0909501009196011091970116950795DE
+:1074F000F794E79457DE682FC701C9D480919401AF
+:1075000090919501A0919601B09197010296A11DCD
+:10751000B11D8093940190939501A0939601B0932F
+:107520009701219704C0552477244424439420973D
+:1075300009F0A5CF96E4691609F093CE85E0F40131
+:1075400080935700E89507B600FCFDCF8ACE8334C0
+:1075500071F4009194011091950124DE90E021E0F6
+:10756000F8010C0120935700E89511247ACE833658
+:1075700019F5E0909401F090950100919601109119
+:10758000970110DEF701E16090E021E00C0120930B
+:107590005700E895112482E090E0A0E0B0E0E80E0A
+:1075A000F91E0A1F1B1FE0929401F09295010093AF
+:1075B00096011093970155CE8D3661F4E0919401B8
+:1075C000F091950185E080935700E89507B600FC9F
+:1075D000FDCF47CE823551F4E0919401F0919501B1
+:1075E00005911491812FF6DD802F4CC0843421F554
+:1075F000E0909401F090950100919601109197010F
+:1076000016950795F794E794CDDD682FC7013FD411
+:107610008091940190919501A0919601B09197016C
+:107620000296A11DB11D8093940190939501A093A2
+:107630009601B093970115CE843609F5E090940138
+:10764000F09095010091960110919701D801C70122
+:10765000B695A7959795879512D4BCDD82E090E00A
+:10766000A0E0B0E0E80EF91E0A1F1B1FE092940193
+:10767000F0929501009396011093970104C08B310D
+:1076800011F08FE3A7DD83E08093E9009091E8009B
+:107690008091E8008E778093E80095FF04C010C0C9
+:1076A0008EB38823C9F08091E80080FFF9CF8091E4
+:1076B000E8008E778093E80003C08EB3882361F0E2
+:1076C0008091E80080FFF9CF84E08093E900809109
+:1076D000E8008B778093E800DF91CF911F910F91A5
+:1076E000FF90EF90DF90CF90BF90AF909F908F90E2
+:1076F0007F906F905F904F90089590919C01892F9B
+:107700008F77813249F580919D018032A1F08132DD
+:1077100019F5913A09F58091E800877F8093E80098
+:107720008AE091E067E070E0E1D18091E8008B773A
+:107730008093E8000895913279F48091E800877F82
+:107740008093E8008AE091E067E070E033D28091B6
+:10775000E8008E778093E800089582E061EC42E0D3
+:107760008BD083E061E842E187D084E060E842E1C9
+:1077700083C084B7877F84BF88E10FB6F894809375
+:107780006000109260000FBE20E880E090E00FB62D
+:10779000F89420936100809361000FBE81E085BF63
+:1077A00092E095BF3F9A209A559AE1E6F0E0208357
+:1077B000108247985D9A289A109289008AEF8093E8
+:1077C000880090936F0083E080938100C6C0CF93C0
+:1077D000DF9388E10FB6F894809360001092600008
+:1077E0000FBEC7DF7894E0E0F0E0C591D49110C0FF
+:1077F00010DD33D3809192019091930181549F4188
+:1078000030F08FEFCF3FD80711F0109209017CDCE8
+:1078100080910901882361F78091E0008160809365
+:10782000E00060DC80E090E0DF91CF910895FA0104
+:10783000923071F0933089F0913029F481E191E038
+:1078400022E130E015C080E090E020E030E010C0A0
+:1078500083E291E02EE330E00BC0882329F481E637
+:1078600091E024E030E004C085E691E026E230E0DB
+:1078700091838083C90108958093E9008091EB0092
+:1078800081608093EB001092ED006093EC004093D8
+:10789000ED008091EE00881F8827881F0895809151
+:1078A0009C0188238CF403C08EB38823B1F08091AF
+:1078B000E80082FFF9CF8091E8008B778093E800A1
+:1078C00008958EB3882349F08091E80080FFF9CFB6
+:1078D0008091E8008E778093E8000895EF92FF9200
+:1078E0000F931F9345D04CD008ED10E0F801808134
+:1078F0008F77808380818068808380818F7D808383
+:1079000019BC1EBA10929A0180EEE82EF12CF701F4
+:1079100080818B7F8083F80180818160808380E01B
+:1079200060E042E0A9DFE1EEF0E080818E7F8083BD
+:10793000E2EEF0E0808181608083808188608083D6
+:10794000F70180818E7F8083F80180818061808350
+:107950001F910F91FF90EF900895E7EDF0E0808187
+:10796000816080838AE482BF81E080939B01B6CFEF
+:10797000E8EDF0E080818E7F80831092E200089530
+:107980001092DA001092E10008951F920F920FB644
+:107990000F9211242F933F934F935F936F937F9395
+:1079A0008F939F93AF93BF93EF93FF938091DA00F0
+:1079B00080FF1BC08091D80080FF17C08091DA0043
+:1079C0008E7F8093DA008091D90080FF0BC080E128
+:1079D00089BD82E189BD09B400FEFDCF81E08EBB87
+:1079E0003BD203C019BC1EBA37D28091E10080FFA0
+:1079F00017C08091E20080FF13C08091E2008E7F6B
+:107A00008093E2008091E20080618093E2008091A7
+:107A1000D80080628093D80019BC85E08EBB1CD250
+:107A20008091E10084FF2CC08091E20084FF28C097
+:107A300080E189BD82E189BD09B400FEFDCF80915E
+:107A4000D8008F7D8093D8008091E1008F7E809355
+:107A5000E1008091E2008F7E8093E2008091E2005D
+:107A600081608093E20080919A01882331F48091B3
+:107A7000E30087FD02C081E001C084E08EBBECD151
+:107A80008091E10083FF21C08091E20083FF1DC04F
+:107A90008091E100877F8093E10082E08EBB1092AD
+:107AA0009A018091E1008E7F8093E1008091E20055
+:107AB0008E7F8093E2008091E20080618093E200FB
+:107AC00080E060E042E0D8DEC7D1FF91EF91BF9146
+:107AD000AF919F918F917F916F915F914F913F9166
+:107AE0002F910F900FBE0F901F9018959C01409101
+:107AF000A2015091A3014617570718F4F90190E02D
+:107B000044C06115710511F0AB01F8CF8091E80018
+:107B10008E778093E80040E050E0F0CF8EB388236A
+:107B200009F444C0853009F443C08091E80083FF24
+:107B300002C081E008958091E80082FD31C080910B
+:107B4000E80080FF22C08091F3009091F200782F2E
+:107B500060E0292F30E0262B372B07C081918093DE
+:107B6000F100415050402F5F3F4F4115510519F032
+:107B70002830310598F390E02830310509F491E080
+:107B80008091E8008E778093E8004115510531F629
+:107B9000992321F605C08EB3882341F0853041F04A
+:107BA0008091E80082FFF7CF80E0089582E0089599
+:107BB00083E008959C016115710529F48091E80026
+:107BC0008B778093E800F90126C08EB3882391F16A
+:107BD000853091F18091E80083FF02C081E0089533
+:107BE0008091E80082FFF1CF06C08091F10081937F
+:107BF0006150704059F02091F3008091F200322FD3
+:107C000020E090E0822B932B892B79F78091E8007C
+:107C10008B778093E80061157105B9F605C08EB3C6
+:107C2000882341F0853041F08091E80080FFF7CF54
+:107C300080E0089582E0089583E008950F931F93F4
+:107C4000DF93CF9300D0CDB7DEB7ECE9F1E08091C0
+:107C5000F100819381E0E43AF807C9F74EDD8091A5
+:107C6000E80083FFE4C080919C0190919D019530D4
+:107C700009F46DC0963040F4913081F1913070F08C
+:107C8000933009F0D4C02AC0983009F4A3C09930C9
+:107C900009F4B2C0963009F0CAC07CC0803809F43B
+:107CA000C6C0823809F0C3C08091A001877080935C
+:107CB000E9008091EB001092E9002091E800277F15
+:107CC0002093E80090E025E0969587952A95E1F7C6
+:107CD00081708093F1001092F10087C0882319F021
+:107CE000823009F0A4C08F71823009F0A0C0809169
+:107CF0009E01882331F52091A001277009F497C0D7
+:107D00002093E9008091EB0080FF1BC0933021F4A9
+:107D10008091EB00806213C08091EB0080618093C2
+:107D2000EB0081E090E002C0880F991F2A95E2F7EE
+:107D30008093EA001092EA008091EB0088608093C3
+:107D4000EB001092E9008091E800877F51C0882302
+:107D500009F06DC010919E011F770FB7F8948091C4
+:107D6000E800877F8093E8009ADD8091E80080FF3B
+:107D7000FCCF8091E3008078812B8093E3008068C2
+:107D80008093E300112311F482E001C083E08EBBF5
+:107D90000FBF4DC08058823008F049C080919E01CD
+:107DA00090919F016091A001AE014F5F5F4F3FDD59
+:107DB000BC01009709F43BC08091E800877F809365
+:107DC000E80089819A8192DE8091E8008B77809328
+:107DD000E8002DC0803859F58091E800877F8093B6
+:107DE000E80080919A018093F1008091E8008E77FD
+:107DF0008093E80054DD1BC08823C9F490919E0154
+:107E00009230A8F48091E800877F8093E8009093F7
+:107E10009A0145DD80919A01882331F48091E30035
+:107E200087FD02C081E001C084E08EBB96DC8091BA
+:107E3000E80083FF0AC08091EB0080628093EB0032
+:107E40008091E800877F8093E8000F900F90CF919A
+:107E5000DF911F910F91089508951F938EB388238A
+:107E600061F01091E9001092E9008091E80083FF31
+:107E700001C0E4DE17701093E9001F910895F9998D
+:107E8000FECF92BD81BDF89A992780B50895262F1F
+:107E9000F999FECF1FBA92BD81BD20BD0FB6F894EF
+:0E7EA000FA9AF99A0FBE01960895F894FFCF52
+:107EAE004341544552494E4100010000000000007C
+:107EBE00081201100102000008EB034A2001000025
+:107ECE0001000109023E0002010080320904000097
+:107EDE0001020201000524001001042402040524FD
+:107EEE00060001070582030800FF09040100020ACB
+:107EFE0000000007050402100001070583021000B0
+:107F0E0001040309042603410056005200200043D9
+:107F1E000044004300200042006F006F0074006CAC
+:0E7F2E00006F0061006400650072000000003A
:040000030000700089
:00000001FF
diff --git a/bootloaders/caterina_LUFA/makefile b/bootloaders/caterina_LUFA/makefile
index a647af0..5439b5b 100755
--- a/bootloaders/caterina_LUFA/makefile
+++ b/bootloaders/caterina_LUFA/makefile
@@ -424,7 +424,7 @@ OBJDUMP = avr-objdump
SIZE = avr-size
AR = avr-ar rcs
NM = avr-nm
-AVRDUDE = /Applications/avrdude -C /Applications/avrdude.conf
+AVRDUDE = /Applications/avrdude -C /Applications/avrdude.conf -B 1
REMOVE = rm -f
REMOVEDIR = rm -rf
COPY = cp