diff options
author | tmk <nobody@nowhere> | 2013-03-10 15:05:28 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2013-03-10 15:06:33 +0900 |
commit | f55c677ba46a8243f077195ef4f39cde1babf560 (patch) | |
tree | eb1803049580c109674ed78911f0e9b40549a4dc | |
parent | 1385058fc21f80347c7afd2b818e38795ce9d55a (diff) |
Fix watchdog in bootloader jump
- disable watchdog after watchdog reset
- clear WDRF after watchdog reset
-rw-r--r-- | common/bootloader.c | 23 | ||||
-rw-r--r-- | keyboard/hhkb/Makefile.iwrap | 9 | ||||
-rw-r--r-- | keyboard/hhkb/Makefile.lufa | 11 |
3 files changed, 28 insertions, 15 deletions
diff --git a/common/bootloader.c b/common/bootloader.c index 77fa1b30a7..023220414b 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -11,15 +11,16 @@ #endif -/* Boot Section Size in bytes - * Teensy halfKay 512 - * Atmel DFU loader 4096 - * LUFA bootloader 4096 +/* Boot Section Size in *BYTEs* + * Teensy halfKay 512 + * Teensy++ halfKay 1024 + * Atmel DFU loader 4096 + * LUFA bootloader 4096 */ #ifndef BOOT_SIZE #define BOOT_SIZE 512 #endif -#define FLASH_SIZE (FLASHEND + 1) +#define FLASH_SIZE (FLASHEND + 1L) #define BOOTLOADER_START (FLASH_SIZE - BOOT_SIZE) @@ -58,13 +59,15 @@ void bootloader_jump_after_watchdog_reset(void) __attribute__ ((used, naked, sec void bootloader_jump_after_watchdog_reset(void) { if ((MCUSR & (1<<WDRF)) && reset_key == BOOTLOADER_RESET_KEY) { + reset_key = 0; - #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) - // This makes custom USBasploader come up. + // My custom USBasploader requires this to come up. MCUSR = 0; - #endif - reset_key = 0; + // Seems like Teensy halfkay loader requires clearing WDRF and disabling watchdog. + MCUSR &= ~(1<<WDRF); + wdt_disable(); + ((void (*)(void))BOOTLOADER_START)(); } } @@ -138,4 +141,4 @@ void bootloader_jump(void) { // start Bootloader ((void (*)(void))BOOTLOADER_START)(); } -#endif +#endif diff --git a/keyboard/hhkb/Makefile.iwrap b/keyboard/hhkb/Makefile.iwrap index f87df0d2bb..3ec1a31645 100644 --- a/keyboard/hhkb/Makefile.iwrap +++ b/keyboard/hhkb/Makefile.iwrap @@ -49,6 +49,15 @@ EXTRAKEY_ENABLE = yes # Audio control and System control #NKRO_ENABLE = yes # USB Nkey Rollover +# Boot Section Size in *BYTEs* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOT_SIZE=2048 + + #---------------- Programming Options -------------------------- AVRDUDE = avrdude diff --git a/keyboard/hhkb/Makefile.lufa b/keyboard/hhkb/Makefile.lufa index afd413d019..75c0310d6e 100644 --- a/keyboard/hhkb/Makefile.lufa +++ b/keyboard/hhkb/Makefile.lufa @@ -107,11 +107,12 @@ CONSOLE_ENABLE = yes # Console for debug #PS2_MOUSE_ENABLE = yes # PS/2 mouse(TrackPoint) support -# Boot Section Size in bytes -# Teensy halfKay 512 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -#OPT_DEFS += -DBOOT_SIZE=4096 +# Boot Section Size in *BYTEs* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +OPT_DEFS += -DBOOT_SIZE=1024 # Search Path |