diff options
| -rw-r--r-- | common/bootloader.c | 68 | ||||
| -rw-r--r-- | keyboard/macway/Makefile.lufa | 13 | ||||
| -rw-r--r-- | protocol/pjrc.mk | 3 | ||||
| -rw-r--r-- | protocol/pjrc/bootloader_teensy.c | 40 | 
4 files changed, 62 insertions, 62 deletions
| diff --git a/common/bootloader.c b/common/bootloader.c index 5cbfc72e5b..cb971c7043 100644 --- a/common/bootloader.c +++ b/common/bootloader.c @@ -1,22 +1,56 @@ -/* -Copyright 2011 Jun Wako <wakojun@gmail.com> - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. +#include <avr/io.h> +#include <avr/interrupt.h> +#include <util/delay.h> +#include "bootloader.h" -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -GNU General Public License for more details. +/* Start Bootloader from Application + * See  + * http://www.pjrc.com/teensy/jump_to_bootloader.html + * http://www.fourwalledcubicle.com/files/LUFA/Doc/120219/html/_page__software_bootloader_start.html + */ -You should have received a copy of the GNU General Public License -along with this program.  If not, see <http://www.gnu.org/licenses/>. -*/ +/* Boot Section Size in bytes + * Teensy halfKay   512 + * Atmel DFU loader 4096 + * LUFA bootloader  4096 + */ +#ifndef BOOT_SIZE +#define BOOT_SIZE 512 +#endif -#include "bootloader.h" +#define FLASH_SIZE          (FLASHEND + 1) +#define BOOTLOADER_START    (FLASHEND - BOOT_SIZE) +void bootloader_jump(void) { +    cli(); +    // disable watchdog, if enabled +    // disable all peripherals +    UDCON = 1; +    USBCON = (1<<FRZCLK);  // disable USB +    UCSR1B = 0; +    _delay_ms(5); +#if defined(__AVR_AT90USB162__) +    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; +    TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0; +    DDRB = 0; DDRC = 0; DDRD = 0; +    PORTB = 0; PORTC = 0; PORTD = 0; +#elif defined(__AVR_ATmega32U4__) +    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; +    TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0; +    DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0; +    PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; +#elif defined(__AVR_AT90USB646__) +    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; +    TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0; +    DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; +    PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; +#elif defined(__AVR_AT90USB1286__) +    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; +    TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0; +    DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; +    PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; +#endif -void bootloader_jump(void) __attribute__ ((weak)); -void bootloader_jump(void) {} +    // start Bootloader +    ((void (*)(void))BOOTLOADER_START)(); +} diff --git a/keyboard/macway/Makefile.lufa b/keyboard/macway/Makefile.lufa index 8f50776dfc..2f2b6401d2 100644 --- a/keyboard/macway/Makefile.lufa +++ b/keyboard/macway/Makefile.lufa @@ -51,8 +51,7 @@ TARGET_DIR = .  # List C source files here. (C dependencies are automatically generated.)  SRC +=	keymap.c \  	matrix.c \ -	led.c \ -	protocol/pjrc/bootloader_teensy.c +	led.c  CONFIG_H = config.h @@ -95,7 +94,6 @@ ARCH = AVR8  F_USB = $(F_CPU) -  # Build Options  #   comment out to disable the options.  # @@ -105,6 +103,15 @@ EXTRAKEY_ENABLE = yes	# Audio control and System control  #PS2_MOUSE_ENABLE = yes	# PS/2 mouse(TrackPoint) support +# Boot Section Size in bytes +#   Teensy halfKay   512 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#ifndef BOOT_SIZE +#define BOOT_SIZE 512 +#endif + +  # Search Path  VPATH += $(TARGET_DIR)  VPATH += $(TOP_DIR) diff --git a/protocol/pjrc.mk b/protocol/pjrc.mk index 1ceee0ad97..8aff6f28b2 100644 --- a/protocol/pjrc.mk +++ b/protocol/pjrc.mk @@ -5,8 +5,7 @@ OPT_DEFS += -DHOST_PJRC  SRC +=	$(PJRC_DIR)/pjrc.c \  	$(PJRC_DIR)/usb_keyboard.c \  	$(PJRC_DIR)/usb_debug.c \ -	$(PJRC_DIR)/usb.c \ -	$(PJRC_DIR)/bootloader_teensy.c +	$(PJRC_DIR)/usb.c  # Option modules  ifdef $(or MOUSEKEY_ENABLE, PS2_MOUSE_ENABLE) diff --git a/protocol/pjrc/bootloader_teensy.c b/protocol/pjrc/bootloader_teensy.c deleted file mode 100644 index 9d34852f16..0000000000 --- a/protocol/pjrc/bootloader_teensy.c +++ /dev/null @@ -1,40 +0,0 @@ -/* See  http://www.pjrc.com/teensy/jump_to_bootloader.html */ -#include <avr/io.h> -#include <avr/interrupt.h> -#include <util/delay.h> -#include "bootloader.h" - -void bootloader_jump(void) { -    cli(); -    // disable watchdog, if enabled -    // disable all peripherals -    UDCON = 1; -    USBCON = (1<<FRZCLK);  // disable USB -    UCSR1B = 0; -    _delay_ms(5); -#if defined(__AVR_AT90USB162__)                // Teensy 1.0 -    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; -    TIMSK0 = 0; TIMSK1 = 0; UCSR1B = 0; -    DDRB = 0; DDRC = 0; DDRD = 0; -    PORTB = 0; PORTC = 0; PORTD = 0; -    asm volatile("jmp 0x3E00"); -#elif defined(__AVR_ATmega32U4__)              // Teensy 2.0 -    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; -    TIMSK0 = 0; TIMSK1 = 0; TIMSK3 = 0; TIMSK4 = 0; UCSR1B = 0; TWCR = 0; -    DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; TWCR = 0; -    PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; -    asm volatile("jmp 0x7E00"); -#elif defined(__AVR_AT90USB646__)              // Teensy++ 1.0 -    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; -    TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0; -    DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; -    PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; -    asm volatile("jmp 0xFC00"); -#elif defined(__AVR_AT90USB1286__)             // Teensy++ 2.0 -    EIMSK = 0; PCICR = 0; SPCR = 0; ACSR = 0; EECR = 0; ADCSRA = 0; -    TIMSK0 = 0; TIMSK1 = 0; TIMSK2 = 0; TIMSK3 = 0; UCSR1B = 0; TWCR = 0; -    DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0; -    PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0; -    asm volatile("jmp 0x1FC00"); -#endif -} | 
