diff --git a/hardware/arduino/boards.txt b/hardware/arduino/boards.txt index 10a74f1aa..87ca07de7 100644 --- a/hardware/arduino/boards.txt +++ b/hardware/arduino/boards.txt @@ -5,12 +5,12 @@ leonardo.upload.protocol=arduino leonardo.upload.maximum_size=30720 leonardo.upload.speed=1200 leonardo.bootloader.low_fuses=0xde -leonardo.bootloader.high_fuses=0xd8 -leonardo.bootloader.extended_fuses=0xf3 +leonardo.bootloader.high_fuses=0xda +leonardo.bootloader.extended_fuses=0xcb leonardo.bootloader.path=diskloader leonardo.bootloader.file=DiskLoader.hex leonardo.bootloader.unlock_bits=0x3F -leonardo.bootloader.lock_bits=0x0F +leonardo.bootloader.lock_bits=0x2F leonardo.build.mcu=atmega32u4 leonardo.build.f_cpu=16000000L leonardo.build.core=arduino diff --git a/hardware/arduino/cores/arduino/CDC.cpp b/hardware/arduino/cores/arduino/CDC.cpp index 5059ceca5..14a0eaee7 100644 --- a/hardware/arduino/cores/arduino/CDC.cpp +++ b/hardware/arduino/cores/arduino/CDC.cpp @@ -23,19 +23,11 @@ #if defined(USBCON) #ifdef CDC_ENABLED -// TODO: Should really use the wdt here -// Not currently working for a non-obvious reason - -typedef void (*AppPtr_t)(void) __attribute__ ((noreturn)); -AppPtr_t Bootloader = (AppPtr_t)(30*1024); - void Reboot() { USB.detach(); cli(); - Bootloader(); - //wdt_enable(WDTO_15MS); - //while(1); // reboot + asm volatile("jmp 0x7800"); // jump to bootloader - DiskLoader takes up last 2 kB } typedef struct