diff options
Diffstat (limited to 'tmk_core')
23 files changed, 3242 insertions, 3390 deletions
diff --git a/tmk_core/chibios.mk b/tmk_core/chibios.mk index cb67ac6f2..062a712bd 100644 --- a/tmk_core/chibios.mk +++ b/tmk_core/chibios.mk @@ -89,9 +89,9 @@ CHIBISRC = $(STARTUPSRC) \  	   $(STARTUPASM) \  	   $(PORTASM) \  	   $(OSALASM)          -	    -SRC += $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) +CHIBISRC := $(patsubst $(TOP_DIR)/%,%,$(CHIBISRC)) +	     EXTRAINCDIRS += $(CHIBIOS)/os/license \           $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \           $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \ @@ -143,14 +143,6 @@ MCUFLAGS = -mcpu=$(MCU)  DEBUG = gdb -# Define ASM defines here -# bootloader definitions may be used in the startup .s file -ifneq ("$(wildcard $(KEYBOARD_PATH)/bootloader_defs.h)","") -    OPT_DEFS += -include $(KEYBOARD_PATH)/bootloader_defs.h -else ifneq ("$(wildcard $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h)","") -    OPT_DEFS += -include $(KEYBOARD_PATH)/boards/$(BOARD)/bootloader_defs.h -endif -  # List any extra directories to look for libraries here.  EXTRALIBDIRS = $(RULESPATH)/ld diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 429c57143..f826a7b54 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -5,7 +5,7 @@ else ifeq ($(PLATFORM),CHIBIOS)  	PLATFORM_COMMON_DIR = $(COMMON_DIR)/chibios  endif -SRC +=	$(COMMON_DIR)/host.c \ +TMK_COMMON_SRC +=	$(COMMON_DIR)/host.c \  	$(COMMON_DIR)/keyboard.c \  	$(COMMON_DIR)/action.c \  	$(COMMON_DIR)/action_tapping.c \ @@ -21,101 +21,89 @@ SRC +=	$(COMMON_DIR)/host.c \  	$(PLATFORM_COMMON_DIR)/bootloader.c \  ifeq ($(PLATFORM),AVR) -	SRC += $(PLATFORM_COMMON_DIR)/xprintf.S +	TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/xprintf.S  endif   ifeq ($(PLATFORM),CHIBIOS) -	SRC += $(PLATFORM_COMMON_DIR)/printf.c -	SRC += $(PLATFORM_COMMON_DIR)/eeprom.c +	TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/printf.c +	TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/eeprom.c  endif  # Option modules  ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) -    OPT_DEFS += -DBOOTMAGIC_ENABLE -    SRC += $(COMMON_DIR)/bootmagic.c +    TMK_COMMON_DEFS += -DBOOTMAGIC_ENABLE +    TMK_COMMON_SRC += $(COMMON_DIR)/bootmagic.c  else -    OPT_DEFS += -DMAGIC_ENABLE -    SRC += $(COMMON_DIR)/magic.c +    TMK_COMMON_DEFS += -DMAGIC_ENABLE +    TMK_COMMON_SRC += $(COMMON_DIR)/magic.c  endif  ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) -    SRC += $(COMMON_DIR)/mousekey.c -    OPT_DEFS += -DMOUSEKEY_ENABLE -    OPT_DEFS += -DMOUSE_ENABLE +    TMK_COMMON_SRC += $(COMMON_DIR)/mousekey.c +    TMK_COMMON_DEFS += -DMOUSEKEY_ENABLE +    TMK_COMMON_DEFS += -DMOUSE_ENABLE  endif  ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) -    OPT_DEFS += -DEXTRAKEY_ENABLE +    TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE  endif  ifeq ($(strip $(CONSOLE_ENABLE)), yes) -    OPT_DEFS += -DCONSOLE_ENABLE +    TMK_COMMON_DEFS += -DCONSOLE_ENABLE  else -    OPT_DEFS += -DNO_PRINT -    OPT_DEFS += -DNO_DEBUG +    TMK_COMMON_DEFS += -DNO_PRINT +    TMK_COMMON_DEFS += -DNO_DEBUG  endif  ifeq ($(strip $(COMMAND_ENABLE)), yes) -    SRC += $(COMMON_DIR)/command.c -    OPT_DEFS += -DCOMMAND_ENABLE +    TMK_COMMON_SRC += $(COMMON_DIR)/command.c +    TMK_COMMON_DEFS += -DCOMMAND_ENABLE  endif  ifeq ($(strip $(NKRO_ENABLE)), yes) -    OPT_DEFS += -DNKRO_ENABLE +    TMK_COMMON_DEFS += -DNKRO_ENABLE  endif  ifeq ($(strip $(USB_6KRO_ENABLE)), yes) -    OPT_DEFS += -DUSB_6KRO_ENABLE +    TMK_COMMON_DEFS += -DUSB_6KRO_ENABLE  endif  ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) -    SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c -    OPT_DEFS += -DSLEEP_LED_ENABLE -    OPT_DEFS += -DNO_SUSPEND_POWER_DOWN +    TMK_COMMON_SRC += $(PLATFORM_COMMON_DIR)/sleep_led.c +    TMK_COMMON_DEFS += -DSLEEP_LED_ENABLE +    TMK_COMMON_DEFS += -DNO_SUSPEND_POWER_DOWN  endif  ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) -    SRC += $(COMMON_DIR)/backlight.c -    OPT_DEFS += -DBACKLIGHT_ENABLE +    TMK_COMMON_SRC += $(COMMON_DIR)/backlight.c +    TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE  endif  ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) -    OPT_DEFS += -DBLUETOOTH_ENABLE +    TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE  endif  ifeq ($(strip $(ONEHAND_ENABLE)), yes) -    OPT_DEFS += -DONEHAND_ENABLE +    TMK_COMMON_DEFS += -DONEHAND_ENABLE  endif  ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) -    OPT_DEFS += -DKEYMAP_SECTION_ENABLE +    TMK_COMMON_DEFS += -DKEYMAP_SECTION_ENABLE      ifeq ($(strip $(MCU)),atmega32u2) -	EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x +	TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr35.x      else ifeq ($(strip $(MCU)),atmega32u4) -	EXTRALDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x +	TMK_COMMON_LDFLAGS = -Wl,-L$(TMK_DIR),-Tldscript_keymap_avr5.x      else -	EXTRALDFLAGS = $(error no ldscript for keymap section) +	TMK_COMMON_LDFLAGS = $(error no ldscript for keymap section)      endif  endif -ifeq ($(MASTER),right)	 -	OPT_DEFS += -DMASTER_IS_ON_RIGHT -else  -	ifneq ($(MASTER),left) -$(error MASTER does not have a valid value(left/right)) -	endif -endif - - -# Version string -OPT_DEFS += -DVERSION=$(GIT_VERSION) -  # Bootloader address  ifdef STM32_BOOTLOADER_ADDRESS -    OPT_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS) +    TMK_COMMON_DEFS += -DSTM32_BOOTLOADER_ADDRESS=$(STM32_BOOTLOADER_ADDRESS)  endif  # Search Path diff --git a/tmk_core/common/avr/xprintf.S b/tmk_core/common/avr/xprintf.S index 0cec70ce2..06434b98d 100644 --- a/tmk_core/common/avr/xprintf.S +++ b/tmk_core/common/avr/xprintf.S @@ -1,500 +1,500 @@ -;---------------------------------------------------------------------------;
 -; Extended itoa, puts, printf and atoi                     (C)ChaN, 2011
 -;---------------------------------------------------------------------------;
 -
 -				// Base size is 152 bytes
 -#define	CR_CRLF		0	// Convert \n to \r\n (+10 bytes)
 -#define USE_XPRINTF	1	// Enable xprintf function (+194 bytes)
 -#define USE_XSPRINTF	0	// Add xsprintf function (+78 bytes)
 -#define USE_XFPRINTF	0	// Add xfprintf function (+54 bytes)
 -#define USE_XATOI	0	// Enable xatoi function (+182 bytes)
 -
 -
 -#if FLASHEND > 0x1FFFF
 -#error xitoa module does not support 256K devices
 -#endif
 -
 -.nolist
 -#include <avr/io.h>	// Include device specific definitions.
 -.list
 -
 -#ifdef SPM_PAGESIZE	// Recent devices have "lpm Rd,Z+" and "movw".
 -.macro	_LPMI	reg
 -	lpm	\reg, Z+
 -.endm
 -.macro	_MOVW	dh,dl, sh,sl
 -	movw	\dl, \sl
 -.endm
 -#else			// Earlier devices do not have "lpm Rd,Z+" nor "movw".
 -.macro	_LPMI	reg
 -	lpm
 -	mov	\reg, r0
 -	adiw	ZL, 1
 -.endm
 -.macro	_MOVW	dh,dl, sh,sl
 -	mov	\dl, \sl
 -	mov	\dh, \sh
 -.endm
 -#endif
 -
 -
 -
 -;---------------------------------------------------------------------------
 -; Stub function to forward to user output function
 -;
 -;Prototype: void xputc (char chr	// a character to be output
 -;			);
 -;Size: 12/12 words
 -
 -.section .bss
 -.global xfunc_out	; xfunc_out must be initialized before using this module.
 -xfunc_out:	.ds.w	1
 -.section .text
 -
 -
 -.func xputc
 -.global xputc
 -xputc:
 -#if CR_CRLF
 -	cpi	r24, 10		;LF --> CRLF
 -	brne	1f		;
 -	ldi	r24, 13		;
 -	rcall	1f		;
 -	ldi	r24, 10		;/
 -1:
 -#endif
 -	push	ZH
 -	push	ZL
 -	lds	ZL, xfunc_out+0	;Pointer to the registered output function.
 -	lds	ZH, xfunc_out+1	;/
 -	sbiw	ZL, 0		;Skip if null
 -	breq	2f		;/
 -	icall
 -2:	pop	ZL
 -	pop	ZH
 -	ret
 -.endfunc
 -
 -
 -
 -;---------------------------------------------------------------------------
 -; Direct ROM string output
 -;
 -;Prototype: void xputs (const char *str_p // rom string to be output
 -;			);
 -
 -.func xputs
 -.global xputs
 -xputs:
 -	_MOVW	ZH,ZL, r25,r24	; Z = pointer to rom string
 -1:	_LPMI	r24
 -	cpi	r24, 0
 -	breq	2f
 -	rcall	xputc
 -	rjmp	1b
 -2:	ret
 -.endfunc
 -
 -
 -;---------------------------------------------------------------------------
 -; Extended direct numeral string output (32bit version)
 -;
 -;Prototype: void xitoa (long value,	// value to be output
 -;                       char radix,	// radix
 -;                       char width);	// minimum width
 -;
 -
 -.func xitoa
 -.global xitoa
 -xitoa:
 -				;r25:r22 = value, r20 = base, r18 = digits
 -	clr	r31		;r31 = stack level
 -	ldi	r30, ' '	;r30 = sign
 -	ldi	r19, ' '	;r19 = filler
 -	sbrs	r20, 7		;When base indicates signd format and the value
 -	rjmp	0f		;is minus, add a '-'.
 -	neg	r20		;
 -	sbrs	r25, 7		;
 -	rjmp	0f		;
 -	ldi	r30, '-'	;
 -	com	r22		;
 -	com	r23		;
 -	com	r24		;
 -	com	r25		;
 -	adc	r22, r1		;
 -	adc	r23, r1		;
 -	adc	r24, r1		;
 -	adc	r25, r1		;/
 -0:	sbrs	r18, 7		;When digits indicates zero filled,
 -	rjmp	1f		;filler is '0'.
 -	neg	r18		;
 -	ldi	r19, '0'	;/
 -				;----- string conversion loop
 -1:	ldi	r21, 32		;r26 = r25:r22 % r20
 -	clr	r26		;r25:r22 /= r20
 -2:	lsl	r22		;
 -	rol	r23		;
 -	rol	r24		;
 -	rol	r25		;
 -	rol	r26		;
 -	cp	r26, r20	;
 -	brcs	3f		;
 -	sub	r26, r20	;
 -	inc	r22		;
 -3:	dec	r21		;
 -	brne	2b		;/
 -	cpi	r26, 10		;r26 is a numeral digit '0'-'F'
 -	brcs	4f		;
 -	subi	r26, -7		;
 -4:	subi	r26, -'0'	;/
 -	push	r26		;Stack it
 -	inc	r31		;/
 -	cp	r22, r1		;Repeat until r25:r22 gets zero
 -	cpc	r23, r1		;
 -	cpc	r24, r1		;
 -	cpc	r25, r1		;
 -	brne	1b		;/
 -
 -	cpi	r30, '-'	;Minus sign if needed
 -	brne	5f		;
 -	push	r30		;
 -	inc	r31		;/
 -5:	cp	r31, r18	;Filler
 -	brcc	6f		;
 -	push	r19		;
 -	inc	r31		;
 -	rjmp	5b		;/
 -
 -6:	pop	r24		;Flush stacked digits and exit
 -	rcall	xputc		;
 -	dec	r31		;
 -	brne	6b		;/
 -
 -	ret
 -.endfunc
 -
 -
 -
 -;---------------------------------------------------------------------------;
 -; Formatted string output (16/32bit version)
 -;
 -;Prototype:
 -; void __xprintf (const char *format_p, ...);
 -; void __xsprintf(char*, const char *format_p, ...);
 -; void __xfprintf(void(*func)(char), const char *format_p, ...);
 -;
 -
 -#if USE_XPRINTF
 -
 -.func xvprintf
 -xvprintf:
 -	ld	ZL, Y+		;Z = pointer to format string
 -	ld	ZH, Y+		;/
 -
 -0:	_LPMI	r24		;Get a format char
 -	cpi	r24, 0		;End of format string?
 -	breq	90f		;/
 -	cpi	r24, '%'	;Is format?
 -	breq	20f		;/
 -1:	rcall	xputc		;Put a normal character
 -	rjmp	0b		;/
 -90:	ret
 -
 -20:	ldi	r18, 0		;r18: digits
 -	clt			;T: filler
 -	_LPMI	r21		;Get flags
 -	cpi	r21, '%'	;Is a %?
 -	breq	1b		;/
 -	cpi	r21, '0'	;Zero filled?
 -	brne	23f		;
 -	set			;/
 -22:	_LPMI	r21		;Get width
 -23:	cpi	r21, '9'+1	;
 -	brcc	24f		;
 -	subi	r21, '0'	;
 -	brcs	90b		;
 -	lsl	r18		;
 -	mov	r0, r18		;
 -	lsl	r18		;
 -	lsl	r18		;
 -	add	r18, r0		;
 -	add	r18, r21	;
 -	rjmp	22b		;/
 -
 -24:	brtc	25f		;get value (low word)
 -	neg	r18		;
 -25:	ld	r24, Y+		;
 -	ld	r25, Y+		;/
 -	cpi	r21, 'c'	;Is type character?
 -	breq	1b		;/
 -	cpi	r21, 's'	;Is type RAM string?
 -	breq	50f		;/
 -	cpi	r21, 'S'	;Is type ROM string?
 -	breq	60f		;/
 -	_MOVW	r23,r22,r25,r24	;r25:r22 = value
 -	clr	r24		;
 -	clr	r25		;
 -	clt			;/
 -	cpi	r21, 'l'	;Is long int?
 -	brne	26f		;
 -	ld	r24, Y+		;get value (high word)
 -	ld	r25, Y+		;
 -	set			;
 -	_LPMI	r21		;/
 -26:	cpi	r21, 'd'	;Is type signed decimal?
 -	brne	27f		;/
 -	ldi	r20, -10	;
 -	brts	40f		;
 -	sbrs	r23, 7		;
 -	rjmp	40f		;
 -	ldi	r24, -1		;
 -	ldi	r25, -1		;
 -	rjmp	40f		;/
 -27:	cpi	r21, 'u'	;Is type unsigned decimal?
 -	ldi	r20, 10		;
 -	breq	40f		;/
 -	cpi	r21, 'X'	;Is type hexdecimal?
 -	ldi	r20, 16		;
 -	breq	40f		;/
 -	cpi	r21, 'b'	;Is type binary?
 -	ldi	r20, 2		;
 -	breq	40f		;/
 -	ret			;abort
 -40:	push	ZH		;Output the value
 -	push	ZL		;
 -	rcall	xitoa		;
 -42:	pop	ZL		;
 -	pop	ZH		;
 -	rjmp	0b		;/
 -
 -50:	push	ZH		;Put a string on the RAM
 -	push	ZL
 -	_MOVW	ZH,ZL, r25,r24
 -51:	ld	r24, Z+
 -	cpi	r24, 0
 -	breq	42b
 -	rcall	xputc
 -	rjmp	51b
 -
 -60:	push	ZH		;Put a string on the ROM
 -	push	ZL
 -	rcall	xputs
 -	rjmp	42b
 -.endfunc
 -
 -
 -.func __xprintf
 -.global __xprintf
 -__xprintf:
 -	push	YH
 -	push	YL
 -	in	YL, _SFR_IO_ADDR(SPL)
 -#ifdef SPH
 -	in	YH, _SFR_IO_ADDR(SPH)
 -#else
 -	clr	YH
 -#endif
 -	adiw	YL, 5		;Y = pointer to arguments
 -	rcall	xvprintf
 -	pop	YL
 -	pop	YH
 -	ret
 -.endfunc
 -
 -
 -#if USE_XSPRINTF
 -
 -.func __xsprintf
 -putram:
 -	_MOVW	ZH,ZL, r15,r14
 -	st	Z+, r24
 -	_MOVW	r15,r14, ZH,ZL
 -	ret
 -.global __xsprintf
 -__xsprintf:
 -	push	YH
 -	push	YL
 -	in	YL, _SFR_IO_ADDR(SPL)
 -#ifdef SPH
 -	in	YH, _SFR_IO_ADDR(SPH)
 -#else
 -	clr	YH
 -#endif
 -	adiw	YL, 5		;Y = pointer to arguments
 -	lds	ZL, xfunc_out+0	;Save registered output function
 -	lds	ZH, xfunc_out+1	;
 -	push	ZL		;
 -	push	ZH		;/
 -	ldi	ZL, lo8(pm(putram));Set local output function
 -	ldi	ZH, hi8(pm(putram));
 -	sts	xfunc_out+0, ZL	;
 -	sts	xfunc_out+1, ZH	;/
 -	push	r15		;Initialize pointer to string buffer
 -	push	r14		;
 -	ld	r14, Y+		;
 -	ld	r15, Y+		;/
 -	rcall	xvprintf
 -	_MOVW	ZH,ZL, r15,r14	;Terminate string
 -	st	Z, r1		;
 -	pop	r14		;
 -	pop	r15		;/
 -	pop	ZH		;Restore registered output function
 -	pop	ZL		;
 -	sts	xfunc_out+0, ZL	;
 -	sts	xfunc_out+1, ZH	;/
 -	pop	YL
 -	pop	YH
 -	ret
 -.endfunc
 -#endif
 -
 -
 -#if USE_XFPRINTF
 -.func __xfprintf
 -.global __xfprintf
 -__xfprintf:
 -	push	YH
 -	push	YL
 -	in	YL, _SFR_IO_ADDR(SPL)
 -#ifdef SPH
 -	in	YH, _SFR_IO_ADDR(SPH)
 -#else
 -	clr	YH
 -#endif
 -	adiw	YL, 5		;Y = pointer to arguments
 -	lds	ZL, xfunc_out+0	;Save registered output function
 -	lds	ZH, xfunc_out+1	;
 -	push	ZL		;
 -	push	ZH		;/
 -	ld	ZL, Y+		;Set output function
 -	ld	ZH, Y+		;
 -	sts	xfunc_out+0, ZL	;
 -	sts	xfunc_out+1, ZH	;/
 -	rcall	xvprintf
 -	pop	ZH		;Restore registered output function
 -	pop	ZL		;
 -	sts	xfunc_out+0, ZL	;
 -	sts	xfunc_out+1, ZH	;/
 -	pop	YL
 -	pop	YH
 -	ret
 -.endfunc
 -#endif
 -
 -#endif
 -
 -
 -
 -;---------------------------------------------------------------------------
 -; Extended numeral string input
 -;
 -;Prototype:
 -; char xatoi (           /* 1: Successful, 0: Failed */
 -;      const char **str, /* pointer to pointer to source string */
 -;      long *res         /* result */
 -; );
 -;
 -
 -
 -#if USE_XATOI
 -.func xatoi
 -.global xatoi
 -xatoi:
 -	_MOVW	r1, r0, r23, r22
 -	_MOVW	XH, XL, r25, r24
 -	ld	ZL, X+
 -	ld	ZH, X+
 -	clr	r18		;r21:r18 = 0;
 -	clr	r19		;
 -	clr	r20		;
 -	clr	r21		;/
 -	clt			;T = 0;
 -
 -	ldi	r25, 10		;r25 = 10;
 -	rjmp	41f		;/
 -40:	adiw	ZL, 1		;Z++;
 -41:	ld	r22, Z		;r22 = *Z;
 -	cpi	r22, ' '	;if(r22 == ' ') continue
 -	breq	40b		;/
 -	brcs	70f		;if(r22 < ' ') error;
 -	cpi	r22, '-'	;if(r22 == '-') {
 -	brne	42f		; T = 1;
 -	set			; continue;
 -	rjmp	40b		;}
 -42:	cpi	r22, '9'+1	;if(r22 > '9') error;
 -	brcc	70f		;/
 -	cpi	r22, '0'	;if(r22 < '0') error;
 -	brcs	70f		;/
 -	brne	51f		;if(r22 > '0') cv_start;
 -	ldi	r25, 8		;r25 = 8;
 -	adiw	ZL, 1		;r22 = *(++Z);
 -	ld	r22, Z		;/
 -	cpi	r22, ' '+1	;if(r22 <= ' ') exit;
 -	brcs	80f		;/
 -	cpi	r22, 'b'	;if(r22 == 'b') {
 -	brne	43f		; r25 = 2;
 -	ldi	r25, 2		; cv_start;
 -	rjmp	50f		;}
 -43:	cpi	r22, 'x'	;if(r22 != 'x') error;
 -	brne	51f		;/
 -	ldi	r25, 16		;r25 = 16;
 -
 -50:	adiw	ZL, 1		;Z++;
 -	ld	r22, Z		;r22 = *Z;
 -51:	cpi	r22, ' '+1	;if(r22 <= ' ') break;
 -	brcs	80f		;/
 -	cpi	r22, 'a'	;if(r22 >= 'a') r22 =- 0x20;
 -	brcs	52f		;
 -	subi	r22, 0x20	;/
 -52:	subi	r22, '0'	;if((r22 -= '0') < 0) error;
 -	brcs	70f		;/
 -	cpi	r22, 10		;if(r22 >= 10) {
 -	brcs	53f		; r22 -= 7;
 -	subi	r22, 7		; if(r22 < 10) 
 -	cpi	r22, 10		;
 -	brcs	70f		;}
 -53:	cp	r22, r25	;if(r22 >= r25) error;
 -	brcc	70f		;/
 -60:	ldi	r24, 33		;r21:r18 *= r25;
 -	sub	r23, r23	;
 -61:	brcc	62f		;
 -	add	r23, r25	;
 -62:	lsr	r23		;
 -	ror	r21		;
 -	ror	r20		;
 -	ror	r19		;
 -	ror	r18		;
 -	dec	r24		;
 -	brne	61b		;/
 -	add	r18, r22	;r21:r18 += r22;
 -	adc	r19, r24	;
 -	adc	r20, r24	;
 -	adc	r21, r24	;/
 -	rjmp	50b		;repeat
 -
 -70:	ldi	r24, 0
 -	rjmp	81f
 -80:	ldi	r24, 1
 -81:	brtc	82f
 -	clr	r22
 -	com	r18
 -	com	r19
 -	com	r20
 -	com	r21
 -	adc	r18, r22
 -	adc	r19, r22
 -	adc	r20, r22
 -	adc	r21, r22
 -82:	st	-X, ZH
 -	st	-X, ZL
 -	_MOVW	XH, XL, r1, r0
 -	st	X+, r18
 -	st	X+, r19
 -	st	X+, r20
 -	st	X+, r21
 -	clr	r1
 -	ret
 -.endfunc
 -#endif
 -
 -
 +;---------------------------------------------------------------------------; +; Extended itoa, puts, printf and atoi                     (C)ChaN, 2011 +;---------------------------------------------------------------------------; + +				// Base size is 152 bytes +#define	CR_CRLF		0	// Convert \n to \r\n (+10 bytes) +#define USE_XPRINTF	1	// Enable xprintf function (+194 bytes) +#define USE_XSPRINTF	0	// Add xsprintf function (+78 bytes) +#define USE_XFPRINTF	0	// Add xfprintf function (+54 bytes) +#define USE_XATOI	0	// Enable xatoi function (+182 bytes) + + +#if FLASHEND > 0x1FFFF +#error xitoa module does not support 256K devices +#endif + +.nolist +#include <avr/io.h>	// Include device specific definitions. +.list + +#ifdef SPM_PAGESIZE	// Recent devices have "lpm Rd,Z+" and "movw". +.macro	_LPMI	reg +	lpm	\reg, Z+ +.endm +.macro	_MOVW	dh,dl, sh,sl +	movw	\dl, \sl +.endm +#else			// Earlier devices do not have "lpm Rd,Z+" nor "movw". +.macro	_LPMI	reg +	lpm +	mov	\reg, r0 +	adiw	ZL, 1 +.endm +.macro	_MOVW	dh,dl, sh,sl +	mov	\dl, \sl +	mov	\dh, \sh +.endm +#endif + + + +;--------------------------------------------------------------------------- +; Stub function to forward to user output function +; +;Prototype: void xputc (char chr	// a character to be output +;			); +;Size: 12/12 words + +.section .bss +.global xfunc_out	; xfunc_out must be initialized before using this module. +xfunc_out:	.ds.w	1 +.section .text + + +.func xputc +.global xputc +xputc: +#if CR_CRLF +	cpi	r24, 10		;LF --> CRLF +	brne	1f		; +	ldi	r24, 13		; +	rcall	1f		; +	ldi	r24, 10		;/ +1: +#endif +	push	ZH +	push	ZL +	lds	ZL, xfunc_out+0	;Pointer to the registered output function. +	lds	ZH, xfunc_out+1	;/ +	sbiw	ZL, 0		;Skip if null +	breq	2f		;/ +	icall +2:	pop	ZL +	pop	ZH +	ret +.endfunc + + + +;--------------------------------------------------------------------------- +; Direct ROM string output +; +;Prototype: void xputs (const char *str_p // rom string to be output +;			); + +.func xputs +.global xputs +xputs: +	_MOVW	ZH,ZL, r25,r24	; Z = pointer to rom string +1:	_LPMI	r24 +	cpi	r24, 0 +	breq	2f +	rcall	xputc +	rjmp	1b +2:	ret +.endfunc + + +;--------------------------------------------------------------------------- +; Extended direct numeral string output (32bit version) +; +;Prototype: void xitoa (long value,	// value to be output +;                       char radix,	// radix +;                       char width);	// minimum width +; + +.func xitoa +.global xitoa +xitoa: +				;r25:r22 = value, r20 = base, r18 = digits +	clr	r31		;r31 = stack level +	ldi	r30, ' '	;r30 = sign +	ldi	r19, ' '	;r19 = filler +	sbrs	r20, 7		;When base indicates signd format and the value +	rjmp	0f		;is minus, add a '-'. +	neg	r20		; +	sbrs	r25, 7		; +	rjmp	0f		; +	ldi	r30, '-'	; +	com	r22		; +	com	r23		; +	com	r24		; +	com	r25		; +	adc	r22, r1		; +	adc	r23, r1		; +	adc	r24, r1		; +	adc	r25, r1		;/ +0:	sbrs	r18, 7		;When digits indicates zero filled, +	rjmp	1f		;filler is '0'. +	neg	r18		; +	ldi	r19, '0'	;/ +				;----- string conversion loop +1:	ldi	r21, 32		;r26 = r25:r22 % r20 +	clr	r26		;r25:r22 /= r20 +2:	lsl	r22		; +	rol	r23		; +	rol	r24		; +	rol	r25		; +	rol	r26		; +	cp	r26, r20	; +	brcs	3f		; +	sub	r26, r20	; +	inc	r22		; +3:	dec	r21		; +	brne	2b		;/ +	cpi	r26, 10		;r26 is a numeral digit '0'-'F' +	brcs	4f		; +	subi	r26, -7		; +4:	subi	r26, -'0'	;/ +	push	r26		;Stack it +	inc	r31		;/ +	cp	r22, r1		;Repeat until r25:r22 gets zero +	cpc	r23, r1		; +	cpc	r24, r1		; +	cpc	r25, r1		; +	brne	1b		;/ + +	cpi	r30, '-'	;Minus sign if needed +	brne	5f		; +	push	r30		; +	inc	r31		;/ +5:	cp	r31, r18	;Filler +	brcc	6f		; +	push	r19		; +	inc	r31		; +	rjmp	5b		;/ + +6:	pop	r24		;Flush stacked digits and exit +	rcall	xputc		; +	dec	r31		; +	brne	6b		;/ + +	ret +.endfunc + + + +;---------------------------------------------------------------------------; +; Formatted string output (16/32bit version) +; +;Prototype: +; void __xprintf (const char *format_p, ...); +; void __xsprintf(char*, const char *format_p, ...); +; void __xfprintf(void(*func)(char), const char *format_p, ...); +; + +#if USE_XPRINTF + +.func xvprintf +xvprintf: +	ld	ZL, Y+		;Z = pointer to format string +	ld	ZH, Y+		;/ + +0:	_LPMI	r24		;Get a format char +	cpi	r24, 0		;End of format string? +	breq	90f		;/ +	cpi	r24, '%'	;Is format? +	breq	20f		;/ +1:	rcall	xputc		;Put a normal character +	rjmp	0b		;/ +90:	ret + +20:	ldi	r18, 0		;r18: digits +	clt			;T: filler +	_LPMI	r21		;Get flags +	cpi	r21, '%'	;Is a %? +	breq	1b		;/ +	cpi	r21, '0'	;Zero filled? +	brne	23f		; +	set			;/ +22:	_LPMI	r21		;Get width +23:	cpi	r21, '9'+1	; +	brcc	24f		; +	subi	r21, '0'	; +	brcs	90b		; +	lsl	r18		; +	mov	r0, r18		; +	lsl	r18		; +	lsl	r18		; +	add	r18, r0		; +	add	r18, r21	; +	rjmp	22b		;/ + +24:	brtc	25f		;get value (low word) +	neg	r18		; +25:	ld	r24, Y+		; +	ld	r25, Y+		;/ +	cpi	r21, 'c'	;Is type character? +	breq	1b		;/ +	cpi	r21, 's'	;Is type RAM string? +	breq	50f		;/ +	cpi	r21, 'S'	;Is type ROM string? +	breq	60f		;/ +	_MOVW	r23,r22,r25,r24	;r25:r22 = value +	clr	r24		; +	clr	r25		; +	clt			;/ +	cpi	r21, 'l'	;Is long int? +	brne	26f		; +	ld	r24, Y+		;get value (high word) +	ld	r25, Y+		; +	set			; +	_LPMI	r21		;/ +26:	cpi	r21, 'd'	;Is type signed decimal? +	brne	27f		;/ +	ldi	r20, -10	; +	brts	40f		; +	sbrs	r23, 7		; +	rjmp	40f		; +	ldi	r24, -1		; +	ldi	r25, -1		; +	rjmp	40f		;/ +27:	cpi	r21, 'u'	;Is type unsigned decimal? +	ldi	r20, 10		; +	breq	40f		;/ +	cpi	r21, 'X'	;Is type hexdecimal? +	ldi	r20, 16		; +	breq	40f		;/ +	cpi	r21, 'b'	;Is type binary? +	ldi	r20, 2		; +	breq	40f		;/ +	ret			;abort +40:	push	ZH		;Output the value +	push	ZL		; +	rcall	xitoa		; +42:	pop	ZL		; +	pop	ZH		; +	rjmp	0b		;/ + +50:	push	ZH		;Put a string on the RAM +	push	ZL +	_MOVW	ZH,ZL, r25,r24 +51:	ld	r24, Z+ +	cpi	r24, 0 +	breq	42b +	rcall	xputc +	rjmp	51b + +60:	push	ZH		;Put a string on the ROM +	push	ZL +	rcall	xputs +	rjmp	42b +.endfunc + + +.func __xprintf +.global __xprintf +__xprintf: +	push	YH +	push	YL +	in	YL, _SFR_IO_ADDR(SPL) +#ifdef SPH +	in	YH, _SFR_IO_ADDR(SPH) +#else +	clr	YH +#endif +	adiw	YL, 5		;Y = pointer to arguments +	rcall	xvprintf +	pop	YL +	pop	YH +	ret +.endfunc + + +#if USE_XSPRINTF + +.func __xsprintf +putram: +	_MOVW	ZH,ZL, r15,r14 +	st	Z+, r24 +	_MOVW	r15,r14, ZH,ZL +	ret +.global __xsprintf +__xsprintf: +	push	YH +	push	YL +	in	YL, _SFR_IO_ADDR(SPL) +#ifdef SPH +	in	YH, _SFR_IO_ADDR(SPH) +#else +	clr	YH +#endif +	adiw	YL, 5		;Y = pointer to arguments +	lds	ZL, xfunc_out+0	;Save registered output function +	lds	ZH, xfunc_out+1	; +	push	ZL		; +	push	ZH		;/ +	ldi	ZL, lo8(pm(putram));Set local output function +	ldi	ZH, hi8(pm(putram)); +	sts	xfunc_out+0, ZL	; +	sts	xfunc_out+1, ZH	;/ +	push	r15		;Initialize pointer to string buffer +	push	r14		; +	ld	r14, Y+		; +	ld	r15, Y+		;/ +	rcall	xvprintf +	_MOVW	ZH,ZL, r15,r14	;Terminate string +	st	Z, r1		; +	pop	r14		; +	pop	r15		;/ +	pop	ZH		;Restore registered output function +	pop	ZL		; +	sts	xfunc_out+0, ZL	; +	sts	xfunc_out+1, ZH	;/ +	pop	YL +	pop	YH +	ret +.endfunc +#endif + + +#if USE_XFPRINTF +.func __xfprintf +.global __xfprintf +__xfprintf: +	push	YH +	push	YL +	in	YL, _SFR_IO_ADDR(SPL) +#ifdef SPH +	in	YH, _SFR_IO_ADDR(SPH) +#else +	clr	YH +#endif +	adiw	YL, 5		;Y = pointer to arguments +	lds	ZL, xfunc_out+0	;Save registered output function +	lds	ZH, xfunc_out+1	; +	push	ZL		; +	push	ZH		;/ +	ld	ZL, Y+		;Set output function +	ld	ZH, Y+		; +	sts	xfunc_out+0, ZL	; +	sts	xfunc_out+1, ZH	;/ +	rcall	xvprintf +	pop	ZH		;Restore registered output function +	pop	ZL		; +	sts	xfunc_out+0, ZL	; +	sts	xfunc_out+1, ZH	;/ +	pop	YL +	pop	YH +	ret +.endfunc +#endif + +#endif + + + +;--------------------------------------------------------------------------- +; Extended numeral string input +; +;Prototype: +; char xatoi (           /* 1: Successful, 0: Failed */ +;      const char **str, /* pointer to pointer to source string */ +;      long *res         /* result */ +; ); +; + + +#if USE_XATOI +.func xatoi +.global xatoi +xatoi: +	_MOVW	r1, r0, r23, r22 +	_MOVW	XH, XL, r25, r24 +	ld	ZL, X+ +	ld	ZH, X+ +	clr	r18		;r21:r18 = 0; +	clr	r19		; +	clr	r20		; +	clr	r21		;/ +	clt			;T = 0; + +	ldi	r25, 10		;r25 = 10; +	rjmp	41f		;/ +40:	adiw	ZL, 1		;Z++; +41:	ld	r22, Z		;r22 = *Z; +	cpi	r22, ' '	;if(r22 == ' ') continue +	breq	40b		;/ +	brcs	70f		;if(r22 < ' ') error; +	cpi	r22, '-'	;if(r22 == '-') { +	brne	42f		; T = 1; +	set			; continue; +	rjmp	40b		;} +42:	cpi	r22, '9'+1	;if(r22 > '9') error; +	brcc	70f		;/ +	cpi	r22, '0'	;if(r22 < '0') error; +	brcs	70f		;/ +	brne	51f		;if(r22 > '0') cv_start; +	ldi	r25, 8		;r25 = 8; +	adiw	ZL, 1		;r22 = *(++Z); +	ld	r22, Z		;/ +	cpi	r22, ' '+1	;if(r22 <= ' ') exit; +	brcs	80f		;/ +	cpi	r22, 'b'	;if(r22 == 'b') { +	brne	43f		; r25 = 2; +	ldi	r25, 2		; cv_start; +	rjmp	50f		;} +43:	cpi	r22, 'x'	;if(r22 != 'x') error; +	brne	51f		;/ +	ldi	r25, 16		;r25 = 16; + +50:	adiw	ZL, 1		;Z++; +	ld	r22, Z		;r22 = *Z; +51:	cpi	r22, ' '+1	;if(r22 <= ' ') break; +	brcs	80f		;/ +	cpi	r22, 'a'	;if(r22 >= 'a') r22 =- 0x20; +	brcs	52f		; +	subi	r22, 0x20	;/ +52:	subi	r22, '0'	;if((r22 -= '0') < 0) error; +	brcs	70f		;/ +	cpi	r22, 10		;if(r22 >= 10) { +	brcs	53f		; r22 -= 7; +	subi	r22, 7		; if(r22 < 10)  +	cpi	r22, 10		; +	brcs	70f		;} +53:	cp	r22, r25	;if(r22 >= r25) error; +	brcc	70f		;/ +60:	ldi	r24, 33		;r21:r18 *= r25; +	sub	r23, r23	; +61:	brcc	62f		; +	add	r23, r25	; +62:	lsr	r23		; +	ror	r21		; +	ror	r20		; +	ror	r19		; +	ror	r18		; +	dec	r24		; +	brne	61b		;/ +	add	r18, r22	;r21:r18 += r22; +	adc	r19, r24	; +	adc	r20, r24	; +	adc	r21, r24	;/ +	rjmp	50b		;repeat + +70:	ldi	r24, 0 +	rjmp	81f +80:	ldi	r24, 1 +81:	brtc	82f +	clr	r22 +	com	r18 +	com	r19 +	com	r20 +	com	r21 +	adc	r18, r22 +	adc	r19, r22 +	adc	r20, r22 +	adc	r21, r22 +82:	st	-X, ZH +	st	-X, ZL +	_MOVW	XH, XL, r1, r0 +	st	X+, r18 +	st	X+, r19 +	st	X+, r20 +	st	X+, r21 +	clr	r1 +	ret +.endfunc +#endif + + diff --git a/tmk_core/common/avr/xprintf.h b/tmk_core/common/avr/xprintf.h index 59c6f2531..e53c0dd8e 100644 --- a/tmk_core/common/avr/xprintf.h +++ b/tmk_core/common/avr/xprintf.h @@ -1,111 +1,111 @@ -/*---------------------------------------------------------------------------
 -   Extended itoa, puts and printf                    (C)ChaN, 2011
 ------------------------------------------------------------------------------*/
 -
 -#ifndef XPRINTF_H
 -#define XPRINTF_H
 -
 -#include <inttypes.h>
 -#include <avr/pgmspace.h>
 -
 -#ifdef __cplusplus
 -extern "C" {
 -#endif
 -
 -extern void (*xfunc_out)(uint8_t);
 -#define xdev_out(func) xfunc_out = (void(*)(uint8_t))(func)
 -
 -/* This is a pointer to user defined output function. It must be initialized
 -   before using this modle.
 -*/
 -
 -void xputc(char chr);
 -
 -/* This is a stub function to forward outputs to user defined output function.
 -   All outputs from this module are output via this function.
 -*/
 -
 -
 -/*-----------------------------------------------------------------------------*/
 -void xputs(const char *string_p);
 -
 -/*  The string placed in the ROM is forwarded to xputc() directly.
 -*/
 -
 -
 -/*-----------------------------------------------------------------------------*/
 -void xitoa(long value, char radix, char width);
 -
 -/* Extended itoa().
 -
 -      value  radix  width   output
 -        100     10      6   "   100"
 -        100     10     -6   "000100"
 -        100     10      0   "100"
 - 4294967295     10      0   "4294967295"
 - 4294967295    -10      0   "-1"
 -     655360     16     -8   "000A0000"
 -       1024     16      0   "400"
 -       0x55      2     -8   "01010101"
 -*/
 -
 -
 -/*-----------------------------------------------------------------------------*/
 -#define xprintf(format, ...)            __xprintf(PSTR(format), ##__VA_ARGS__)
 -#define xsprintf(str, format, ...)      __xsprintf(str, PSTR(format), ##__VA_ARGS__)
 -#define xfprintf(func, format, ...)     __xfprintf(func, PSTR(format), ##__VA_ARGS__)
 -
 -void __xprintf(const char *format_p, ...);	/* Send formatted string to the registered device */
 -void __xsprintf(char*, const char *format_p, ...);	/* Put formatted string to the memory */
 -void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */
 -
 -/* Format string is placed in the ROM. The format flags is similar to printf().
 -
 -   %[flag][width][size]type
 -
 -   flag
 -     A '0' means filled with '0' when output is shorter than width.
 -     ' ' is used in default. This is effective only numeral type.
 -   width
 -     Minimum width in decimal number. This is effective only numeral type.
 -     Default width is zero.
 -   size
 -     A 'l' means the argument is long(32bit). Default is short(16bit).
 -     This is effective only numeral type.
 -   type
 -     'c' : Character, argument is the value
 -     's' : String placed on the RAM, argument is the pointer
 -     'S' : String placed on the ROM, argument is the pointer
 -     'd' : Signed decimal, argument is the value
 -     'u' : Unsigned decimal, argument is the value
 -     'X' : Hexdecimal, argument is the value
 -     'b' : Binary, argument is the value
 -     '%' : '%'
 -
 -*/
 -
 -
 -/*-----------------------------------------------------------------------------*/
 -char xatoi(char **str, long *ret);
 -
 -/* Get value of the numeral string. 
 -
 -  str
 -    Pointer to pointer to source string
 -
 -    "0b11001010" binary
 -    "0377" octal
 -    "0xff800" hexdecimal
 -    "1250000" decimal
 -    "-25000" decimal
 -
 -  ret
 -    Pointer to return value
 -*/
 -
 -#ifdef __cplusplus
 -}
 -#endif
 -
 -#endif
 -
 +/*--------------------------------------------------------------------------- +   Extended itoa, puts and printf                    (C)ChaN, 2011 +-----------------------------------------------------------------------------*/ + +#ifndef XPRINTF_H +#define XPRINTF_H + +#include <inttypes.h> +#include <avr/pgmspace.h> + +#ifdef __cplusplus +extern "C" { +#endif + +extern void (*xfunc_out)(uint8_t); +#define xdev_out(func) xfunc_out = (void(*)(uint8_t))(func) + +/* This is a pointer to user defined output function. It must be initialized +   before using this modle. +*/ + +void xputc(char chr); + +/* This is a stub function to forward outputs to user defined output function. +   All outputs from this module are output via this function. +*/ + + +/*-----------------------------------------------------------------------------*/ +void xputs(const char *string_p); + +/*  The string placed in the ROM is forwarded to xputc() directly. +*/ + + +/*-----------------------------------------------------------------------------*/ +void xitoa(long value, char radix, char width); + +/* Extended itoa(). + +      value  radix  width   output +        100     10      6   "   100" +        100     10     -6   "000100" +        100     10      0   "100" + 4294967295     10      0   "4294967295" + 4294967295    -10      0   "-1" +     655360     16     -8   "000A0000" +       1024     16      0   "400" +       0x55      2     -8   "01010101" +*/ + + +/*-----------------------------------------------------------------------------*/ +#define xprintf(format, ...)            __xprintf(PSTR(format), ##__VA_ARGS__) +#define xsprintf(str, format, ...)      __xsprintf(str, PSTR(format), ##__VA_ARGS__) +#define xfprintf(func, format, ...)     __xfprintf(func, PSTR(format), ##__VA_ARGS__) + +void __xprintf(const char *format_p, ...);	/* Send formatted string to the registered device */ +void __xsprintf(char*, const char *format_p, ...);	/* Put formatted string to the memory */ +void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */ + +/* Format string is placed in the ROM. The format flags is similar to printf(). + +   %[flag][width][size]type + +   flag +     A '0' means filled with '0' when output is shorter than width. +     ' ' is used in default. This is effective only numeral type. +   width +     Minimum width in decimal number. This is effective only numeral type. +     Default width is zero. +   size +     A 'l' means the argument is long(32bit). Default is short(16bit). +     This is effective only numeral type. +   type +     'c' : Character, argument is the value +     's' : String placed on the RAM, argument is the pointer +     'S' : String placed on the ROM, argument is the pointer +     'd' : Signed decimal, argument is the value +     'u' : Unsigned decimal, argument is the value +     'X' : Hexdecimal, argument is the value +     'b' : Binary, argument is the value +     '%' : '%' + +*/ + + +/*-----------------------------------------------------------------------------*/ +char xatoi(char **str, long *ret); + +/* Get value of the numeral string.  + +  str +    Pointer to pointer to source string + +    "0b11001010" binary +    "0377" octal +    "0xff800" hexdecimal +    "1250000" decimal +    "-25000" decimal + +  ret +    Pointer to return value +*/ + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index 084c9fe15..476fc6fe3 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -34,6 +34,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include "command.h"  #include "backlight.h"  #include "quantum.h" +#include "version.h"  #ifdef MOUSEKEY_ENABLE  #include "mousekey.h" @@ -180,7 +181,7 @@ static void print_version(void)      print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "            "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "            "VER: " STR(DEVICE_VER) "\n"); -    print("BUILD: " STR(VERSION) " (" __TIME__ " " __DATE__ ")\n"); +    print("BUILD: " STR(QMK_VERSION) " (" __TIME__ " " __DATE__ ")\n");      /* build options */      print("OPTIONS:" diff --git a/tmk_core/native.mk b/tmk_core/native.mk new file mode 100644 index 000000000..50232ee9b --- /dev/null +++ b/tmk_core/native.mk @@ -0,0 +1,24 @@ +CC = gcc +OBJCOPY =  +OBJDUMP =  +SIZE =  +AR =  +NM =  +HEX =  +EEP =  +BIN = + + +COMPILEFLAGS += -funsigned-char +COMPILEFLAGS += -funsigned-bitfields +COMPILEFLAGS += -ffunction-sections +COMPILEFLAGS += -fdata-sections +COMPILEFLAGS += -fshort-enums + +CFLAGS += $(COMPILEFLAGS) +CFLAGS += -fno-inline-small-functions +CFLAGS += -fno-strict-aliasing + +CPPFLAGS += $(COMPILEFLAGS) +CPPFLAGS += -fno-exceptions +CPPFLAGS += -std=gnu++11
\ No newline at end of file diff --git a/tmk_core/protocol/iwrap/suart.S b/tmk_core/protocol/iwrap/suart.S index 1b0290963..a873515e1 100644 --- a/tmk_core/protocol/iwrap/suart.S +++ b/tmk_core/protocol/iwrap/suart.S @@ -1,156 +1,156 @@ -;---------------------------------------------------------------------------;
 -; Software implemented UART module                                          ;
 -; (C)ChaN, 2005 (http://elm-chan.org/)                                      ;
 -;---------------------------------------------------------------------------;
 -; Bit rate settings:
 -;
 -;            1MHz  2MHz  4MHz  6MHz  8MHz  10MHz  12MHz  16MHz  20MHz
 -;   2.4kbps   138     -     -     -     -      -      -      -      -
 -;   4.8kbps    68   138     -     -     -      -      -      -      -
 -;   9.6kbps    33    68   138   208     -      -      -      -      -
 -;  19.2kbps     -    33    68   102   138    173    208      -      -
 -;  38.4kbps     -     -    33    50    68     85    102    138    172
 -;  57.6kbps     -     -    21    33    44     56     68     91    114
 -; 115.2kbps     -     -     -     -    21     27     33     44     56
 -
 -.nolist
 -#include <avr/io.h>
 -.list
 -
 -#define	BPS	102 	/* Bit delay. (see above table) */
 -#define	BIDIR	0	/* 0:Separated Tx/Rx, 1:Shared Tx/Rx */
 -
 -#define	OUT_1		sbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT	/* Output 1 */
 -#define	OUT_0		cbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT	/* Output 0 */
 -#define	SKIP_IN_1	sbis _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT	/* Skip if 1 */
 -#define	SKIP_IN_0	sbic _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT	/* Skip if 0 */
 -
 -
 -
 -#ifdef SPM_PAGESIZE
 -.macro	_LPMI	reg
 -	lpm	\reg, Z+
 -.endm
 -.macro	_MOVW	dh,dl, sh,sl
 -	movw	\dl, \sl
 -.endm
 -#else
 -.macro	_LPMI	reg
 -	lpm
 -	mov	\reg, r0
 -	adiw	ZL, 1
 -.endm
 -.macro	_MOVW	dh,dl, sh,sl
 -	mov	\dl, \sl
 -	mov	\dh, \sh
 -.endm
 -#endif
 -
 -
 -
 -;---------------------------------------------------------------------------;
 -; Transmit a byte in serial format of N81
 -;
 -;Prototype: void xmit (uint8_t data);
 -;Size: 16 words
 -
 -.global xmit
 -.func xmit
 -xmit:
 -#if BIDIR
 -	ldi	r23, BPS-1	;Pre-idle time for bidirectional data line
 -5:	dec	r23     	;
 -	brne	5b		;/
 -#endif
 -	in	r0, _SFR_IO_ADDR(SREG)	;Save flags
 -
 -	com	r24		;C = start bit
 -	ldi	r25, 10		;Bit counter
 -	cli			;Start critical section
 -
 -1:	ldi	r23, BPS-1	;----- Bit transferring loop 
 -2:	dec	r23     	;Wait for a bit time
 -	brne	2b		;/
 -	brcs	3f		;MISO = bit to be sent
 -	OUT_1			;
 -3:	brcc	4f		;
 -	OUT_0			;/
 -4:	lsr	r24     	;Get next bit into C
 -	dec	r25     	;All bits sent?
 -	brne	1b	     	;  no, coutinue
 -
 -	out	_SFR_IO_ADDR(SREG), r0	;End of critical section
 -	ret
 -.endfunc
 -
 -
 -
 -;---------------------------------------------------------------------------;
 -; Receive a byte
 -;
 -;Prototype: uint8_t rcvr (void);
 -;Size: 19 words
 -
 -.global rcvr
 -.func rcvr
 -rcvr:
 -	in	r0, _SFR_IO_ADDR(SREG)	;Save flags
 -
 -	ldi	r24, 0x80	;Receiving shift reg
 -	cli			;Start critical section
 -
 -1:	SKIP_IN_1		;Wait for idle
 -	rjmp	1b
 -2:	SKIP_IN_0		;Wait for start bit
 -	rjmp	2b
 -	ldi	r25, BPS/2	;Wait for half bit time
 -3:	dec	r25
 -	brne	3b
 -
 -4:	ldi	r25, BPS	;----- Bit receiving loop
 -5:	dec	r25     	;Wait for a bit time
 -	brne	5b		;/
 -	lsr	r24     	;Next bit
 -	SKIP_IN_0		;Get a data bit into r24.7
 -	ori	r24, 0x80
 -	brcc	4b	     	;All bits received?  no, continue
 -
 -	out	_SFR_IO_ADDR(SREG), r0	;End of critical section
 -	ret
 -.endfunc
 -
 -
 -; Not wait for start bit. This should be called after detecting start bit.
 -.global recv
 -.func recv
 -recv:
 -	in	r0, _SFR_IO_ADDR(SREG)	;Save flags
 -
 -	ldi	r24, 0x80	;Receiving shift reg
 -	cli			;Start critical section
 -
 -;1:	SKIP_IN_1		;Wait for idle
 -;	rjmp	1b
 -;2:	SKIP_IN_0		;Wait for start bit
 -;	rjmp	2b
 -	ldi	r25, BPS/2	;Wait for half bit time
 -3:	dec	r25
 -	brne	3b
 -
 -4:	ldi	r25, BPS	;----- Bit receiving loop
 -5:	dec	r25     	;Wait for a bit time
 -	brne	5b		;/
 -	lsr	r24     	;Next bit
 -	SKIP_IN_0		;Get a data bit into r24.7
 -	ori	r24, 0x80
 -	brcc	4b	     	;All bits received?  no, continue
 -
 -	ldi	r25, BPS/2	;Wait for half bit time
 -6:	dec	r25
 -	brne	6b
 -7:	SKIP_IN_1		;Wait for stop bit
 -	rjmp	7b
 -
 -	out	_SFR_IO_ADDR(SREG), r0	;End of critical section
 -	ret
 -.endfunc
 +;---------------------------------------------------------------------------; +; Software implemented UART module                                          ; +; (C)ChaN, 2005 (http://elm-chan.org/)                                      ; +;---------------------------------------------------------------------------; +; Bit rate settings: +; +;            1MHz  2MHz  4MHz  6MHz  8MHz  10MHz  12MHz  16MHz  20MHz +;   2.4kbps   138     -     -     -     -      -      -      -      - +;   4.8kbps    68   138     -     -     -      -      -      -      - +;   9.6kbps    33    68   138   208     -      -      -      -      - +;  19.2kbps     -    33    68   102   138    173    208      -      - +;  38.4kbps     -     -    33    50    68     85    102    138    172 +;  57.6kbps     -     -    21    33    44     56     68     91    114 +; 115.2kbps     -     -     -     -    21     27     33     44     56 + +.nolist +#include <avr/io.h> +.list + +#define	BPS	102 	/* Bit delay. (see above table) */ +#define	BIDIR	0	/* 0:Separated Tx/Rx, 1:Shared Tx/Rx */ + +#define	OUT_1		sbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT	/* Output 1 */ +#define	OUT_0		cbi _SFR_IO_ADDR(SUART_OUT_PORT), SUART_OUT_BIT	/* Output 0 */ +#define	SKIP_IN_1	sbis _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT	/* Skip if 1 */ +#define	SKIP_IN_0	sbic _SFR_IO_ADDR(SUART_IN_PIN), SUART_IN_BIT	/* Skip if 0 */ + + + +#ifdef SPM_PAGESIZE +.macro	_LPMI	reg +	lpm	\reg, Z+ +.endm +.macro	_MOVW	dh,dl, sh,sl +	movw	\dl, \sl +.endm +#else +.macro	_LPMI	reg +	lpm +	mov	\reg, r0 +	adiw	ZL, 1 +.endm +.macro	_MOVW	dh,dl, sh,sl +	mov	\dl, \sl +	mov	\dh, \sh +.endm +#endif + + + +;---------------------------------------------------------------------------; +; Transmit a byte in serial format of N81 +; +;Prototype: void xmit (uint8_t data); +;Size: 16 words + +.global xmit +.func xmit +xmit: +#if BIDIR +	ldi	r23, BPS-1	;Pre-idle time for bidirectional data line +5:	dec	r23     	; +	brne	5b		;/ +#endif +	in	r0, _SFR_IO_ADDR(SREG)	;Save flags + +	com	r24		;C = start bit +	ldi	r25, 10		;Bit counter +	cli			;Start critical section + +1:	ldi	r23, BPS-1	;----- Bit transferring loop  +2:	dec	r23     	;Wait for a bit time +	brne	2b		;/ +	brcs	3f		;MISO = bit to be sent +	OUT_1			; +3:	brcc	4f		; +	OUT_0			;/ +4:	lsr	r24     	;Get next bit into C +	dec	r25     	;All bits sent? +	brne	1b	     	;  no, coutinue + +	out	_SFR_IO_ADDR(SREG), r0	;End of critical section +	ret +.endfunc + + + +;---------------------------------------------------------------------------; +; Receive a byte +; +;Prototype: uint8_t rcvr (void); +;Size: 19 words + +.global rcvr +.func rcvr +rcvr: +	in	r0, _SFR_IO_ADDR(SREG)	;Save flags + +	ldi	r24, 0x80	;Receiving shift reg +	cli			;Start critical section + +1:	SKIP_IN_1		;Wait for idle +	rjmp	1b +2:	SKIP_IN_0		;Wait for start bit +	rjmp	2b +	ldi	r25, BPS/2	;Wait for half bit time +3:	dec	r25 +	brne	3b + +4:	ldi	r25, BPS	;----- Bit receiving loop +5:	dec	r25     	;Wait for a bit time +	brne	5b		;/ +	lsr	r24     	;Next bit +	SKIP_IN_0		;Get a data bit into r24.7 +	ori	r24, 0x80 +	brcc	4b	     	;All bits received?  no, continue + +	out	_SFR_IO_ADDR(SREG), r0	;End of critical section +	ret +.endfunc + + +; Not wait for start bit. This should be called after detecting start bit. +.global recv +.func recv +recv: +	in	r0, _SFR_IO_ADDR(SREG)	;Save flags + +	ldi	r24, 0x80	;Receiving shift reg +	cli			;Start critical section + +;1:	SKIP_IN_1		;Wait for idle +;	rjmp	1b +;2:	SKIP_IN_0		;Wait for start bit +;	rjmp	2b +	ldi	r25, BPS/2	;Wait for half bit time +3:	dec	r25 +	brne	3b + +4:	ldi	r25, BPS	;----- Bit receiving loop +5:	dec	r25     	;Wait for a bit time +	brne	5b		;/ +	lsr	r24     	;Next bit +	SKIP_IN_0		;Get a data bit into r24.7 +	ori	r24, 0x80 +	brcc	4b	     	;All bits received?  no, continue + +	ldi	r25, BPS/2	;Wait for half bit time +6:	dec	r25 +	brne	6b +7:	SKIP_IN_1		;Wait for stop bit +	rjmp	7b + +	out	_SFR_IO_ADDR(SREG), r0	;End of critical section +	ret +.endfunc diff --git a/tmk_core/protocol/iwrap/suart.h b/tmk_core/protocol/iwrap/suart.h index 72725b998..7d92be069 100644 --- a/tmk_core/protocol/iwrap/suart.h +++ b/tmk_core/protocol/iwrap/suart.h @@ -1,8 +1,8 @@ -#ifndef SUART
 -#define SUART
 -
 -void xmit(uint8_t);
 -uint8_t rcvr(void);
 -uint8_t recv(void);
 -
 -#endif	/* SUART */
 +#ifndef SUART +#define SUART + +void xmit(uint8_t); +uint8_t rcvr(void); +uint8_t recv(void); + +#endif	/* SUART */ diff --git a/tmk_core/protocol/iwrap/wd.h b/tmk_core/protocol/iwrap/wd.h index 99058f033..12395bf69 100644 --- a/tmk_core/protocol/iwrap/wd.h +++ b/tmk_core/protocol/iwrap/wd.h @@ -1,159 +1,159 @@ -/* This is from http://www.mtcnet.net/~henryvm/wdt/ */
 -#ifndef _AVR_WD_H_
 -#define _AVR_WD_H_
 -
 -#include <avr/io.h>
 -
 -/*
 -Copyright (c) 2009, Curt Van Maanen
 -
 -Permission to use, copy, modify, and/or distribute this software for any
 -purpose with or without fee is hereby granted, provided that the above
 -copyright notice and this permission notice appear in all copies.
 -
 -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 -
 -
 -include usage-
 -    #include "wd.h"             //if in same directory as project
 -    #include <avr/wd.h>         //if wd.h is in avr directory
 -
 -set watchdog modes and prescale
 -
 -usage-
 -    WD_SET(mode,[timeout]);     //prescale always set
 -
 -modes-
 -    WD_OFF                      disabled
 -    WD_RST                      normal reset mode
 -    WD_IRQ                      interrupt only mode (if supported)
 -    WD_RST_IRQ                  interrupt+reset mode (if supported)
 -
 -timeout-
 -    WDTO_15MS                   default if no timeout provided
 -    WDTO_30MS
 -    WDTO_60MS
 -    WDTO_120MS
 -    WDTO_250MS
 -    WDTO_500MS
 -    WDTO_1S
 -    WDTO_2S
 -    WDTO_4S                     (if supported)
 -    WDTO_8S                     (if supported)
 -
 -examples-
 -    WD_SET(WD_RST,WDTO_1S);     //reset mode, 1s timeout
 -    WD_SET(WD_OFF);             //watchdog disabled (if not fused on)
 -    WD_SET(WD_RST);             //reset mode, 15ms (default timeout)
 -    WD_SET(WD_IRQ,WDTO_120MS);  //interrupt only mode, 120ms timeout
 -    WD_SET(WD_RST_IRQ,WDTO_2S); //interrupt+reset mode, 2S timeout
 -
 -
 -for enhanced watchdogs, if the watchdog is not being used WDRF should be
 -cleared on every power up or reset, along with disabling the watchdog-
 -    WD_DISABLE();               //clear WDRF, then turn off watchdog
 -
 -*/
 -
 -//reset registers to the same name (MCUCSR)
 -#if !defined(MCUCSR)
 -#define MCUCSR                  MCUSR
 -#endif
 -
 -//watchdog registers to the same name (WDTCSR)
 -#if !defined(WDTCSR)
 -#define WDTCSR                  WDTCR
 -#endif
 -
 -//if enhanced watchdog, define irq values, create disable macro
 -#if defined(WDIF)
 -#define WD_IRQ                  0xC0
 -#define WD_RST_IRQ              0xC8
 -#define WD_DISABLE()            do{                       \
 -                                    MCUCSR &= ~(1<<WDRF); \
 -                                    WD_SET(WD_OFF);       \
 -                                }while(0)
 -#endif
 -
 -//all watchdogs
 -#define WD_RST                  8
 -#define WD_OFF                  0
 -
 -//prescale values
 -#define WDTO_15MS               0
 -#define WDTO_30MS               1
 -#define WDTO_60MS               2
 -#define WDTO_120MS              3
 -#define WDTO_250MS              4
 -#define WDTO_500MS              5
 -#define WDTO_1S                 6
 -#define WDTO_2S                 7
 -
 -//prescale values for avrs with WDP3
 -#if defined(WDP3)
 -#define WDTO_4S                 0x20
 -#define WDTO_8S                 0x21
 -#endif
 -
 -//watchdog reset
 -#define WDR()                   __asm__ __volatile__("wdr")
 -
 -//avr reset using watchdog
 -#define WD_AVR_RESET()          do{                              \
 -                                    __asm__ __volatile__("cli"); \
 -                                    WD_SET_UNSAFE(WD_RST);       \
 -                                    while(1);                    \
 -                                }while(0)
 -
 -/*set the watchdog-
 -1. save SREG
 -2. turn off irq's
 -3. reset watchdog timer
 -4. enable watchdog change
 -5. write watchdog value
 -6. restore SREG (restoring irq status)
 -*/
 -#define WD_SET(val,...)                                 \
 -    __asm__ __volatile__(                               \
 -        "in __tmp_reg__,__SREG__"           "\n\t"      \
 -        "cli"                               "\n\t"      \
 -        "wdr"                               "\n\t"      \
 -        "sts %[wdreg],%[wden]"              "\n\t"      \
 -        "sts %[wdreg],%[wdval]"             "\n\t"      \
 -        "out __SREG__,__tmp_reg__"          "\n\t"      \
 -        :                                               \
 -        : [wdreg] "M" (&WDTCSR),                        \
 -          [wden]  "r" ((uint8_t)(0x18)),                \
 -          [wdval] "r" ((uint8_t)(val|(__VA_ARGS__+0)))  \
 -        : "r0"                                          \
 -)
 -
 -/*set the watchdog when I bit in SREG known to be clear-
 -1. reset watchdog timer
 -2. enable watchdog change
 -5. write watchdog value
 -*/
 -#define WD_SET_UNSAFE(val,...)                          \
 -    __asm__ __volatile__(                               \
 -        "wdr"                               "\n\t"      \
 -        "sts %[wdreg],%[wden]"              "\n\t"      \
 -        "sts %[wdreg],%[wdval]"             "\n\t"      \
 -        :                                               \
 -        : [wdreg] "M" (&WDTCSR),                        \
 -          [wden]  "r" ((uint8_t)(0x18)),                \
 -          [wdval] "r" ((uint8_t)(val|(__VA_ARGS__+0)))  \
 -)
 -
 -
 -//for compatibility with avr/wdt.h
 -#define wdt_enable(val) WD_SET(WD_RST,val)
 -#define wdt_disable()   WD_SET(WD_OFF)
 -
 -
 -#endif /* _AVR_WD_H_ */
 +/* This is from http://www.mtcnet.net/~henryvm/wdt/ */ +#ifndef _AVR_WD_H_ +#define _AVR_WD_H_ + +#include <avr/io.h> + +/* +Copyright (c) 2009, Curt Van Maanen + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +include usage- +    #include "wd.h"             //if in same directory as project +    #include <avr/wd.h>         //if wd.h is in avr directory + +set watchdog modes and prescale + +usage- +    WD_SET(mode,[timeout]);     //prescale always set + +modes- +    WD_OFF                      disabled +    WD_RST                      normal reset mode +    WD_IRQ                      interrupt only mode (if supported) +    WD_RST_IRQ                  interrupt+reset mode (if supported) + +timeout- +    WDTO_15MS                   default if no timeout provided +    WDTO_30MS +    WDTO_60MS +    WDTO_120MS +    WDTO_250MS +    WDTO_500MS +    WDTO_1S +    WDTO_2S +    WDTO_4S                     (if supported) +    WDTO_8S                     (if supported) + +examples- +    WD_SET(WD_RST,WDTO_1S);     //reset mode, 1s timeout +    WD_SET(WD_OFF);             //watchdog disabled (if not fused on) +    WD_SET(WD_RST);             //reset mode, 15ms (default timeout) +    WD_SET(WD_IRQ,WDTO_120MS);  //interrupt only mode, 120ms timeout +    WD_SET(WD_RST_IRQ,WDTO_2S); //interrupt+reset mode, 2S timeout + + +for enhanced watchdogs, if the watchdog is not being used WDRF should be +cleared on every power up or reset, along with disabling the watchdog- +    WD_DISABLE();               //clear WDRF, then turn off watchdog + +*/ + +//reset registers to the same name (MCUCSR) +#if !defined(MCUCSR) +#define MCUCSR                  MCUSR +#endif + +//watchdog registers to the same name (WDTCSR) +#if !defined(WDTCSR) +#define WDTCSR                  WDTCR +#endif + +//if enhanced watchdog, define irq values, create disable macro +#if defined(WDIF) +#define WD_IRQ                  0xC0 +#define WD_RST_IRQ              0xC8 +#define WD_DISABLE()            do{                       \ +                                    MCUCSR &= ~(1<<WDRF); \ +                                    WD_SET(WD_OFF);       \ +                                }while(0) +#endif + +//all watchdogs +#define WD_RST                  8 +#define WD_OFF                  0 + +//prescale values +#define WDTO_15MS               0 +#define WDTO_30MS               1 +#define WDTO_60MS               2 +#define WDTO_120MS              3 +#define WDTO_250MS              4 +#define WDTO_500MS              5 +#define WDTO_1S                 6 +#define WDTO_2S                 7 + +//prescale values for avrs with WDP3 +#if defined(WDP3) +#define WDTO_4S                 0x20 +#define WDTO_8S                 0x21 +#endif + +//watchdog reset +#define WDR()                   __asm__ __volatile__("wdr") + +//avr reset using watchdog +#define WD_AVR_RESET()          do{                              \ +                                    __asm__ __volatile__("cli"); \ +                                    WD_SET_UNSAFE(WD_RST);       \ +                                    while(1);                    \ +                                }while(0) + +/*set the watchdog- +1. save SREG +2. turn off irq's +3. reset watchdog timer +4. enable watchdog change +5. write watchdog value +6. restore SREG (restoring irq status) +*/ +#define WD_SET(val,...)                                 \ +    __asm__ __volatile__(                               \ +        "in __tmp_reg__,__SREG__"           "\n\t"      \ +        "cli"                               "\n\t"      \ +        "wdr"                               "\n\t"      \ +        "sts %[wdreg],%[wden]"              "\n\t"      \ +        "sts %[wdreg],%[wdval]"             "\n\t"      \ +        "out __SREG__,__tmp_reg__"          "\n\t"      \ +        :                                               \ +        : [wdreg] "M" (&WDTCSR),                        \ +          [wden]  "r" ((uint8_t)(0x18)),                \ +          [wdval] "r" ((uint8_t)(val|(__VA_ARGS__+0)))  \ +        : "r0"                                          \ +) + +/*set the watchdog when I bit in SREG known to be clear- +1. reset watchdog timer +2. enable watchdog change +5. write watchdog value +*/ +#define WD_SET_UNSAFE(val,...)                          \ +    __asm__ __volatile__(                               \ +        "wdr"                               "\n\t"      \ +        "sts %[wdreg],%[wden]"              "\n\t"      \ +        "sts %[wdreg],%[wdval]"             "\n\t"      \ +        :                                               \ +        : [wdreg] "M" (&WDTCSR),                        \ +          [wden]  "r" ((uint8_t)(0x18)),                \ +          [wdval] "r" ((uint8_t)(val|(__VA_ARGS__+0)))  \ +) + + +//for compatibility with avr/wdt.h +#define wdt_enable(val) WD_SET(WD_RST,val) +#define wdt_disable()   WD_SET(WD_OFF) + + +#endif /* _AVR_WD_H_ */ diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/CDC/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/CDC/asf.xml index 72f3ff04c..02e7063c6 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/CDC/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/CDC/asf.xml @@ -1,161 +1,161 @@ -<asf xmlversion="1.0">
 -	<project caption="CDC Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.128_4" force-caption="true" workspace-name="lufa_cdc_128kb_4kb_">
 -		<require idref="lufa.bootloaders.cdc"/>
 -		<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="CDC Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.64_4" force-caption="true" workspace-name="lufa_cdc_64kb_4kb_">
 -		<require idref="lufa.bootloaders.cdc"/>
 -		<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="CDC Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.32_4" force-caption="true" workspace-name="lufa_cdc_32kb_4kb_">
 -		<require idref="lufa.bootloaders.cdc"/>
 -		<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="CDC Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.16_4" force-caption="true" workspace-name="lufa_cdc_16kb_4kb_">
 -		<require idref="lufa.bootloaders.cdc"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega16u2"/>
 -		<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="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="CDC Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.8_4" force-caption="true" workspace-name="lufa_cdc_8kb_4kb_">
 -		<require idref="lufa.bootloaders.cdc"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega8u2"/>
 -		<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="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.cdc" caption="CDC Bootloader">
 -		<info type="description" value="summary">
 -		CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant 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="BootloaderCDC.c"/>
 -		<build type="header-file" value="BootloaderCDC.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="BootloaderCDC.txt"/>
 -		<build type="distribute" subtype="user-file" value="LUFA CDC Bootloader.inf"/>
 -
 -		<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="CDC Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.128_4" force-caption="true" workspace-name="lufa_cdc_128kb_4kb_"> +		<require idref="lufa.bootloaders.cdc"/> +		<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="CDC Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.64_4" force-caption="true" workspace-name="lufa_cdc_64kb_4kb_"> +		<require idref="lufa.bootloaders.cdc"/> +		<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="CDC Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.32_4" force-caption="true" workspace-name="lufa_cdc_32kb_4kb_"> +		<require idref="lufa.bootloaders.cdc"/> +		<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="CDC Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.16_4" force-caption="true" workspace-name="lufa_cdc_16kb_4kb_"> +		<require idref="lufa.bootloaders.cdc"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega16u2"/> +		<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="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="CDC Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.cdc.avr8.8_4" force-caption="true" workspace-name="lufa_cdc_8kb_4kb_"> +		<require idref="lufa.bootloaders.cdc"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega8u2"/> +		<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="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.cdc" caption="CDC Bootloader"> +		<info type="description" value="summary"> +		CDC Class Bootloader, capable of reprogramming a device using avrdude or other AVR109 protocol compliant 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="BootloaderCDC.c"/> +		<build type="header-file" value="BootloaderCDC.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="BootloaderCDC.txt"/> +		<build type="distribute" subtype="user-file" value="LUFA CDC Bootloader.inf"/> + +		<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/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml index 6f3312b76..f56aba69f 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/DFU/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/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/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml index 9394b1353..c67b9419e 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/HID/asf.xml @@ -1,123 +1,123 @@ -<asf xmlversion="1.0">
 -	<project caption="HID Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.128_4" force-caption="true" workspace-name="lufa_hid_128kb_4kb_">
 -		<require idref="lufa.bootloaders.hid"/>
 -		<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"/>
 -	</project>
 -
 -	<project caption="HID Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.64_4" force-caption="true" workspace-name="lufa_hid_64kb_4kb_">
 -		<require idref="lufa.bootloaders.hid"/>
 -		<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"/>
 -	</project>
 -
 -	<project caption="HID Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.32_4" force-caption="true" workspace-name="lufa_hid_32kb_4kb_">
 -		<require idref="lufa.bootloaders.hid"/>
 -		<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"/>
 -	</project>
 -
 -	<project caption="HID Bootloader - 16KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.16_2" force-caption="true" workspace-name="lufa_hid_16kb_2kb_">
 -		<require idref="lufa.bootloaders.hid"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega16u2"/>
 -		<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="0x3800"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3800"/>
 -	</project>
 -
 -	<project caption="HID Bootloader - 8KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.8_2" force-caption="true" workspace-name="lufa_hid_8kb_2kb_">
 -		<require idref="lufa.bootloaders.hid"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega8u2"/>
 -		<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="0x1800"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1800"/>
 -	</project>
 -
 -	<module type="application" id="lufa.bootloaders.hid" caption="HID Bootloader">
 -		<info type="description" value="summary">
 -		HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility 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="BootloaderHID.c"/>
 -		<build type="header-file" value="BootloaderHID.h"/>
 -		<build type="c-source" value="Descriptors.c"/>
 -		<build type="header-file" value="Descriptors.h"/>
 -
 -		<build type="module-config" subtype="path" value="Config"/>
 -		<build type="header-file" value="Config/LUFAConfig.h"/>
 -
 -		<build type="distribute" subtype="user-file" value="doxyfile"/>
 -		<build type="distribute" subtype="user-file" value="BootloaderHID.txt"/>
 -		<build type="distribute" subtype="directory" value="HostLoaderApp"/>
 -		<build type="distribute" subtype="directory" value="HostLoaderApp_Python"/>
 -
 -		<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="HID Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.128_4" force-caption="true" workspace-name="lufa_hid_128kb_4kb_"> +		<require idref="lufa.bootloaders.hid"/> +		<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"/> +	</project> + +	<project caption="HID Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.64_4" force-caption="true" workspace-name="lufa_hid_64kb_4kb_"> +		<require idref="lufa.bootloaders.hid"/> +		<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"/> +	</project> + +	<project caption="HID Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.32_4" force-caption="true" workspace-name="lufa_hid_32kb_4kb_"> +		<require idref="lufa.bootloaders.hid"/> +		<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"/> +	</project> + +	<project caption="HID Bootloader - 16KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.16_2" force-caption="true" workspace-name="lufa_hid_16kb_2kb_"> +		<require idref="lufa.bootloaders.hid"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega16u2"/> +		<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="0x3800"/> +		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3800"/> +	</project> + +	<project caption="HID Bootloader - 8KB FLASH / 2KB Boot - AVR8 Architecture" id="lufa.bootloaders.hid.avr8.8_2" force-caption="true" workspace-name="lufa_hid_8kb_2kb_"> +		<require idref="lufa.bootloaders.hid"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega8u2"/> +		<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="0x1800"/> +		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1800"/> +	</project> + +	<module type="application" id="lufa.bootloaders.hid" caption="HID Bootloader"> +		<info type="description" value="summary"> +		HID Class Bootloader, capable of reprogramming a device via a custom cross-platform command line utility 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="BootloaderHID.c"/> +		<build type="header-file" value="BootloaderHID.h"/> +		<build type="c-source" value="Descriptors.c"/> +		<build type="header-file" value="Descriptors.h"/> + +		<build type="module-config" subtype="path" value="Config"/> +		<build type="header-file" value="Config/LUFAConfig.h"/> + +		<build type="distribute" subtype="user-file" value="doxyfile"/> +		<build type="distribute" subtype="user-file" value="BootloaderHID.txt"/> +		<build type="distribute" subtype="directory" value="HostLoaderApp"/> +		<build type="distribute" subtype="directory" value="HostLoaderApp_Python"/> + +		<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/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S index 6844d4b01..91fc94966 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/BootloaderAPITable.S @@ -1,102 +1,102 @@ -/*
 -             LUFA Library
 -     Copyright (C) Dean Camera, 2014.
 -
 -  dean [at] fourwalledcubicle [dot] com
 -           www.lufa-lib.org
 -*/
 -
 -/*
 -  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 -
 -  Permission to use, copy, modify, distribute, and sell this
 -  software and its documentation for any purpose is hereby granted
 -  without fee, provided that the above copyright notice appear in
 -  all copies and that both that the copyright notice and this
 -  permission notice and warranty disclaimer appear in supporting
 -  documentation, and that the name of the author not be used in
 -  advertising or publicity pertaining to distribution of the
 -  software without specific, written prior permission.
 -
 -  The author disclaims all warranties with regard to this
 -  software, including all implied warranties of merchantability
 -  and fitness.  In no event shall the author be liable for any
 -  special, indirect or consequential damages or any damages
 -  whatsoever resulting from loss of use, data or profits, whether
 -  in an action of contract, negligence or other tortious action,
 -  arising out of or in connection with the use or performance of
 -  this software.
 -*/
 -
 -#if AUX_BOOT_SECTION_SIZE > 0
 -#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation).
 -
 -; Trampoline to jump over the AUX bootloader section to the start of the bootloader,
 -; on devices where an AUX bootloader section is used.
 -.section .boot_aux_trampoline, "ax"
 -.global Boot_AUX_Trampoline
 -Boot_AUX_Trampoline:
 -	jmp BOOT_START_ADDR
 -#endif
 -
 -; Trampolines to actual API implementations if the target address is outside the
 -; range of a rjmp instruction (can happen with large bootloader sections)
 -.section .apitable_trampolines, "ax"
 -.global BootloaderAPI_Trampolines
 -BootloaderAPI_Trampolines:
 -
 -	BootloaderAPI_ErasePage_Trampoline:
 -		jmp BootloaderAPI_ErasePage
 -	BootloaderAPI_WritePage_Trampoline:
 -		jmp BootloaderAPI_WritePage
 -	BootloaderAPI_FillWord_Trampoline:
 -		jmp BootloaderAPI_FillWord
 -	BootloaderAPI_ReadSignature_Trampoline:
 -		jmp BootloaderAPI_ReadSignature
 -	BootloaderAPI_ReadFuse_Trampoline:
 -		jmp BootloaderAPI_ReadFuse
 -	BootloaderAPI_ReadLock_Trampoline:
 -		jmp BootloaderAPI_ReadLock
 -	BootloaderAPI_WriteLock_Trampoline:
 -		jmp BootloaderAPI_WriteLock
 -	BootloaderAPI_UNUSED1:
 -		ret
 -	BootloaderAPI_UNUSED2:
 -		ret
 -	BootloaderAPI_UNUSED3:
 -		ret
 -	BootloaderAPI_UNUSED4:
 -		ret
 -	BootloaderAPI_UNUSED5:
 -		ret
 -
 -
 -
 -; API function jump table
 -.section .apitable_jumptable, "ax"
 -.global BootloaderAPI_JumpTable
 -BootloaderAPI_JumpTable:
 -
 -	rjmp BootloaderAPI_ErasePage_Trampoline
 -	rjmp BootloaderAPI_WritePage_Trampoline
 -	rjmp BootloaderAPI_FillWord_Trampoline
 -	rjmp BootloaderAPI_ReadSignature_Trampoline
 -	rjmp BootloaderAPI_ReadFuse_Trampoline
 -	rjmp BootloaderAPI_ReadLock_Trampoline
 -	rjmp BootloaderAPI_WriteLock_Trampoline
 -	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
 -	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
 -	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
 -	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
 -	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
 -
 -
 -
 -; Bootloader table signatures and information
 -.section .apitable_signatures, "ax"
 -.global BootloaderAPI_Signatures
 -BootloaderAPI_Signatures:
 -
 -	.long BOOT_START_ADDR ; Start address of the bootloader
 -	.word 0xDF30 ; Signature for the MS class bootloader, V1
 -	.word 0xDCFB ; Signature for a LUFA class bootloader
 +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +#if AUX_BOOT_SECTION_SIZE > 0 +#warning Using a AUX bootloader section in addition to the defined bootloader space (see documentation). + +; Trampoline to jump over the AUX bootloader section to the start of the bootloader, +; on devices where an AUX bootloader section is used. +.section .boot_aux_trampoline, "ax" +.global Boot_AUX_Trampoline +Boot_AUX_Trampoline: +	jmp BOOT_START_ADDR +#endif + +; Trampolines to actual API implementations if the target address is outside the +; range of a rjmp instruction (can happen with large bootloader sections) +.section .apitable_trampolines, "ax" +.global BootloaderAPI_Trampolines +BootloaderAPI_Trampolines: + +	BootloaderAPI_ErasePage_Trampoline: +		jmp BootloaderAPI_ErasePage +	BootloaderAPI_WritePage_Trampoline: +		jmp BootloaderAPI_WritePage +	BootloaderAPI_FillWord_Trampoline: +		jmp BootloaderAPI_FillWord +	BootloaderAPI_ReadSignature_Trampoline: +		jmp BootloaderAPI_ReadSignature +	BootloaderAPI_ReadFuse_Trampoline: +		jmp BootloaderAPI_ReadFuse +	BootloaderAPI_ReadLock_Trampoline: +		jmp BootloaderAPI_ReadLock +	BootloaderAPI_WriteLock_Trampoline: +		jmp BootloaderAPI_WriteLock +	BootloaderAPI_UNUSED1: +		ret +	BootloaderAPI_UNUSED2: +		ret +	BootloaderAPI_UNUSED3: +		ret +	BootloaderAPI_UNUSED4: +		ret +	BootloaderAPI_UNUSED5: +		ret + + + +; API function jump table +.section .apitable_jumptable, "ax" +.global BootloaderAPI_JumpTable +BootloaderAPI_JumpTable: + +	rjmp BootloaderAPI_ErasePage_Trampoline +	rjmp BootloaderAPI_WritePage_Trampoline +	rjmp BootloaderAPI_FillWord_Trampoline +	rjmp BootloaderAPI_ReadSignature_Trampoline +	rjmp BootloaderAPI_ReadFuse_Trampoline +	rjmp BootloaderAPI_ReadLock_Trampoline +	rjmp BootloaderAPI_WriteLock_Trampoline +	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 +	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 +	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 +	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 +	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 + + + +; Bootloader table signatures and information +.section .apitable_signatures, "ax" +.global BootloaderAPI_Signatures +BootloaderAPI_Signatures: + +	.long BOOT_START_ADDR ; Start address of the bootloader +	.word 0xDF30 ; Signature for the MS class bootloader, V1 +	.word 0xDCFB ; Signature for a LUFA class bootloader diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml index f1d550d1e..700ffa26f 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/asf.xml @@ -1,156 +1,156 @@ -<asf xmlversion="1.0">
 -	<project caption="Mass Storage Bootloader - 128KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.128_8" force-caption="true" workspace-name="lufa_ms_128kb_8kb_">
 -		<require idref="lufa.bootloaders.mass_storage"/>
 -		<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="0x1E000"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1E000"/>
 -
 -		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
 -
 -		<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="Mass Storage Bootloader - 64KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.64_8" force-caption="true" workspace-name="lufa_ms_64kb_8kb_">
 -		<require idref="lufa.bootloaders.mass_storage"/>
 -		<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="0xE000"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.text=0xE000"/>
 -
 -		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/>
 -
 -		<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="Mass Storage Bootloader - 32KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.32_4" force-caption="true" workspace-name="lufa_ms_32kb_4kb_">
 -		<require idref="lufa.bootloaders.mass_storage"/>
 -		<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="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x6810"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x6800"/>
 -		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
 -
 -		<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="Mass Storage Bootloader - 16KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.16_4" force-caption="true" workspace-name="lufa_ms_16kb_4kb_">
 -		<require idref="lufa.bootloaders.mass_storage"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega16u2"/>
 -		<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="0x3000"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/>
 -
 -		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x2810"/>
 -		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x2800"/>
 -		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/>
 -
 -		<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>
 -
 -	<module type="application" id="lufa.bootloaders.mass_storage" caption="Mass Storage Bootloader">
 -		<info type="description" value="summary">
 -		Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates 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="BootloaderMassStorage.c"/>
 -		<build type="header-file" value="BootloaderMassStorage.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="include-path" value="Lib"/>
 -		<build type="header-file" value="Lib/VirtualFAT.h"/>
 -		<build type="c-source" value="Lib/VirtualFAT.c"/>
 -		<build type="header-file" value="Lib/SCSI.h"/>
 -		<build type="c-source" value="Lib/SCSI.c"/>
 -
 -		<build type="distribute" subtype="user-file" value="doxyfile"/>
 -		<build type="distribute" subtype="user-file" value="BootloaderMassStorage.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="Mass Storage Bootloader - 128KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.128_8" force-caption="true" workspace-name="lufa_ms_128kb_8kb_"> +		<require idref="lufa.bootloaders.mass_storage"/> +		<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="0x1E000"/> +		<build type="linker-config" subtype="flags" value="--section-start=.text=0x1E000"/> + +		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/> + +		<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="Mass Storage Bootloader - 64KB FLASH / 8KB Boot - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.64_8" force-caption="true" workspace-name="lufa_ms_64kb_8kb_"> +		<require idref="lufa.bootloaders.mass_storage"/> +		<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="0xE000"/> +		<build type="linker-config" subtype="flags" value="--section-start=.text=0xE000"/> + +		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="0"/> + +		<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="Mass Storage Bootloader - 32KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.32_4" force-caption="true" workspace-name="lufa_ms_32kb_4kb_"> +		<require idref="lufa.bootloaders.mass_storage"/> +		<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="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/> +		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x6810"/> +		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x6800"/> +		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/> + +		<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="Mass Storage Bootloader - 16KB FLASH / 4KB Boot (2KB AUX) - AVR8 Architecture" id="lufa.bootloaders.mass_storage.avr8.16_4" force-caption="true" workspace-name="lufa_ms_16kb_4kb_"> +		<require idref="lufa.bootloaders.mass_storage"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega16u2"/> +		<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="0x3000"/> +		<build type="linker-config" subtype="flags" value="--section-start=.text=0x3000"/> + +		<build type="define" name="AUX_BOOT_SECTION_SIZE" value="2048"/> +		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux=0x2810"/> +		<build type="linker-config" subtype="flags" value="--section-start=.boot_aux_trampoline=0x2800"/> +		<build type="linker-config" subtype="flags" value="--undefined=Boot_AUX_Trampoline"/> + +		<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> + +	<module type="application" id="lufa.bootloaders.mass_storage" caption="Mass Storage Bootloader"> +		<info type="description" value="summary"> +		Mass Storage Class Bootloader, capable of reprogramming a device via binary BIN files copied to the virtual FAT12 file-system it creates 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="BootloaderMassStorage.c"/> +		<build type="header-file" value="BootloaderMassStorage.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="include-path" value="Lib"/> +		<build type="header-file" value="Lib/VirtualFAT.h"/> +		<build type="c-source" value="Lib/VirtualFAT.c"/> +		<build type="header-file" value="Lib/SCSI.h"/> +		<build type="c-source" value="Lib/SCSI.c"/> + +		<build type="distribute" subtype="user-file" value="doxyfile"/> +		<build type="distribute" subtype="user-file" value="BootloaderMassStorage.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/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile index 91bb4038e..a0edb2c4f 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/MassStorage/makefile @@ -1,68 +1,68 @@ -#
 -#             LUFA Library
 -#     Copyright (C) Dean Camera, 2014.
 -#
 -#  dean [at] fourwalledcubicle [dot] com
 -#           www.lufa-lib.org
 -#
 -# --------------------------------------
 -#         LUFA Project Makefile.
 -# --------------------------------------
 -
 -# Run "make help" for target help.
 -
 -MCU          = at90usb1287
 -ARCH         = AVR8
 -BOARD        = USBKEY
 -F_CPU        = 8000000
 -F_USB        = $(F_CPU)
 -OPTIMIZATION = s
 -TARGET       = BootloaderMassStorage
 -SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
 -LUFA_PATH    = ../../LUFA
 -CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
 -LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
 -
 -# 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
 -
 -# Bootloader address calculation formulas
 -# Do not modify these macros, but rather modify the dependent values above.
 -CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
 -BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
 -BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
 -
 -# Bootloader linker section flags for relocating the API table sections to
 -# known FLASH addresses - these should not normally be user-edited.
 -BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
 -BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
 -BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
 -BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
 -
 -# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the
 -# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum
 -# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices.
 -ifeq ($(BOOT_SECTION_SIZE_KB),8)
 -  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE=0
 -else
 -  AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB))
 -
 -  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)'
 -  LD_FLAGS           += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16))
 -  LD_FLAGS           += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024)
 -endif
 -
 -# Default target
 -all:
 -
 -# Include LUFA build script makefiles
 -include $(LUFA_PATH)/Build/lufa_core.mk
 -include $(LUFA_PATH)/Build/lufa_sources.mk
 -include $(LUFA_PATH)/Build/lufa_build.mk
 -include $(LUFA_PATH)/Build/lufa_cppcheck.mk
 -include $(LUFA_PATH)/Build/lufa_doxygen.mk
 -include $(LUFA_PATH)/Build/lufa_avrdude.mk
 -include $(LUFA_PATH)/Build/lufa_atprogram.mk
 +# +#             LUFA Library +#     Copyright (C) Dean Camera, 2014. +# +#  dean [at] fourwalledcubicle [dot] com +#           www.lufa-lib.org +# +# -------------------------------------- +#         LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU          = at90usb1287 +ARCH         = AVR8 +BOARD        = USBKEY +F_CPU        = 8000000 +F_USB        = $(F_CPU) +OPTIMIZATION = s +TARGET       = BootloaderMassStorage +SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S Lib/SCSI.c Lib/VirtualFAT.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) +LUFA_PATH    = ../../LUFA +CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) +LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) + +# 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 + +# Bootloader address calculation formulas +# Do not modify these macros, but rather modify the dependent values above. +CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) ) +BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) +BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) + +# Bootloader linker section flags for relocating the API table sections to +# known FLASH addresses - these should not normally be user-edited. +BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) +BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) +BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32) +BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8) + +# Check if the bootloader needs an AUX section, located before the real bootloader section to store some of the +# bootloader code. This is required for 32KB and smaller devices, where the actual bootloader is 6KB but the maximum +# bootloader section size is 4KB. The actual usable application space will be reduced by 6KB for these devices. +ifeq ($(BOOT_SECTION_SIZE_KB),8) +  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE=0 +else +  AUX_BOOT_SECTION_SIZE_KB = (6 - $(BOOT_SECTION_SIZE_KB)) + +  CC_FLAGS           += -DAUX_BOOT_SECTION_SIZE='($(AUX_BOOT_SECTION_SIZE_KB) * 1024)' +  LD_FLAGS           += -Wl,--section-start=.boot_aux=$(call BOOT_SEC_OFFSET, (($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024 - 16)) +  LD_FLAGS           += $(call BOOT_SECTION_LD_FLAG, .boot_aux_trampoline, Boot_AUX_Trampoline, ($(BOOT_SECTION_SIZE_KB) + $(AUX_BOOT_SECTION_SIZE_KB)) * 1024) +endif + +# Default target +all: + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_sources.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_avrdude.mk +include $(LUFA_PATH)/Build/lufa_atprogram.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S index ec499b74e..88c51da82 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/BootloaderAPITable.S @@ -1,91 +1,91 @@ -/*
 -             LUFA Library
 -     Copyright (C) Dean Camera, 2014.
 -
 -  dean [at] fourwalledcubicle [dot] com
 -           www.lufa-lib.org
 -*/
 -
 -/*
 -  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 -
 -  Permission to use, copy, modify, distribute, and sell this
 -  software and its documentation for any purpose is hereby granted
 -  without fee, provided that the above copyright notice appear in
 -  all copies and that both that the copyright notice and this
 -  permission notice and warranty disclaimer appear in supporting
 -  documentation, and that the name of the author not be used in
 -  advertising or publicity pertaining to distribution of the
 -  software without specific, written prior permission.
 -
 -  The author disclaims all warranties with regard to this
 -  software, including all implied warranties of merchantability
 -  and fitness.  In no event shall the author be liable for any
 -  special, indirect or consequential damages or any damages
 -  whatsoever resulting from loss of use, data or profits, whether
 -  in an action of contract, negligence or other tortious action,
 -  arising out of or in connection with the use or performance of
 -  this software.
 -*/
 -
 -; Trampolines to actual API implementations if the target address is outside the
 -; range of a rjmp instruction (can happen with large bootloader sections)
 -.section .apitable_trampolines, "ax"
 -.global BootloaderAPI_Trampolines
 -BootloaderAPI_Trampolines:
 -
 -	BootloaderAPI_ErasePage_Trampoline:
 -		jmp BootloaderAPI_ErasePage
 -	BootloaderAPI_WritePage_Trampoline:
 -		jmp BootloaderAPI_WritePage
 -	BootloaderAPI_FillWord_Trampoline:
 -		jmp BootloaderAPI_FillWord
 -	BootloaderAPI_ReadSignature_Trampoline:
 -		jmp BootloaderAPI_ReadSignature
 -	BootloaderAPI_ReadFuse_Trampoline:
 -		jmp BootloaderAPI_ReadFuse
 -	BootloaderAPI_ReadLock_Trampoline:
 -		jmp BootloaderAPI_ReadLock
 -	BootloaderAPI_WriteLock_Trampoline:
 -		jmp BootloaderAPI_WriteLock
 -	BootloaderAPI_UNUSED1:
 -		ret
 -	BootloaderAPI_UNUSED2:
 -		ret
 -	BootloaderAPI_UNUSED3:
 -		ret
 -	BootloaderAPI_UNUSED4:
 -		ret
 -	BootloaderAPI_UNUSED5:
 -		ret
 -
 -
 -
 -; API function jump table
 -.section .apitable_jumptable, "ax"
 -.global BootloaderAPI_JumpTable
 -BootloaderAPI_JumpTable:
 -
 -	rjmp BootloaderAPI_ErasePage_Trampoline
 -	rjmp BootloaderAPI_WritePage_Trampoline
 -	rjmp BootloaderAPI_FillWord_Trampoline
 -	rjmp BootloaderAPI_ReadSignature_Trampoline
 -	rjmp BootloaderAPI_ReadFuse_Trampoline
 -	rjmp BootloaderAPI_ReadLock_Trampoline
 -	rjmp BootloaderAPI_WriteLock_Trampoline
 -	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1
 -	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2
 -	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3
 -	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4
 -	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5
 -
 -
 -
 -; Bootloader table signatures and information
 -.section .apitable_signatures, "ax"
 -.global BootloaderAPI_Signatures
 -BootloaderAPI_Signatures:
 -
 -	.long BOOT_START_ADDR ; Start address of the bootloader
 -	.word 0xDF20 ; Signature for the Printer class bootloader
 -	.word 0xDCFB ; Signature for a LUFA class bootloader
 +/* +             LUFA Library +     Copyright (C) Dean Camera, 2014. + +  dean [at] fourwalledcubicle [dot] com +           www.lufa-lib.org +*/ + +/* +  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com) + +  Permission to use, copy, modify, distribute, and sell this +  software and its documentation for any purpose is hereby granted +  without fee, provided that the above copyright notice appear in +  all copies and that both that the copyright notice and this +  permission notice and warranty disclaimer appear in supporting +  documentation, and that the name of the author not be used in +  advertising or publicity pertaining to distribution of the +  software without specific, written prior permission. + +  The author disclaims all warranties with regard to this +  software, including all implied warranties of merchantability +  and fitness.  In no event shall the author be liable for any +  special, indirect or consequential damages or any damages +  whatsoever resulting from loss of use, data or profits, whether +  in an action of contract, negligence or other tortious action, +  arising out of or in connection with the use or performance of +  this software. +*/ + +; Trampolines to actual API implementations if the target address is outside the +; range of a rjmp instruction (can happen with large bootloader sections) +.section .apitable_trampolines, "ax" +.global BootloaderAPI_Trampolines +BootloaderAPI_Trampolines: + +	BootloaderAPI_ErasePage_Trampoline: +		jmp BootloaderAPI_ErasePage +	BootloaderAPI_WritePage_Trampoline: +		jmp BootloaderAPI_WritePage +	BootloaderAPI_FillWord_Trampoline: +		jmp BootloaderAPI_FillWord +	BootloaderAPI_ReadSignature_Trampoline: +		jmp BootloaderAPI_ReadSignature +	BootloaderAPI_ReadFuse_Trampoline: +		jmp BootloaderAPI_ReadFuse +	BootloaderAPI_ReadLock_Trampoline: +		jmp BootloaderAPI_ReadLock +	BootloaderAPI_WriteLock_Trampoline: +		jmp BootloaderAPI_WriteLock +	BootloaderAPI_UNUSED1: +		ret +	BootloaderAPI_UNUSED2: +		ret +	BootloaderAPI_UNUSED3: +		ret +	BootloaderAPI_UNUSED4: +		ret +	BootloaderAPI_UNUSED5: +		ret + + + +; API function jump table +.section .apitable_jumptable, "ax" +.global BootloaderAPI_JumpTable +BootloaderAPI_JumpTable: + +	rjmp BootloaderAPI_ErasePage_Trampoline +	rjmp BootloaderAPI_WritePage_Trampoline +	rjmp BootloaderAPI_FillWord_Trampoline +	rjmp BootloaderAPI_ReadSignature_Trampoline +	rjmp BootloaderAPI_ReadFuse_Trampoline +	rjmp BootloaderAPI_ReadLock_Trampoline +	rjmp BootloaderAPI_WriteLock_Trampoline +	rjmp BootloaderAPI_UNUSED1 ; UNUSED ENTRY 1 +	rjmp BootloaderAPI_UNUSED2 ; UNUSED ENTRY 2 +	rjmp BootloaderAPI_UNUSED3 ; UNUSED ENTRY 3 +	rjmp BootloaderAPI_UNUSED4 ; UNUSED ENTRY 4 +	rjmp BootloaderAPI_UNUSED5 ; UNUSED ENTRY 5 + + + +; Bootloader table signatures and information +.section .apitable_signatures, "ax" +.global BootloaderAPI_Signatures +BootloaderAPI_Signatures: + +	.long BOOT_START_ADDR ; Start address of the bootloader +	.word 0xDF20 ; Signature for the Printer class bootloader +	.word 0xDCFB ; Signature for a LUFA class bootloader diff --git a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml index 86a56911e..b5c0c6b3a 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/asf.xml @@ -1,159 +1,159 @@ -<asf xmlversion="1.0">
 -	<project caption="Printer Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.128_4" force-caption="true" workspace-name="lufa_printer_128kb_4kb_">
 -		<require idref="lufa.bootloaders.printer"/>
 -		<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="Printer Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.64_4" force-caption="true" workspace-name="lufa_printer_64kb_4kb_">
 -		<require idref="lufa.bootloaders.printer"/>
 -		<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="Printer Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.32_4" force-caption="true" workspace-name="lufa_printer_32kb_4kb_">
 -		<require idref="lufa.bootloaders.printer"/>
 -		<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="Printer Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.16_4" force-caption="true" workspace-name="lufa_printer_16kb_4kb_">
 -		<require idref="lufa.bootloaders.printer"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega16u2"/>
 -		<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="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="Printer Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.8_4" force-caption="true" workspace-name="lufa_printer_8kb_4kb_">
 -		<require idref="lufa.bootloaders.printer"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8"/>
 -
 -		<device-support value="atmega8u2"/>
 -		<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="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.printer" caption="Printer Bootloader">
 -		<info type="description" value="summary">
 -		Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates 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="BootloaderPrinter.c"/>
 -		<build type="header-file" value="BootloaderPrinter.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="distribute" subtype="user-file" value="doxyfile"/>
 -		<build type="distribute" subtype="user-file" value="BootloaderPrinter.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="Printer Bootloader - 128KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.128_4" force-caption="true" workspace-name="lufa_printer_128kb_4kb_"> +		<require idref="lufa.bootloaders.printer"/> +		<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="Printer Bootloader - 64KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.64_4" force-caption="true" workspace-name="lufa_printer_64kb_4kb_"> +		<require idref="lufa.bootloaders.printer"/> +		<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="Printer Bootloader - 32KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.32_4" force-caption="true" workspace-name="lufa_printer_32kb_4kb_"> +		<require idref="lufa.bootloaders.printer"/> +		<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="Printer Bootloader - 16KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.16_4" force-caption="true" workspace-name="lufa_printer_16kb_4kb_"> +		<require idref="lufa.bootloaders.printer"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega16u2"/> +		<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="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="Printer Bootloader - 8KB FLASH / 4KB Boot - AVR8 Architecture" id="lufa.bootloaders.printer.avr8.8_4" force-caption="true" workspace-name="lufa_printer_8kb_4kb_"> +		<require idref="lufa.bootloaders.printer"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8"/> + +		<device-support value="atmega8u2"/> +		<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="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.printer" caption="Printer Bootloader"> +		<info type="description" value="summary"> +		Printer Class Bootloader, capable of reprogramming a device by "printing" new HEX files to the virtual Plain-Text printer it creates 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="BootloaderPrinter.c"/> +		<build type="header-file" value="BootloaderPrinter.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="distribute" subtype="user-file" value="doxyfile"/> +		<build type="distribute" subtype="user-file" value="BootloaderPrinter.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/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile index 0716c3bbe..0db035de3 100644 --- a/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/Bootloaders/Printer/makefile @@ -1,55 +1,55 @@ -#
 -#             LUFA Library
 -#     Copyright (C) Dean Camera, 2014.
 -#
 -#  dean [at] fourwalledcubicle [dot] com
 -#           www.lufa-lib.org
 -#
 -# --------------------------------------
 -#         LUFA Project Makefile.
 -# --------------------------------------
 -
 -# Run "make help" for target help.
 -
 -MCU          = at90usb1287
 -ARCH         = AVR8
 -BOARD        = USBKEY
 -F_CPU        = 8000000
 -F_USB        = $(F_CPU)
 -OPTIMIZATION = s
 -TARGET       = BootloaderPrinter
 -SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
 -LUFA_PATH    = ../../LUFA
 -CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET)
 -LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS)
 -
 -# 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
 -
 -# Bootloader address calculation formulas
 -# Do not modify these macros, but rather modify the dependent values above.
 -CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) )
 -BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 )
 -BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) )
 -
 -# Bootloader linker section flags for relocating the API table sections to
 -# known FLASH addresses - these should not normally be user-edited.
 -BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2))
 -BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96)
 -BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32)
 -BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8)
 -
 -# Default target
 -all:
 -
 -# Include LUFA build script makefiles
 -include $(LUFA_PATH)/Build/lufa_core.mk
 -include $(LUFA_PATH)/Build/lufa_sources.mk
 -include $(LUFA_PATH)/Build/lufa_build.mk
 -include $(LUFA_PATH)/Build/lufa_cppcheck.mk
 -include $(LUFA_PATH)/Build/lufa_doxygen.mk
 -include $(LUFA_PATH)/Build/lufa_avrdude.mk
 -include $(LUFA_PATH)/Build/lufa_atprogram.mk
 +# +#             LUFA Library +#     Copyright (C) Dean Camera, 2014. +# +#  dean [at] fourwalledcubicle [dot] com +#           www.lufa-lib.org +# +# -------------------------------------- +#         LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU          = at90usb1287 +ARCH         = AVR8 +BOARD        = USBKEY +F_CPU        = 8000000 +F_USB        = $(F_CPU) +OPTIMIZATION = s +TARGET       = BootloaderPrinter +SRC          = $(TARGET).c Descriptors.c BootloaderAPI.c BootloaderAPITable.S $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS) +LUFA_PATH    = ../../LUFA +CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/ -DBOOT_START_ADDR=$(BOOT_START_OFFSET) +LD_FLAGS     = -Wl,--section-start=.text=$(BOOT_START_OFFSET) $(BOOT_API_LD_FLAGS) + +# 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 + +# Bootloader address calculation formulas +# Do not modify these macros, but rather modify the dependent values above. +CALC_ADDRESS_IN_HEX   = $(shell printf "0x%X" $$(( $(1) )) ) +BOOT_START_OFFSET     = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) - $(BOOT_SECTION_SIZE_KB)) * 1024 ) +BOOT_SEC_OFFSET       = $(call CALC_ADDRESS_IN_HEX, ($(FLASH_SIZE_KB) * 1024) - ($(strip $(1))) ) + +# Bootloader linker section flags for relocating the API table sections to +# known FLASH addresses - these should not normally be user-edited. +BOOT_SECTION_LD_FLAG  = -Wl,--section-start=$(strip $(1))=$(call BOOT_SEC_OFFSET, $(3)) -Wl,--undefined=$(strip $(2)) +BOOT_API_LD_FLAGS     = $(call BOOT_SECTION_LD_FLAG, .apitable_trampolines, BootloaderAPI_Trampolines, 96) +BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_jumptable,   BootloaderAPI_JumpTable,   32) +BOOT_API_LD_FLAGS    += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures,  BootloaderAPI_Signatures,  8) + +# Default target +all: + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_sources.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_avrdude.mk +include $(LUFA_PATH)/Build/lufa_atprogram.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile b/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile index 9fd188c93..e839ba6b1 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/Build/HID_EEPROM_Loader/makefile @@ -1,42 +1,42 @@ -#
 -#             LUFA Library
 -#     Copyright (C) Dean Camera, 2014.
 -#
 -#  dean [at] fourwalledcubicle [dot] com
 -#           www.lufa-lib.org
 -#
 -# --------------------------------------
 -#         LUFA Project Makefile.
 -# --------------------------------------
 -
 -# Run "make help" for target help.
 -
 -MCU          = at90usb1287
 -ARCH         = AVR8
 -F_CPU        = 1000000
 -F_USB        = $(F_CPU)
 -OPTIMIZATION = s
 -TARGET       = HID_EEPROM_Loader
 -SRC          = $(TARGET).c
 -LUFA_PATH    = ../../../LUFA
 -CC_FLAGS     =
 -LD_FLAGS     =
 -OBJECT_FILES = InputEEData.o
 -
 -# Default target
 -all:
 -
 -# Determine the AVR sub-architecture of the build main application object file
 -FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1)
 -
 -# Create a linkable object file with the input binary EEPROM data stored in the FLASH section
 -InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST)
 -	@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\"
 -	avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@
 -
 -# Include LUFA build script makefiles
 -include $(LUFA_PATH)/Build/lufa_core.mk
 -include $(LUFA_PATH)/Build/lufa_build.mk
 -include $(LUFA_PATH)/Build/lufa_cppcheck.mk
 -include $(LUFA_PATH)/Build/lufa_doxygen.mk
 -include $(LUFA_PATH)/Build/lufa_hid.mk
 +# +#             LUFA Library +#     Copyright (C) Dean Camera, 2014. +# +#  dean [at] fourwalledcubicle [dot] com +#           www.lufa-lib.org +# +# -------------------------------------- +#         LUFA Project Makefile. +# -------------------------------------- + +# Run "make help" for target help. + +MCU          = at90usb1287 +ARCH         = AVR8 +F_CPU        = 1000000 +F_USB        = $(F_CPU) +OPTIMIZATION = s +TARGET       = HID_EEPROM_Loader +SRC          = $(TARGET).c +LUFA_PATH    = ../../../LUFA +CC_FLAGS     = +LD_FLAGS     = +OBJECT_FILES = InputEEData.o + +# Default target +all: + +# Determine the AVR sub-architecture of the build main application object file +FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) + +# Create a linkable object file with the input binary EEPROM data stored in the FLASH section +InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) +	@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" +	avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ + +# Include LUFA build script makefiles +include $(LUFA_PATH)/Build/lufa_core.mk +include $(LUFA_PATH)/Build/lufa_build.mk +include $(LUFA_PATH)/Build/lufa_cppcheck.mk +include $(LUFA_PATH)/Build/lufa_doxygen.mk +include $(LUFA_PATH)/Build/lufa_hid.mk diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml index fd65db283..e952714e1 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/DeviceTemplate/asf.xml @@ -1,55 +1,55 @@ -<asf xmlversion="1.0">
 -	<project caption="USB Device Template" id="lufa.templates.device.project.avr8">
 -		<require idref="lufa.templates.device"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8_template"/>
 -
 -		<device-support value="at90usb1287"/>
 -		<config name="lufa.drivers.board.name" value="usbkey"/>
 -
 -		<build type="define" name="F_CPU" value="8000000UL"/>
 -		<build type="define" name="F_USB" value="8000000UL"/>
 -	</project>
 -
 -	<project caption="USB Device Template" id="lufa.templates.device.project.xmega">
 -		<require idref="lufa.templates.device"/>
 -		<require idref="lufa.boards.dummy.xmega"/>
 -		<generator value="as5_8_template"/>
 -
 -		<device-support value="atxmega256a3bu"/>
 -		<config name="lufa.drivers.board.name" value="a3bu_xplained"/>
 -
 -		<build type="define" name="F_CPU" value="32000000UL"/>
 -		<build type="define" name="F_USB" value="48000000UL"/>
 -	</project>
 -
 -	<module type="application" id="lufa.templates.device" caption="USB Device Template">
 -		<info type="description" value="summary">
 -		Template for a LUFA USB device mode application.
 -		</info>
 -
 - 		<info type="gui-flag" value="move-to-root"/>
 -
 -		<info type="keyword" value="Technology">
 -			<keyword value="USB Device"/>
 -			<keyword value="Template Projects"/>
 -		</info>
 -
 -		<device-support-alias value="lufa_avr8"/>
 -		<device-support-alias value="lufa_xmega"/>
 -		<device-support-alias value="lufa_uc3"/>
 -
 -		<build type="c-source" value="DeviceApplication.c"/>
 -		<build type="c-source" value="Descriptors.c"/>
 -		<build type="header-file" value="DeviceApplication.h"/>
 -		<build type="header-file" value="Descriptors.h"/>
 -
 -		<build type="module-config" subtype="path" value=".."/>
 -		<build type="header-file" value="../LUFAConfig.h"/>
 -
 -		<require idref="lufa.common"/>
 -		<require idref="lufa.platform"/>
 -		<require idref="lufa.drivers.usb"/>
 -		<require idref="lufa.drivers.board"/>
 -	</module>
 -</asf>
 +<asf xmlversion="1.0"> +	<project caption="USB Device Template" id="lufa.templates.device.project.avr8"> +		<require idref="lufa.templates.device"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8_template"/> + +		<device-support value="at90usb1287"/> +		<config name="lufa.drivers.board.name" value="usbkey"/> + +		<build type="define" name="F_CPU" value="8000000UL"/> +		<build type="define" name="F_USB" value="8000000UL"/> +	</project> + +	<project caption="USB Device Template" id="lufa.templates.device.project.xmega"> +		<require idref="lufa.templates.device"/> +		<require idref="lufa.boards.dummy.xmega"/> +		<generator value="as5_8_template"/> + +		<device-support value="atxmega256a3bu"/> +		<config name="lufa.drivers.board.name" value="a3bu_xplained"/> + +		<build type="define" name="F_CPU" value="32000000UL"/> +		<build type="define" name="F_USB" value="48000000UL"/> +	</project> + +	<module type="application" id="lufa.templates.device" caption="USB Device Template"> +		<info type="description" value="summary"> +		Template for a LUFA USB device mode application. +		</info> + + 		<info type="gui-flag" value="move-to-root"/> + +		<info type="keyword" value="Technology"> +			<keyword value="USB Device"/> +			<keyword value="Template Projects"/> +		</info> + +		<device-support-alias value="lufa_avr8"/> +		<device-support-alias value="lufa_xmega"/> +		<device-support-alias value="lufa_uc3"/> + +		<build type="c-source" value="DeviceApplication.c"/> +		<build type="c-source" value="Descriptors.c"/> +		<build type="header-file" value="DeviceApplication.h"/> +		<build type="header-file" value="Descriptors.h"/> + +		<build type="module-config" subtype="path" value=".."/> +		<build type="header-file" value="../LUFAConfig.h"/> + +		<require idref="lufa.common"/> +		<require idref="lufa.platform"/> +		<require idref="lufa.drivers.usb"/> +		<require idref="lufa.drivers.board"/> +	</module> +</asf> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml index c1996ec71..c3860c056 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/CodeTemplates/HostTemplate/asf.xml @@ -1,41 +1,41 @@ -<asf xmlversion="1.0">
 -	<project caption="USB Host Template" id="lufa.templates.host.project">
 -		<require idref="lufa.templates.host"/>
 -		<require idref="lufa.boards.dummy.avr8"/>
 -		<generator value="as5_8_template"/>
 -
 -		<device-support value="at90usb1287"/>
 -		<config name="lufa.drivers.board.name" value="usbkey"/>
 -
 -		<build type="define" name="F_CPU" value="8000000UL"/>
 -		<build type="define" name="F_USB" value="8000000UL"/>
 -	</project>
 -
 -	<module type="application" id="lufa.templates.host" caption="USB Host Template">
 -		<info type="description" value="summary">
 -		Template for a LUFA USB host mode application.
 -		</info>
 -
 - 		<info type="gui-flag" value="move-to-root"/>
 -
 -		<info type="keyword" value="Technology">
 -			<keyword value="USB Host"/>
 -			<keyword value="Template Projects"/>
 -		</info>
 -
 -		<device-support-alias value="lufa_avr8"/>
 -		<device-support-alias value="lufa_xmega"/>
 -		<device-support-alias value="lufa_uc3"/>
 -
 -		<build type="c-source" value="HostApplication.c"/>
 -		<build type="header-file" value="HostApplication.h"/>
 -
 -		<build type="module-config" subtype="path" value=".."/>
 -		<build type="header-file" value="../LUFAConfig.h"/>
 -
 -		<require idref="lufa.common"/>
 -		<require idref="lufa.platform"/>
 -		<require idref="lufa.drivers.usb"/>
 -		<require idref="lufa.drivers.board"/>
 -	</module>
 -</asf>
 +<asf xmlversion="1.0"> +	<project caption="USB Host Template" id="lufa.templates.host.project"> +		<require idref="lufa.templates.host"/> +		<require idref="lufa.boards.dummy.avr8"/> +		<generator value="as5_8_template"/> + +		<device-support value="at90usb1287"/> +		<config name="lufa.drivers.board.name" value="usbkey"/> + +		<build type="define" name="F_CPU" value="8000000UL"/> +		<build type="define" name="F_USB" value="8000000UL"/> +	</project> + +	<module type="application" id="lufa.templates.host" caption="USB Host Template"> +		<info type="description" value="summary"> +		Template for a LUFA USB host mode application. +		</info> + + 		<info type="gui-flag" value="move-to-root"/> + +		<info type="keyword" value="Technology"> +			<keyword value="USB Host"/> +			<keyword value="Template Projects"/> +		</info> + +		<device-support-alias value="lufa_avr8"/> +		<device-support-alias value="lufa_xmega"/> +		<device-support-alias value="lufa_uc3"/> + +		<build type="c-source" value="HostApplication.c"/> +		<build type="header-file" value="HostApplication.h"/> + +		<build type="module-config" subtype="path" value=".."/> +		<build type="header-file" value="../LUFAConfig.h"/> + +		<require idref="lufa.common"/> +		<require idref="lufa.platform"/> +		<require idref="lufa.drivers.usb"/> +		<require idref="lufa.drivers.board"/> +	</module> +</asf> diff --git a/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt b/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt index 7ddfa1be3..0ae1dd678 100644 --- a/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt +++ b/tmk_core/protocol/lufa/LUFA-git/LUFA/DoxygenPages/BuildSystem.txt @@ -1,975 +1,975 @@ -/** \file
 - *
 - *  This file contains special DoxyGen information for the generation of the main page and other special
 - *  documentation pages. It is not a project source file.
 - */
 -
 -/** \page Page_BuildSystem The LUFA Build System
 - *
 - *  \section Sec_BuildSystem_Overview Overview of the LUFA Build System
 - *  The LUFA build system is an attempt at making a set of re-usable, modular build make files which
 - *  can be referenced in a LUFA powered project, to minimize the amount of code required in an
 - *  application makefile. The system is written in GNU Make, and each module is independent of
 - *  one-another.
 - *
 - *  For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA
 - *  build system, see \ref Sec_CompilingApps_Prerequisites.
 - *
 - *  To use a LUFA build system module, simply add an include to your project makefile. All user projects
 - *  should at a minimum include \ref Page_BuildModule_CORE for base functionality:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_core.mk
 - *  \endcode
 - *
 - *  Once included in your project makefile, the associated build module targets will be added to your
 - *  project's build makefile targets automatically. To call a build target, run <tt>make {TARGET_NAME}</tt>
 - *  from the command line, substituting in the appropriate target name.
 - *
 - *  \see \ref Sec_ConfiguringApps_AppMakefileParams for a copy of the sample LUFA project makefile.
 - *
 - *  Each build module may have one or more mandatory parameters (GNU Make variables) which <i>must</i>
 - *  be supplied in the project makefile for the module to work, and one or more optional parameters which
 - *  may be defined and which will assume a sensible default if not.
 - *
 - *  \section SSec_BuildSystem_Modules Available Modules
 - *
 - *  The following modules are included in this LUFA release:
 - *
 - *  \li \subpage Page_BuildModule_ATPROGRAM - Device Programming
 - *  \li \subpage Page_BuildModule_AVRDUDE - Device Programming
 - *  \li \subpage Page_BuildModule_BUILD - Compiling/Assembling/Linking
 - *  \li \subpage Page_BuildModule_CORE - Core Build System Functions
 - *  \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis
 - *  \li \subpage Page_BuildModule_DFU - Device Programming
 - *  \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation
 - *  \li \subpage Page_BuildModule_HID - Device Programming
 - *  \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables
 - *
 - *  If you have problems building using the LUFA build system, see \subpage Page_BuildTroubleshooting for resolution steps.
 - */
 -
 - /** \page Page_BuildModule_BUILD The BUILD build module
 - *
 - *  The BUILD LUFA build system module, providing targets for the compilation,
 - *  assembling and linking of an application from source code into binary files
 - *  suitable for programming into a target device, using the GCC compiler.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_build.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_BUILD_Requirements Requirements
 - *  This module requires the the architecture appropriate binaries of the GCC compiler are available in your
 - *  system's <b>PATH</b> variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio
 - *  5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages.
 - *
 - *  \section SSec_BuildModule_BUILD_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>size</tt></td>
 - *    <td>Display size of the compiled application FLASH and SRAM segments.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>symbol-sizes</tt></td>
 - *    <td>Display a size-sorted list of symbols from the compiled application, in decimal bytes.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>lib</tt></td>
 - *    <td>Build and archive all source files into a library A binary file.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>all</tt></td>
 - *    <td>Build and link the application into ELF debug and HEX binary files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>elf</tt></td>
 - *    <td>Build and link the application into an ELF debug file.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>bin</tt></td>
 - *    <td>Build and link the application and produce a BIN binary file.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>hex</tt></td>
 - *    <td>Build and link the application and produce HEX and EEP binary files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>lss</tt></td>
 - *    <td>Build and link the application and produce a LSS source code/assembly code mixed listing file.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>clean</tt></td>
 - *    <td>Remove all intermediary files and binary output files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>mostlyclean</tt></td>
 - *    <td>Remove all intermediary files but preserve any binary output files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt><i><filename></i>.s</tt></td>
 - *    <td>Create an assembly listing of a given input C/C++ source file.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>TARGET</tt></td>
 - *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>ARCH</tt></td>
 - *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>MCU</tt></td>
 - *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>SRC</tt></td>
 - *    <td>List of relative or absolute paths to the application C (.c), C++ (.cpp) and Assembly (.S) source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>F_USB</tt></td>
 - *    <td>Speed in Hz of the input clock frequency to the target's USB controller.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_PATH</tt></td>
 - *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_BUILD_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>BOARD</tt></td>
 - *    <td>LUFA board hardware drivers to use (see \ref Page_DeviceSupport).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>OPTIMIZATION</tt></td>
 - *    <td>Optimization level to use when compiling source files (see GCC manual).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>C_STANDARD</tt></td>
 - *    <td>Version of the C standard to apply when compiling C++ source files (see GCC manual).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPP_STANDARD</tt></td>
 - *    <td>Version of the C++ standard to apply when compiling C++ source files (see GCC manual).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>DEBUG_FORMAT</tt></td>
 - *    <td>Format of the debug information to embed in the generated object files (see GCC manual).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>DEBUG_LEVEL</tt></td>
 - *    <td>Level of the debugging information to embed in the generated object files (see GCC manual).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>F_CPU</tt></td>
 - *    <td>Speed of the processor CPU clock, in Hz.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>C_FLAGS</tt></td>
 - *    <td>Flags to pass to the C compiler only, after the automatically generated flags.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPP_FLAGS</tt></td>
 - *    <td>Flags to pass to the C++ compiler only, after the automatically generated flags.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>ASM_FLAGS</tt></td>
 - *    <td>Flags to pass to the assembler only, after the automatically generated flags.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CC_FLAGS</tt></td>
 - *    <td>Common flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>COMPILER_PATH</tt></td>
 - *    <td>Directory where the C/C++ toolchain is located, if not available in the system <tt>PATH</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LD_FLAGS</tt></td>
 - *    <td>Flags to pass to the linker, after the automatically generated flags.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LINKER_RELAXATIONS</tt></td>
 - *    <td>Enables or disables linker relaxations when linking the application binary. This can reduce the total size
 - *        of the application by replacing full \c CALL instructions with smaller \c RCALL instructions where possible.
 - *        \note On some unpatched versions of binutils, this can cause link failures in some circumstances. If you
 - *              receive a link error <tt>relocation truncated to fit: R_AVR_13_PCREL</tt>, disable this setting.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>OBJDIR</tt></td>
 - *    <td>Directory to place the generated object and dependency files. If set to "." the same folder as the source file will be used.
 - *        \note When this option is enabled, all source filenames <b>must</b> be unique.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>OBJECT_FILES</tt></td>
 - *    <td>List of additional object files that should be linked into the resulting binary.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_BUILD_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 -/** \page Page_BuildModule_CORE The CORE build module
 - *
 - *  The core LUFA build system module, providing common build system help and information targets.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_core.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_CORE_Requirements Requirements
 - *  This module has no requirements outside a standard *nix shell like environment; the <tt>sh</tt>
 - *  shell, GNU <tt>make</tt> and *nix CoreUtils (<tt>echo</tt>, <tt>printf</tt>, etc.).
 - *
 - *  \section SSec_BuildModule_CORE_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>help</tt></td>
 - *    <td>Display build system help and configuration information.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_targets</tt></td>
 - *    <td>List all available build targets from the build system.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_modules</tt></td>
 - *    <td>List all available build modules from the build system.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_mandatory</tt></td>
 - *    <td>List all mandatory parameters required by the included modules.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_optional</tt></td>
 - *    <td>List all optional parameters required by the included modules.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_provided</tt></td>
 - *    <td>List all variables provided by the included modules.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>list_macros</tt></td>
 - *    <td>List all macros provided by the included modules.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CORE_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CORE_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CORE_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 -/** \page Page_BuildModule_ATPROGRAM The ATPROGRAM build module
 - *
 - *  The ATPROGRAM programming utility LUFA build system module, providing targets to reprogram an
 - *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_atprogram.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_Requirements Requirements
 - *  This module requires the <tt>atprogram.exe</tt> utility to be available in your system's <b>PATH</b>
 - *  variable. The <tt>atprogram.exe</tt> utility is distributed in Atmel AVR Studio 5.x and Atmel Studio 6.x
 - *  inside the application install folder's "\atbackend" subdirectory.
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>atprogram</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>atprogram-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>MCU</tt></td>
 - *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>TARGET</tt></td>
 - *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>ATPROGRAM_PROGRAMMER</tt></td>
 - *    <td>Name of the Atmel programmer or debugger tool to communicate with (e.g. <tt>jtagice3</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>ATPROGRAM_INTERFACE</tt></td>
 - *    <td>Name of the programming interface to use when programming the target (e.g. <tt>spi</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>ATPROGRAM_PORT</tt></td>
 - *    <td>Name of the communication port to use when when programming with a serially connected tool (e.g. <tt>COM2</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_ATPROGRAM_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 -/** \page Page_BuildModule_AVRDUDE The AVRDUDE build module
 - *
 - *  The AVRDUDE programming utility LUFA build system module, providing targets to reprogram an
 - *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_avrdude.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_AVRDUDE_Requirements Requirements
 - *  This module requires the <tt>avrdude</tt> utility to be available in your system's <b>PATH</b>
 - *  variable. The <tt>avrdude</tt> utility is distributed in the old WinAVR project releases for
 - *  Windows (<a>http://winavr.sourceforge.net</a>) or can be installed on *nix systems via the project's
 - *  source code (<a>https://savannah.nongnu.org/projects/avrdude</a>) or through the package manager.
 - *
 - *  \section SSec_BuildModule_AVRDUDE_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>avrdude</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>avrdude-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_AVRDUDE_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>MCU</tt></td>
 - *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>TARGET</tt></td>
 - *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_AVRDUDE_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>AVRDUDE_PROGRAMMER</tt></td>
 - *    <td>Name of the programmer or debugger tool to communicate with (e.g. <tt>jtagicemkii</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>AVRDUDE_PORT</tt></td>
 - *    <td>Name of the communication port to use when when programming with the connected tool (e.g. <tt>COM2</tt>, <tt>/dev/ttyUSB0</tt> or <tt>usb</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>AVRDUDE_FLAGS</tt></td>
 - *    <td>Additional flags to pass to avrdude when programming, applied after the automatically generated flags.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_AVRDUDE_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 - /** \page Page_BuildModule_CPPCHECK The CPPCHECK build module
 - *
 - *  The CPPCHECK programming utility LUFA build system module, providing targets to statically
 - *  analyze C and C++ source code for errors and performance/style issues.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_cppcheck.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_CPPCHECK_Requirements Requirements
 - *  This module requires the <tt>cppcheck</tt> utility to be available in your system's <b>PATH</b>
 - *  variable. The <tt>cppcheck</tt> utility is distributed through the project's home page
 - *  (<a>http://cppcheck.sourceforge.net</a>) for Windows, and can be installed on *nix systems via
 - *  the project's source code or through the package manager.
 - *
 - *  \section SSec_BuildModule_CPPCHECK_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>cppcheck</tt></td>
 - *    <td>Statically analyze the project source code for issues.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>cppcheck-config</tt></td>
 - *    <td>Check the <tt>cppcheck</tt> configuration - scan source code and warn about missing header files and other issues.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CPPCHECK_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>SRC</tt></td>
 - *    <td>List of source files to statically analyze.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CPPCHECK_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>CPPCHECK_INCLUDES</tt></td>
 - *    <td>Path of extra directories to check when attemting to resolve C/C++ header file includes.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_EXCLUDES</tt></td>
 - *    <td>Paths or path fragments to exclude when analyzing.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_MSG_TEMPLATE</tt></td>
 - *    <td>Output message template to use when printing errors, warnings and information (see <tt>cppcheck</tt> documentation).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_ENABLE</tt></td>
 - *    <td>Analysis rule categories to enable (see <tt>cppcheck</tt> documentation).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_SUPPRESS</tt></td>
 - *    <td>Specific analysis rules to suppress (see <tt>cppcheck</tt> documentation).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_FAIL_ON_WARNING</tt></td>
 - *    <td>Set to <b>Y</b> to fail the analysis job with an error exit code if warnings are found, <b>N</b> to continue without failing.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_QUIET</tt></td>
 - *    <td>Set to <b>Y</b> to suppress all output except warnings and errors, <b>N</b> to show verbose output information.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>CPPCHECK_FLAGS</tt></td>
 - *    <td>Extra flags to pass to <tt>cppcheck</tt>, after the automatically generated flags.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_CPPCHECK_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 - /** \page Page_BuildModule_DFU The DFU build module
 - *
 - *  The DFU programming utility LUFA build system module, providing targets to reprogram an
 - *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files.
 - *  This module requires a DFU class bootloader to be running in the target, compatible with
 - *  the DFU bootloader protocol as published by Atmel.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_dfu.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_DFU_Requirements Requirements
 - *  This module requires either the <tt>batchisp</tt> utility from Atmel's FLIP utility, or the open
 - *  source <tt>dfu-programmer</tt> utility (<a>http://dfu-programmer.sourceforge.net/</a>) to be
 - *  available in your system's <b>PATH</b> variable. On *nix systems the <tt>dfu-programmer</tt> utility
 - *  can be installed via the project's source code or through the package manager.
 - *
 - *  \section SSec_BuildModule_DFU_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>dfu</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data using <tt>dfu-programmer</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>dfu-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>dfu-programmer</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>flip</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data using <tt>batchisp</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>flip-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>batchisp</tt>.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DFU_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>MCU</tt></td>
 - *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>TARGET</tt></td>
 - *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DFU_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DFU_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 - /** \page Page_BuildModule_DOXYGEN The DOXYGEN build module
 - *
 - *  The DOXYGEN code documentation utility LUFA build system module, providing targets to generate
 - *  project HTML and other format documentation from a set of source files that include special
 - *  Doxygen comments.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_doxygen.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_DOXYGEN_Requirements Requirements
 - *  This module requires the <tt>doxygen</tt> utility from the Doxygen website
 - *  (<a>http://www.doxygen.org/</a>) to be available in your system's <b>PATH</b> variable. On *nix
 - *  systems the <tt>doxygen</tt> utility can be installed via the project's source code or through
 - *  the package manager.
 - *
 - *  \section SSec_BuildModule_DOXYGEN_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>doxygen</tt></td>
 - *    <td>Generate project documentation.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>doxygen_create</tt></td>
 - *    <td>Create a new Doxygen configuration file using the latest template.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>doxygen_upgrade</tt></td>
 - *    <td>Upgrade an existing Doxygen configuration file to the latest template</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>LUFA_PATH</tt></td>
 - *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DOXYGEN_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>DOXYGEN_CONF</tt></td>
 - *    <td>Name and path of the base Doxygen configuration file for the project.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>DOXYGEN_FAIL_ON_WARNING</tt></td>
 - *    <td>Set to <b>Y</b> to fail the generation with an error exit code if warnings are found other than unsupported configuration parameters, <b>N</b> to continue without failing.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>DOXYGEN_OVERRIDE_PARAMS</tt></td>
 - *    <td>Extra Doxygen configuration parameters to apply, overriding the corresponding config entry in the project's configuration file (e.g. <tt>QUIET=YES</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_DOXYGEN_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 - /** \page Page_BuildModule_HID The HID build module
 - *
 - *  The HID programming utility LUFA build system module, providing targets to reprogram an
 - *  Atmel processor's FLASH memory with a project's compiled binary output file. This module
 - *  requires a HID class bootloader to be running in the target, using a protocol compatible
 - *  with the PJRC "HalfKay" protocol (<a>http://www.pjrc.com/teensy/halfkay_protocol.html</a>).
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_hid.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_HID_Requirements Requirements
 - *  This module requires either the <tt>hid_bootloader_cli</tt> utility from the included LUFA HID
 - *  class bootloader API subdirectory, or the <tt>teensy_loader_cli</tt> utility from PJRC
 - *  (<a>http://www.pjrc.com/teensy/loader_cli.html</a>) to be available in your system's <b>PATH</b>
 - *  variable.
 - *
 - *  \section SSec_BuildModule_HID_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>hid</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data using <tt>hid_bootloader_cli</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>hid-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>hid_bootloader_cli</tt> and
 - *        a temporary AVR application programmed into the target's FLASH.
 - *        \note This will erase the currently loaded application in the target.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>teensy</tt></td>
 - *    <td>Program the device FLASH memory with the application's executable data using <tt>teensy_loader_cli</tt>.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>teensy-ee</tt></td>
 - *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>teensy_loader_cli</tt> and
 - *        a temporary AVR application programmed into the target's FLASH.
 - *        \note This will erase the currently loaded application in the target.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>MCU</tt></td>
 - *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>TARGET</tt></td>
 - *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_HID_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 - /** \page Page_BuildModule_SOURCES The SOURCES build module
 - *
 - *  The SOURCES LUFA build system module, providing variables listing the various LUFA source files
 - *  required to be build by a project for a given LUFA module. This module gives a way to reference
 - *  LUFA source files symbolically, so that changes to the library structure do not break the library
 - *  makefile.
 - *
 - *  To use this module in your application makefile, add the following code:
 - *  \code
 - *  include $(LUFA_PATH)/Build/lufa_sources.mk
 - *  \endcode
 - *
 - *  \section SSec_BuildModule_SOURCES_Requirements Requirements
 - *  None.
 - *
 - *  \section SSec_BuildModule_SOURCES_Targets Targets
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_SOURCES_MandatoryParams Mandatory Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>LUFA_PATH</tt></td>
 - *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>ARCH</tt></td>
 - *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_SOURCES_OptionalParams Optional Parameters
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables
 - *
 - *  <table>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_USB</tt></td>
 - *    <td>List of LUFA USB driver source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_USBCLASS</tt></td>
 - *    <td>List of LUFA USB Class driver source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_TEMPERATURE</tt></td>
 - *    <td>List of LUFA temperature sensor driver source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_SERIAL</tt></td>
 - *    <td>List of LUFA Serial U(S)ART driver source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_TWI</tt></td>
 - *    <td>List of LUFA TWI driver source files.</td>
 - *   </tr>
 - *   <tr>
 - *    <td><tt>LUFA_SRC_PLATFORM</tt></td>
 - *    <td>List of LUFA architecture specific platform management source files.</td>
 - *   </tr>
 - *  </table>
 - *
 - *  \section SSec_BuildModule_SOURCES_ProvidedMacros Module Provided Macros
 - *
 - *  <table>
 - *   <tr>
 - *    <td><i>None</i></td>
 - *   </tr>
 - *  </table>
 - */
 -
 -/** \page Page_BuildTroubleshooting Troubleshooting Information
 - *
 - *  LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and surrounding binaries. This can sometimes lead to problems compiling applications if one of these
 - *  features is buggy in the version of the tools used in a build environment. Missing utilities and incorrectly set makefile configuration options can also result in different
 - *  errors being produced when compilation or other operations are attempted. The table below lists a set of commonly encountered errors and their resolutions.
 - *
 - *  <table>
 - *    <tr>
 - *    <th>Problem</th>
 - *    <th>Resolution</th>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>relocation truncated to fit: R_AVR_13_PCREL against symbol <i>{X}</i></tt></b>" shown when compiling.</td>
 - *    <td>Try compiling with the setting <tt>LINKER_RELAXATIONS=N</tt> in your LUFA Build System 2.0 makefile, or remove the line <tt>-Wl,--relax</tt>
 - *        from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>error: ld terminated with signal 11 [Segmentation fault]</tt></b>" shown when compiling.</td>
 - *    <td>Try compiling with the setting <tt>DEBUG_LEVEL=2</tt> in your LUFA Build System 2.0 makefile, or make sure you are using <tt>binutils</tt> version 2.22 or later.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>EMERGENCY ABORT: INFINITE RECURSION DETECTED</tt></b>" shown when compiling.</td>
 - *    <td>Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with
 - *        GNU make or other variants of Make causing an infinitely recursive build.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Unsupported architecture "<i>{X}</i>"</tt></b>" shown when compiling.</td>
 - *    <td>Ensure your makefile's <tt>ARCH</tt> setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Makefile <i>{X}</i> value not set</tt></b>" shown when compiling.</td>
 - *    <td>The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA
 - *        build system modules. Define the value in your project makefile and try again.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Makefile <i>{X}</i> option cannot be blank</tt></b>" shown when compiling.</td>
 - *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration
 - *        option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Makefile <i>{X}</i> option must be Y or N</tt></b>" shown when compiling.</td>
 - *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No").
 - *        This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Unknown input source file formats: <i>{X}</i></tt></b>" shown when compiling.</td>
 - *    <td>The nominated source files, specified in your project's makefile in the <tt>SRC</tt> configuration option, has an extension that the LUFA build system does not
 - *        recognise. The file extensions are case sensitive, and must be one of the supported formats (<tt>*.c</tt>, <tt>*.cpp</tt> or <tt>*.S</tt>).</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Cannot build with OBJDIR parameter set - one or more object file name is not unique</tt></b>" shown when compiling.</td>
 - *    <td>When a project is built with a non-empty <tt>OBJDIR</tt> object directory name set, all input source files must have unique names, excluding extension and path.
 - *        This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Source file does not exist: <i>{X}</i></tt></b>" shown when compiling.</td>
 - *    <td>The nominated input source file, specified in the user project's <tt>SRC</tt> parameter, could not be found. Ensure the source file exists and the absolute or
 - *        relative path given in the user project makefile is correct and try again.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>Doxygen configuration file <i>{X}</i> does not exist</tt></b>" shown when upgrading a Doxygen configuration file.</td>
 - *    <td>The nominated Doxygen configuration file, specified in the user project's <tt>DOXYGEN_CONF</tt> parameter, could not be found. Ensure the configuration file exists
 - *        and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration
 - *        file.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>avr-gcc: error: unrecognized option '<i>{X}</i>'</tt></b>" shown when compiling.</td>
 - *    <td>An unrecognised option was supplied to the compiler, usually in the <tt>C_FLAGS</tt>, <tt>CPP_FLAGS</tt>, <tt>ASM_FLAGS</tt> or <tt>CC_FLAGS</tt> configuration
 - *        options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or
 - *        upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>makefile:{X}: {Y}.mk: No such file or directory</tt></b>" shown when make is invoked.</td>
 - *    <td>The path to the nominated makefile module was incorrect. This usually indicates that the makefile <tt>LUFA_PATH</tt> option is not set to a valid relative or
 - *        absolute path to the LUFA library core.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>fatal error: LUFAConfig.h: No such file or directory</tt></b>" shown when compiling.</td>
 - *    <td>The <tt>USE_LUFA_CONFIG_HEADER</tt> compile time option was set in the user project makefile, but the user supplied <tt>LUFAConfig.h</tt> header could not be
 - *        found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile <tt>CC_FLAGS</tt>
 - *        parameter.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>ld.exe: section .apitable_trampolines loaded at <i>{X}</i> overlaps section .text</tt></b>" shown when compiling a bootloader.</td>
 - *    <td>The bootloader is compiling too large for the given <tt>FLASH_SIZE_KB</tt> and <tt>BOOT_SECTION_SIZE_KB</tt> parameters set in the bootloader makefile. This
 - *        usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the
 - *        compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>unknown MCU '<i>{X}</i>' specified</tt></b>" shown when compiling.</td>
 - *    <td>The specified microcontroller device model name set in the user application's makefile as the <tt>MCU</tt> parameter is incorrect, or unsupported by the
 - *        version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.</td>
 - *   </tr>
 - *   <tr>
 - *    <td>Error "<b><tt>undefined reference to `<i>{X}</i>'</tt></b>" shown when compiling.</td>
 - *    <td>This is usually caused by a missing source file in the user application's <tt>SRC</tt> configuration parameter. If the indicated symbol is one from the LUFA
 - *        library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_SOURCES).</td>
 - *   </tr>
 - *  </table>
 - *
 - *  For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp.
 - */
 +/** \file + * + *  This file contains special DoxyGen information for the generation of the main page and other special + *  documentation pages. It is not a project source file. + */ + +/** \page Page_BuildSystem The LUFA Build System + * + *  \section Sec_BuildSystem_Overview Overview of the LUFA Build System + *  The LUFA build system is an attempt at making a set of re-usable, modular build make files which + *  can be referenced in a LUFA powered project, to minimize the amount of code required in an + *  application makefile. The system is written in GNU Make, and each module is independent of + *  one-another. + * + *  For details on the prerequisites needed for Linux and Windows machines to be able to use the LUFA + *  build system, see \ref Sec_CompilingApps_Prerequisites. + * + *  To use a LUFA build system module, simply add an include to your project makefile. All user projects + *  should at a minimum include \ref Page_BuildModule_CORE for base functionality: + *  \code + *  include $(LUFA_PATH)/Build/lufa_core.mk + *  \endcode + * + *  Once included in your project makefile, the associated build module targets will be added to your + *  project's build makefile targets automatically. To call a build target, run <tt>make {TARGET_NAME}</tt> + *  from the command line, substituting in the appropriate target name. + * + *  \see \ref Sec_ConfiguringApps_AppMakefileParams for a copy of the sample LUFA project makefile. + * + *  Each build module may have one or more mandatory parameters (GNU Make variables) which <i>must</i> + *  be supplied in the project makefile for the module to work, and one or more optional parameters which + *  may be defined and which will assume a sensible default if not. + * + *  \section SSec_BuildSystem_Modules Available Modules + * + *  The following modules are included in this LUFA release: + * + *  \li \subpage Page_BuildModule_ATPROGRAM - Device Programming + *  \li \subpage Page_BuildModule_AVRDUDE - Device Programming + *  \li \subpage Page_BuildModule_BUILD - Compiling/Assembling/Linking + *  \li \subpage Page_BuildModule_CORE - Core Build System Functions + *  \li \subpage Page_BuildModule_CPPCHECK - Static Code Analysis + *  \li \subpage Page_BuildModule_DFU - Device Programming + *  \li \subpage Page_BuildModule_DOXYGEN - Automated Source Code Documentation + *  \li \subpage Page_BuildModule_HID - Device Programming + *  \li \subpage Page_BuildModule_SOURCES - LUFA Module Source Code Variables + * + *  If you have problems building using the LUFA build system, see \subpage Page_BuildTroubleshooting for resolution steps. + */ + + /** \page Page_BuildModule_BUILD The BUILD build module + * + *  The BUILD LUFA build system module, providing targets for the compilation, + *  assembling and linking of an application from source code into binary files + *  suitable for programming into a target device, using the GCC compiler. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_build.mk + *  \endcode + * + *  \section SSec_BuildModule_BUILD_Requirements Requirements + *  This module requires the the architecture appropriate binaries of the GCC compiler are available in your + *  system's <b>PATH</b> variable. The GCC compiler and associated toolchain is distributed in Atmel AVR Studio + *  5.x and Atmel Studio 6.x installation directories, as well as in many third party distribution packages. + * + *  \section SSec_BuildModule_BUILD_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>size</tt></td> + *    <td>Display size of the compiled application FLASH and SRAM segments.</td> + *   </tr> + *   <tr> + *    <td><tt>symbol-sizes</tt></td> + *    <td>Display a size-sorted list of symbols from the compiled application, in decimal bytes.</td> + *   </tr> + *   <tr> + *    <td><tt>lib</tt></td> + *    <td>Build and archive all source files into a library A binary file.</td> + *   </tr> + *   <tr> + *    <td><tt>all</tt></td> + *    <td>Build and link the application into ELF debug and HEX binary files.</td> + *   </tr> + *   <tr> + *    <td><tt>elf</tt></td> + *    <td>Build and link the application into an ELF debug file.</td> + *   </tr> + *   <tr> + *    <td><tt>bin</tt></td> + *    <td>Build and link the application and produce a BIN binary file.</td> + *   </tr> + *   <tr> + *    <td><tt>hex</tt></td> + *    <td>Build and link the application and produce HEX and EEP binary files.</td> + *   </tr> + *   <tr> + *    <td><tt>lss</tt></td> + *    <td>Build and link the application and produce a LSS source code/assembly code mixed listing file.</td> + *   </tr> + *   <tr> + *    <td><tt>clean</tt></td> + *    <td>Remove all intermediary files and binary output files.</td> + *   </tr> + *   <tr> + *    <td><tt>mostlyclean</tt></td> + *    <td>Remove all intermediary files but preserve any binary output files.</td> + *   </tr> + *   <tr> + *    <td><tt><i><filename></i>.s</tt></td> + *    <td>Create an assembly listing of a given input C/C++ source file.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_BUILD_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>TARGET</tt></td> + *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>ARCH</tt></td> + *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td> + *   </tr> + *   <tr> + *    <td><tt>MCU</tt></td> + *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>SRC</tt></td> + *    <td>List of relative or absolute paths to the application C (.c), C++ (.cpp) and Assembly (.S) source files.</td> + *   </tr> + *   <tr> + *    <td><tt>F_USB</tt></td> + *    <td>Speed in Hz of the input clock frequency to the target's USB controller.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_PATH</tt></td> + *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_BUILD_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><tt>BOARD</tt></td> + *    <td>LUFA board hardware drivers to use (see \ref Page_DeviceSupport).</td> + *   </tr> + *   <tr> + *    <td><tt>OPTIMIZATION</tt></td> + *    <td>Optimization level to use when compiling source files (see GCC manual).</td> + *   </tr> + *   <tr> + *    <td><tt>C_STANDARD</tt></td> + *    <td>Version of the C standard to apply when compiling C++ source files (see GCC manual).</td> + *   </tr> + *   <tr> + *    <td><tt>CPP_STANDARD</tt></td> + *    <td>Version of the C++ standard to apply when compiling C++ source files (see GCC manual).</td> + *   </tr> + *   <tr> + *    <td><tt>DEBUG_FORMAT</tt></td> + *    <td>Format of the debug information to embed in the generated object files (see GCC manual).</td> + *   </tr> + *   <tr> + *    <td><tt>DEBUG_LEVEL</tt></td> + *    <td>Level of the debugging information to embed in the generated object files (see GCC manual).</td> + *   </tr> + *   <tr> + *    <td><tt>F_CPU</tt></td> + *    <td>Speed of the processor CPU clock, in Hz.</td> + *   </tr> + *   <tr> + *    <td><tt>C_FLAGS</tt></td> + *    <td>Flags to pass to the C compiler only, after the automatically generated flags.</td> + *   </tr> + *   <tr> + *    <td><tt>CPP_FLAGS</tt></td> + *    <td>Flags to pass to the C++ compiler only, after the automatically generated flags.</td> + *   </tr> + *   <tr> + *    <td><tt>ASM_FLAGS</tt></td> + *    <td>Flags to pass to the assembler only, after the automatically generated flags.</td> + *   </tr> + *   <tr> + *    <td><tt>CC_FLAGS</tt></td> + *    <td>Common flags to pass to the C/C++ compiler and assembler, after the automatically generated flags.</td> + *   </tr> + *   <tr> + *    <td><tt>COMPILER_PATH</tt></td> + *    <td>Directory where the C/C++ toolchain is located, if not available in the system <tt>PATH</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>LD_FLAGS</tt></td> + *    <td>Flags to pass to the linker, after the automatically generated flags.</td> + *   </tr> + *   <tr> + *    <td><tt>LINKER_RELAXATIONS</tt></td> + *    <td>Enables or disables linker relaxations when linking the application binary. This can reduce the total size + *        of the application by replacing full \c CALL instructions with smaller \c RCALL instructions where possible. + *        \note On some unpatched versions of binutils, this can cause link failures in some circumstances. If you + *              receive a link error <tt>relocation truncated to fit: R_AVR_13_PCREL</tt>, disable this setting.</td> + *   </tr> + *   <tr> + *    <td><tt>OBJDIR</tt></td> + *    <td>Directory to place the generated object and dependency files. If set to "." the same folder as the source file will be used. + *        \note When this option is enabled, all source filenames <b>must</b> be unique.</td> + *   </tr> + *   <tr> + *    <td><tt>OBJECT_FILES</tt></td> + *    <td>List of additional object files that should be linked into the resulting binary.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_BUILD_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_BUILD_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + +/** \page Page_BuildModule_CORE The CORE build module + * + *  The core LUFA build system module, providing common build system help and information targets. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_core.mk + *  \endcode + * + *  \section SSec_BuildModule_CORE_Requirements Requirements + *  This module has no requirements outside a standard *nix shell like environment; the <tt>sh</tt> + *  shell, GNU <tt>make</tt> and *nix CoreUtils (<tt>echo</tt>, <tt>printf</tt>, etc.). + * + *  \section SSec_BuildModule_CORE_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>help</tt></td> + *    <td>Display build system help and configuration information.</td> + *   </tr> + *   <tr> + *    <td><tt>list_targets</tt></td> + *    <td>List all available build targets from the build system.</td> + *   </tr> + *   <tr> + *    <td><tt>list_modules</tt></td> + *    <td>List all available build modules from the build system.</td> + *   </tr> + *   <tr> + *    <td><tt>list_mandatory</tt></td> + *    <td>List all mandatory parameters required by the included modules.</td> + *   </tr> + *   <tr> + *    <td><tt>list_optional</tt></td> + *    <td>List all optional parameters required by the included modules.</td> + *   </tr> + *   <tr> + *    <td><tt>list_provided</tt></td> + *    <td>List all variables provided by the included modules.</td> + *   </tr> + *   <tr> + *    <td><tt>list_macros</tt></td> + *    <td>List all macros provided by the included modules.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CORE_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CORE_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CORE_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CORE_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + +/** \page Page_BuildModule_ATPROGRAM The ATPROGRAM build module + * + *  The ATPROGRAM programming utility LUFA build system module, providing targets to reprogram an + *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_atprogram.mk + *  \endcode + * + *  \section SSec_BuildModule_ATPROGRAM_Requirements Requirements + *  This module requires the <tt>atprogram.exe</tt> utility to be available in your system's <b>PATH</b> + *  variable. The <tt>atprogram.exe</tt> utility is distributed in Atmel AVR Studio 5.x and Atmel Studio 6.x + *  inside the application install folder's "\atbackend" subdirectory. + * + *  \section SSec_BuildModule_ATPROGRAM_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>atprogram</tt></td> + *    <td>Program the device FLASH memory with the application's executable data.</td> + *   </tr> + *   <tr> + *    <td><tt>atprogram-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_ATPROGRAM_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>MCU</tt></td> + *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>TARGET</tt></td> + *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_ATPROGRAM_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><tt>ATPROGRAM_PROGRAMMER</tt></td> + *    <td>Name of the Atmel programmer or debugger tool to communicate with (e.g. <tt>jtagice3</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>ATPROGRAM_INTERFACE</tt></td> + *    <td>Name of the programming interface to use when programming the target (e.g. <tt>spi</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>ATPROGRAM_PORT</tt></td> + *    <td>Name of the communication port to use when when programming with a serially connected tool (e.g. <tt>COM2</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_ATPROGRAM_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_ATPROGRAM_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + +/** \page Page_BuildModule_AVRDUDE The AVRDUDE build module + * + *  The AVRDUDE programming utility LUFA build system module, providing targets to reprogram an + *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_avrdude.mk + *  \endcode + * + *  \section SSec_BuildModule_AVRDUDE_Requirements Requirements + *  This module requires the <tt>avrdude</tt> utility to be available in your system's <b>PATH</b> + *  variable. The <tt>avrdude</tt> utility is distributed in the old WinAVR project releases for + *  Windows (<a>http://winavr.sourceforge.net</a>) or can be installed on *nix systems via the project's + *  source code (<a>https://savannah.nongnu.org/projects/avrdude</a>) or through the package manager. + * + *  \section SSec_BuildModule_AVRDUDE_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>avrdude</tt></td> + *    <td>Program the device FLASH memory with the application's executable data.</td> + *   </tr> + *   <tr> + *    <td><tt>avrdude-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_AVRDUDE_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>MCU</tt></td> + *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>TARGET</tt></td> + *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_AVRDUDE_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><tt>AVRDUDE_PROGRAMMER</tt></td> + *    <td>Name of the programmer or debugger tool to communicate with (e.g. <tt>jtagicemkii</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>AVRDUDE_PORT</tt></td> + *    <td>Name of the communication port to use when when programming with the connected tool (e.g. <tt>COM2</tt>, <tt>/dev/ttyUSB0</tt> or <tt>usb</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>AVRDUDE_FLAGS</tt></td> + *    <td>Additional flags to pass to avrdude when programming, applied after the automatically generated flags.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_AVRDUDE_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_AVRDUDE_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + + /** \page Page_BuildModule_CPPCHECK The CPPCHECK build module + * + *  The CPPCHECK programming utility LUFA build system module, providing targets to statically + *  analyze C and C++ source code for errors and performance/style issues. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_cppcheck.mk + *  \endcode + * + *  \section SSec_BuildModule_CPPCHECK_Requirements Requirements + *  This module requires the <tt>cppcheck</tt> utility to be available in your system's <b>PATH</b> + *  variable. The <tt>cppcheck</tt> utility is distributed through the project's home page + *  (<a>http://cppcheck.sourceforge.net</a>) for Windows, and can be installed on *nix systems via + *  the project's source code or through the package manager. + * + *  \section SSec_BuildModule_CPPCHECK_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>cppcheck</tt></td> + *    <td>Statically analyze the project source code for issues.</td> + *   </tr> + *   <tr> + *    <td><tt>cppcheck-config</tt></td> + *    <td>Check the <tt>cppcheck</tt> configuration - scan source code and warn about missing header files and other issues.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CPPCHECK_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>SRC</tt></td> + *    <td>List of source files to statically analyze.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CPPCHECK_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><tt>CPPCHECK_INCLUDES</tt></td> + *    <td>Path of extra directories to check when attemting to resolve C/C++ header file includes.</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_EXCLUDES</tt></td> + *    <td>Paths or path fragments to exclude when analyzing.</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_MSG_TEMPLATE</tt></td> + *    <td>Output message template to use when printing errors, warnings and information (see <tt>cppcheck</tt> documentation).</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_ENABLE</tt></td> + *    <td>Analysis rule categories to enable (see <tt>cppcheck</tt> documentation).</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_SUPPRESS</tt></td> + *    <td>Specific analysis rules to suppress (see <tt>cppcheck</tt> documentation).</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_FAIL_ON_WARNING</tt></td> + *    <td>Set to <b>Y</b> to fail the analysis job with an error exit code if warnings are found, <b>N</b> to continue without failing.</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_QUIET</tt></td> + *    <td>Set to <b>Y</b> to suppress all output except warnings and errors, <b>N</b> to show verbose output information.</td> + *   </tr> + *   <tr> + *    <td><tt>CPPCHECK_FLAGS</tt></td> + *    <td>Extra flags to pass to <tt>cppcheck</tt>, after the automatically generated flags.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CPPCHECK_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_CPPCHECK_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + + /** \page Page_BuildModule_DFU The DFU build module + * + *  The DFU programming utility LUFA build system module, providing targets to reprogram an + *  Atmel processor FLASH and EEPROM memories with a project's compiled binary output files. + *  This module requires a DFU class bootloader to be running in the target, compatible with + *  the DFU bootloader protocol as published by Atmel. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_dfu.mk + *  \endcode + * + *  \section SSec_BuildModule_DFU_Requirements Requirements + *  This module requires either the <tt>batchisp</tt> utility from Atmel's FLIP utility, or the open + *  source <tt>dfu-programmer</tt> utility (<a>http://dfu-programmer.sourceforge.net/</a>) to be + *  available in your system's <b>PATH</b> variable. On *nix systems the <tt>dfu-programmer</tt> utility + *  can be installed via the project's source code or through the package manager. + * + *  \section SSec_BuildModule_DFU_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>dfu</tt></td> + *    <td>Program the device FLASH memory with the application's executable data using <tt>dfu-programmer</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>dfu-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>dfu-programmer</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>flip</tt></td> + *    <td>Program the device FLASH memory with the application's executable data using <tt>batchisp</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>flip-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>batchisp</tt>.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DFU_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>MCU</tt></td> + *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>TARGET</tt></td> + *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DFU_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DFU_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DFU_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + + /** \page Page_BuildModule_DOXYGEN The DOXYGEN build module + * + *  The DOXYGEN code documentation utility LUFA build system module, providing targets to generate + *  project HTML and other format documentation from a set of source files that include special + *  Doxygen comments. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_doxygen.mk + *  \endcode + * + *  \section SSec_BuildModule_DOXYGEN_Requirements Requirements + *  This module requires the <tt>doxygen</tt> utility from the Doxygen website + *  (<a>http://www.doxygen.org/</a>) to be available in your system's <b>PATH</b> variable. On *nix + *  systems the <tt>doxygen</tt> utility can be installed via the project's source code or through + *  the package manager. + * + *  \section SSec_BuildModule_DOXYGEN_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>doxygen</tt></td> + *    <td>Generate project documentation.</td> + *   </tr> + *   <tr> + *    <td><tt>doxygen_create</tt></td> + *    <td>Create a new Doxygen configuration file using the latest template.</td> + *   </tr> + *   <tr> + *    <td><tt>doxygen_upgrade</tt></td> + *    <td>Upgrade an existing Doxygen configuration file to the latest template</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DOXYGEN_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>LUFA_PATH</tt></td> + *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DOXYGEN_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><tt>DOXYGEN_CONF</tt></td> + *    <td>Name and path of the base Doxygen configuration file for the project.</td> + *   </tr> + *   <tr> + *    <td><tt>DOXYGEN_FAIL_ON_WARNING</tt></td> + *    <td>Set to <b>Y</b> to fail the generation with an error exit code if warnings are found other than unsupported configuration parameters, <b>N</b> to continue without failing.</td> + *   </tr> + *   <tr> + *    <td><tt>DOXYGEN_OVERRIDE_PARAMS</tt></td> + *    <td>Extra Doxygen configuration parameters to apply, overriding the corresponding config entry in the project's configuration file (e.g. <tt>QUIET=YES</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DOXYGEN_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_DOXYGEN_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + + /** \page Page_BuildModule_HID The HID build module + * + *  The HID programming utility LUFA build system module, providing targets to reprogram an + *  Atmel processor's FLASH memory with a project's compiled binary output file. This module + *  requires a HID class bootloader to be running in the target, using a protocol compatible + *  with the PJRC "HalfKay" protocol (<a>http://www.pjrc.com/teensy/halfkay_protocol.html</a>). + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_hid.mk + *  \endcode + * + *  \section SSec_BuildModule_HID_Requirements Requirements + *  This module requires either the <tt>hid_bootloader_cli</tt> utility from the included LUFA HID + *  class bootloader API subdirectory, or the <tt>teensy_loader_cli</tt> utility from PJRC + *  (<a>http://www.pjrc.com/teensy/loader_cli.html</a>) to be available in your system's <b>PATH</b> + *  variable. + * + *  \section SSec_BuildModule_HID_Targets Targets + * + *  <table> + *   <tr> + *    <td><tt>hid</tt></td> + *    <td>Program the device FLASH memory with the application's executable data using <tt>hid_bootloader_cli</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>hid-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>hid_bootloader_cli</tt> and + *        a temporary AVR application programmed into the target's FLASH. + *        \note This will erase the currently loaded application in the target.</td> + *   </tr> + *   <tr> + *    <td><tt>teensy</tt></td> + *    <td>Program the device FLASH memory with the application's executable data using <tt>teensy_loader_cli</tt>.</td> + *   </tr> + *   <tr> + *    <td><tt>teensy-ee</tt></td> + *    <td>Program the device EEPROM memory with the application's EEPROM data using <tt>teensy_loader_cli</tt> and + *        a temporary AVR application programmed into the target's FLASH. + *        \note This will erase the currently loaded application in the target.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_HID_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>MCU</tt></td> + *    <td>Name of the Atmel processor model (e.g. <tt>at90usb1287</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>TARGET</tt></td> + *    <td>Name of the application output file prefix (e.g. <tt>TestApplication</tt>).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_HID_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_HID_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_HID_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + + /** \page Page_BuildModule_SOURCES The SOURCES build module + * + *  The SOURCES LUFA build system module, providing variables listing the various LUFA source files + *  required to be build by a project for a given LUFA module. This module gives a way to reference + *  LUFA source files symbolically, so that changes to the library structure do not break the library + *  makefile. + * + *  To use this module in your application makefile, add the following code: + *  \code + *  include $(LUFA_PATH)/Build/lufa_sources.mk + *  \endcode + * + *  \section SSec_BuildModule_SOURCES_Requirements Requirements + *  None. + * + *  \section SSec_BuildModule_SOURCES_Targets Targets + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_SOURCES_MandatoryParams Mandatory Parameters + * + *  <table> + *   <tr> + *    <td><tt>LUFA_PATH</tt></td> + *    <td>Path to the LUFA library core, either relative or absolute (e.g. <tt>../LUFA-000000/LUFA/</tt>).</td> + *   </tr> + *   <tr> + *    <td><tt>ARCH</tt></td> + *    <td>Architecture of the target processor (see \ref Page_DeviceSupport).</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_SOURCES_OptionalParams Optional Parameters + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_SOURCES_ProvidedVariables Module Provided Variables + * + *  <table> + *   <tr> + *    <td><tt>LUFA_SRC_USB</tt></td> + *    <td>List of LUFA USB driver source files.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_SRC_USBCLASS</tt></td> + *    <td>List of LUFA USB Class driver source files.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_SRC_TEMPERATURE</tt></td> + *    <td>List of LUFA temperature sensor driver source files.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_SRC_SERIAL</tt></td> + *    <td>List of LUFA Serial U(S)ART driver source files.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_SRC_TWI</tt></td> + *    <td>List of LUFA TWI driver source files.</td> + *   </tr> + *   <tr> + *    <td><tt>LUFA_SRC_PLATFORM</tt></td> + *    <td>List of LUFA architecture specific platform management source files.</td> + *   </tr> + *  </table> + * + *  \section SSec_BuildModule_SOURCES_ProvidedMacros Module Provided Macros + * + *  <table> + *   <tr> + *    <td><i>None</i></td> + *   </tr> + *  </table> + */ + +/** \page Page_BuildTroubleshooting Troubleshooting Information + * + *  LUFA uses a lot of advanced features of the AVR-GCC compiler, linker, and surrounding binaries. This can sometimes lead to problems compiling applications if one of these + *  features is buggy in the version of the tools used in a build environment. Missing utilities and incorrectly set makefile configuration options can also result in different + *  errors being produced when compilation or other operations are attempted. The table below lists a set of commonly encountered errors and their resolutions. + * + *  <table> + *    <tr> + *    <th>Problem</th> + *    <th>Resolution</th> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>relocation truncated to fit: R_AVR_13_PCREL against symbol <i>{X}</i></tt></b>" shown when compiling.</td> + *    <td>Try compiling with the setting <tt>LINKER_RELAXATIONS=N</tt> in your LUFA Build System 2.0 makefile, or remove the line <tt>-Wl,--relax</tt> + *        from other makefiles. Alternatively, make sure you have the latest version of the Atmel Toolchain installed for your system.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>error: ld terminated with signal 11 [Segmentation fault]</tt></b>" shown when compiling.</td> + *    <td>Try compiling with the setting <tt>DEBUG_LEVEL=2</tt> in your LUFA Build System 2.0 makefile, or make sure you are using <tt>binutils</tt> version 2.22 or later.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>EMERGENCY ABORT: INFINITE RECURSION DETECTED</tt></b>" shown when compiling.</td> + *    <td>Make sure you are using an up to date version of GNU Make when compiling. This error is a safety system added to the mid-level makefiles, to prevent an issue with + *        GNU make or other variants of Make causing an infinitely recursive build.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Unsupported architecture "<i>{X}</i>"</tt></b>" shown when compiling.</td> + *    <td>Ensure your makefile's <tt>ARCH</tt> setting is set to one of the architecture names (case-sensitive) supported by the version of LUFA you are compiling against.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Makefile <i>{X}</i> value not set</tt></b>" shown when compiling.</td> + *    <td>The specified Makefile value was not configured in your project's makefile or on the command line, and the nominated setting is required by one or more LUFA + *        build system modules. Define the value in your project makefile and try again.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Makefile <i>{X}</i> option cannot be blank</tt></b>" shown when compiling.</td> + *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to an empty value. For the nominated configuration + *        option, an empty value is not allowed. Define the nominated setting to a correct non-blank value and try again.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Makefile <i>{X}</i> option must be Y or N</tt></b>" shown when compiling.</td> + *    <td>The specified Makefile value was configured in your project's makefile or on the command line, but was set to a value other than a Y (for "Yes") or "N" (for "No"). + *        This configuration option is required to be one of the aforementioned boolean values, and other values are invalid. Set this option to either Y or N and try again.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Unknown input source file formats: <i>{X}</i></tt></b>" shown when compiling.</td> + *    <td>The nominated source files, specified in your project's makefile in the <tt>SRC</tt> configuration option, has an extension that the LUFA build system does not + *        recognise. The file extensions are case sensitive, and must be one of the supported formats (<tt>*.c</tt>, <tt>*.cpp</tt> or <tt>*.S</tt>).</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Cannot build with OBJDIR parameter set - one or more object file name is not unique</tt></b>" shown when compiling.</td> + *    <td>When a project is built with a non-empty <tt>OBJDIR</tt> object directory name set, all input source files must have unique names, excluding extension and path. + *        This means that input files that are named identically and differ only by their path or extension are invalid when this mode is used.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Source file does not exist: <i>{X}</i></tt></b>" shown when compiling.</td> + *    <td>The nominated input source file, specified in the user project's <tt>SRC</tt> parameter, could not be found. Ensure the source file exists and the absolute or + *        relative path given in the user project makefile is correct and try again.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>Doxygen configuration file <i>{X}</i> does not exist</tt></b>" shown when upgrading a Doxygen configuration file.</td> + *    <td>The nominated Doxygen configuration file, specified in the user project's <tt>DOXYGEN_CONF</tt> parameter, could not be found. Ensure the configuration file exists + *        and the absolute or relative path given in the user project makefile is correct and try again, or run the appropriate makefile target to generate a new configuration + *        file.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>avr-gcc: error: unrecognized option '<i>{X}</i>'</tt></b>" shown when compiling.</td> + *    <td>An unrecognised option was supplied to the compiler, usually in the <tt>C_FLAGS</tt>, <tt>CPP_FLAGS</tt>, <tt>ASM_FLAGS</tt> or <tt>CC_FLAGS</tt> configuration + *        options. The nominated compiler switch may be invalid, or unsupported by the version of AVR-GCC on the host system. Remove the unrecognised flag if invalid, or + *        upgrade to the latest AVR-GCC. If the option is a valid linker option, use the prefix "-Wl," to ensure it is passed to the linker correctly.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>makefile:{X}: {Y}.mk: No such file or directory</tt></b>" shown when make is invoked.</td> + *    <td>The path to the nominated makefile module was incorrect. This usually indicates that the makefile <tt>LUFA_PATH</tt> option is not set to a valid relative or + *        absolute path to the LUFA library core.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>fatal error: LUFAConfig.h: No such file or directory</tt></b>" shown when compiling.</td> + *    <td>The <tt>USE_LUFA_CONFIG_HEADER</tt> compile time option was set in the user project makefile, but the user supplied <tt>LUFAConfig.h</tt> header could not be + *        found. Ensure that the directory that contains this configuration file is correctly passed to the compiler via the -I switch in the makefile <tt>CC_FLAGS</tt> + *        parameter.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>ld.exe: section .apitable_trampolines loaded at <i>{X}</i> overlaps section .text</tt></b>" shown when compiling a bootloader.</td> + *    <td>The bootloader is compiling too large for the given <tt>FLASH_SIZE_KB</tt> and <tt>BOOT_SECTION_SIZE_KB</tt> parameters set in the bootloader makefile. This + *        usually indicates that these values are incorrect for the specified device the bootloader is targeting. If these values are correct, a newer version of the + *        compiler may need to be used to ensure that the bootloader is built within the section size constraints of the target device.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>unknown MCU '<i>{X}</i>' specified</tt></b>" shown when compiling.</td> + *    <td>The specified microcontroller device model name set in the user application's makefile as the <tt>MCU</tt> parameter is incorrect, or unsupported by the + *        version of the compiler being used. Make sure the model name is correct, or upgrade to the latest Atmel Toolchain to obtain newer device support.</td> + *   </tr> + *   <tr> + *    <td>Error "<b><tt>undefined reference to `<i>{X}</i>'</tt></b>" shown when compiling.</td> + *    <td>This is usually caused by a missing source file in the user application's <tt>SRC</tt> configuration parameter. If the indicated symbol is one from the LUFA + *        library, you may be missing a LUFA source makefile module (see \ref Page_BuildModule_SOURCES).</td> + *   </tr> + *  </table> + * + *  For troubleshooting other errors you encounter, please see \ref Sec_ProjectHelp. + */ diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index d2350f27c..e4c8aecb2 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -21,10 +21,23 @@ VPATH_SRC := $(VPATH)  vpath %.c $(VPATH_SRC)  vpath %.h $(VPATH_SRC)  vpath %.cpp $(VPATH_SRC) +vpath %.cc $(VPATH_SRC)  vpath %.hpp $(VPATH_SRC)  vpath %.S $(VPATH_SRC)  VPATH := +# Convert all SRC to OBJ +define OBJ_FROM_SRC +$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC))))) +endef +$(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) + +# Define a list of all objects +OBJ := $(foreach OUTPUT,$(OUTPUTS),$($(OUTPUT)_OBJ)) + +MASTER_OUTPUT := $(firstword $(OUTPUTS)) + +  # Output format. (can be srec, ihex, binary)  FORMAT = ihex @@ -34,50 +47,8 @@ FORMAT = ihex  #     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)  OPT = s -COLOR ?= true - -ifeq ($(COLOR),true) -	NO_COLOR=\033[0m -	OK_COLOR=\033[32;01m -	ERROR_COLOR=\033[31;01m -	WARN_COLOR=\033[33;01m -	BLUE=\033[0;34m -	BOLD=\033[1m -endif -  AUTOGEN ?= false -ifneq ($(shell awk --version 2>/dev/null),) -	AWK=awk -else -	AWK=cat && test -endif - -OK_STRING=$(OK_COLOR)[OK]$(NO_COLOR)\n -ERROR_STRING=$(ERROR_COLOR)[ERRORS]$(NO_COLOR)\n -WARN_STRING=$(WARN_COLOR)[WARNINGS]$(NO_COLOR)\n - -ifndef $(SILENT) -	SILENT = false -endif - -TAB_LOG = printf "\n$$LOG\n\n" | $(AWK) '{ sub(/^/," | "); print }' -TAB_LOG_PLAIN = printf "$$LOG\n" -AWK_STATUS = $(AWK) '{ printf " %-10s\n", $$1; }' -AWK_CMD = $(AWK) '{ printf "%-99s", $$0; }' -PRINT_ERROR = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) && exit 1 -PRINT_WARNING = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG) -PRINT_ERROR_PLAIN = ($(SILENT) ||printf " $(ERROR_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) && exit 1 -PRINT_WARNING_PLAIN = ($(SILENT) || printf " $(WARN_STRING)" | $(AWK_STATUS)) && $(TAB_LOG_PLAIN) -PRINT_OK = $(SILENT) || printf " $(OK_STRING)" | $(AWK_STATUS) -BUILD_CMD = LOG=$$($(CMD) 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING); else $(PRINT_OK); fi; - -# List any extra directories to look for include files here. -#     Each directory must be seperated by a space. -#     Use forward slashes for directory separators. -#     For a directory that has spaces, enclose it in quotes. -EXTRAINCDIRS += $(subst :, ,$(VPATH_SRC)) -  # Compiler flag to set the C Standard level.  #     c89   = "ANSI" C @@ -88,17 +59,18 @@ CSTANDARD = -std=gnu99  # Place -D or -U options here for C sources -CDEFS += $(OPT_DEFS) +#CDEFS +=  # Place -D or -U options here for ASM sources -ADEFS += $(OPT_DEFS) +#ADEFS +=  # Place -D or -U options here for C++ sources  #CPPDEFS += -D__STDC_LIMIT_MACROS  #CPPDEFS += -D__STDC_CONSTANT_MACROS -CPPDEFS += $(OPT_DEFS) +#CPPDEFS += + @@ -126,11 +98,7 @@ CFLAGS += -Wstrict-prototypes  #CFLAGS += -Wunreachable-code  #CFLAGS += -Wsign-compare  CFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))  CFLAGS += $(CSTANDARD) -ifdef CONFIG_H -    CFLAGS += -include $(CONFIG_H) -endif  #---------------- Compiler Options C++ ---------------- @@ -153,12 +121,7 @@ CPPFLAGS += -Wundef  #CPPFLAGS += -Wunreachable-code  #CPPFLAGS += -Wsign-compare  CPPFLAGS += -Wa,-adhlns=$(@:%.o=%.lst) -CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))  #CPPFLAGS += $(CSTANDARD) -ifdef CONFIG_H -    CPPFLAGS += -include $(CONFIG_H) -endif -  #---------------- Assembler Options ----------------  #  -Wa,...:   tell GCC to pass this to the assembler. @@ -169,11 +132,8 @@ endif  #             files -- see avr-libc docs [FIXME: not yet described there]  #  -listing-cont-lines: Sets the maximum number of continuation lines of hex  #       dump that will be displayed for a given single line of source input. -ASFLAGS += $(ADEFS) -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -ifdef CONFIG_H -    ASFLAGS += -include $(CONFIG_H) -endif +ASFLAGS += $(ADEFS)  +ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100  #---------------- Library Options ----------------  # Minimalistic printf version @@ -201,6 +161,7 @@ SCANF_LIB =  MATH_LIB = -lm +CREATE_MAP ?= yes  #---------------- Linker Options ---------------- @@ -211,7 +172,10 @@ MATH_LIB = -lm  # Comennt out "--relax" option to avoid a error such:  # 	(.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12'  # -LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref + +ifeq ($(CREATE_MAP),yes) +	LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref +endif  #LDFLAGS += -Wl,--relax  LDFLAGS += $(EXTMEMOPTS)  LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS)) @@ -228,48 +192,6 @@ COPY = cp  WINSHELL = cmd  SECHO = $(SILENT) || echo -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = -------- begin -------- -MSG_END = --------  end  -------- -MSG_SIZE_BEFORE = Size before: -MSG_SIZE_AFTER = Size after: -MSG_COFF = Converting to AVR COFF: -MSG_EXTENDED_COFF = Converting to AVR Extended COFF: -MSG_FLASH = Creating load file for Flash: -MSG_EEPROM = Creating load file for EEPROM: -MSG_BIN = Creating binary load file for Flash: -MSG_EXTENDED_LISTING = Creating Extended Listing: -MSG_SYMBOL_TABLE = Creating Symbol Table: -MSG_LINKING = Linking: -MSG_COMPILING = Compiling: -MSG_COMPILING_CPP = Compiling: -MSG_ASSEMBLING = Assembling: -MSG_CLEANING = Cleaning project: -MSG_CREATING_LIBRARY = Creating library: -MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \ -	Some git sub-modules are out of date or modified, please consider runnning:$(BOLD)\n\ -	git submodule sync --recursive\n\ -	git submodule update --init --recursive$(NO_COLOR)\n\n\ -	You can ignore this warning if you are not compiling any ChibiOS keyboards,\n\ -	or if you have modified the ChibiOS libraries yourself. \n\n - - -# Define all object files. -OBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(patsubst %.cpp,$(OBJDIR)/%.o,$(patsubst %.S,$(OBJDIR)/%.o,$(SRC)))) -# The files in the lib folder are shared between all keymaps, so generate that folder name by removing -# the keymap from the name -KBOBJDIR=$(subst _$(KEYMAP),,$(OBJDIR)) -# And fixup the object files to match -LIBOBJ = $(foreach v,$(OBJ),$(if $(findstring /lib/,$v),$v)) -NONLIBOBJ := $(filter-out $(LIBOBJ),$(OBJ)) -LIBOBJ := $(subst _$(KEYMAP)/,/,$(LIBOBJ)) -OBJ := $(LIBOBJ) $(NONLIBOBJ) - -# Define all listing files. -LST = $(patsubst %.c,$(OBJDIR)/%.lst,$(patsubst %.cpp,$(OBJDIR)/%.lst,$(patsubst %.S,$(OBJDIR)/%.lst,$(SRC)))) -  # Compiler flags to generate dependency files.  #GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d @@ -285,14 +207,6 @@ ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS)  MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) -# Default target. -all: build sizeafter - -# Change the build target to build a HEX file or a library. -build: elf hex -#build: elf hex eep lss sym -#build: lib -  elf: $(BUILD_DIR)/$(TARGET).elf  hex: $(BUILD_DIR)/$(TARGET).hex @@ -302,15 +216,6 @@ sym: $(BUILD_DIR)/$(TARGET).sym  LIBNAME=lib$(TARGET).a  lib: $(LIBNAME) -check_submodule: -	git submodule status --recursive | \ -	while IFS= read -r x; do \ -		case "$$x" in \ -			\ *) ;; \ -			*) printf "$(MSG_SUBMODULE_DIRTY)";break;; \ -		esac \ -	done -  # Display size of file.  HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex  #ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf @@ -364,91 +269,87 @@ gccversion :  	$(eval CMD=$(BIN) $< $@ || exit 0)  	@$(BUILD_CMD) -# Create library from object files. -.SECONDARY : $(BUILD_DIR)/$(TARGET).a -.PRECIOUS : $(OBJ) -%.a: $(OBJ) -	@$(SILENT) || printf "$(MSG_CREATING_LIBRARY) $@" | $(AWK_CMD) -	$(eval CMD=$(AR) $@ $(OBJ) ) -	@$(BUILD_CMD) - -BEGIN = gccversion check_submodule sizebefore +BEGIN = gccversion sizebefore  # Link: create ELF output file from object files.  .SECONDARY : $(BUILD_DIR)/$(TARGET).elf  .PRECIOUS : $(OBJ)  # Note the obj.txt depeendency is there to force linking if a source file is deleted -%.elf: $(OBJ) $(OBJDIR)/cflags.txt $(OBJDIR)/ldflags.txt $(OBJDIR)/obj.txt | $(BEGIN) +%.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN)  	@$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD)  	$(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS))  	@$(BUILD_CMD) +	  define GEN_OBJRULE +$1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC)) +ifdef $1_CONFIG +$1_CONFIG_FLAGS += -include $$($1_CONFIG) +endif +$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +$1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +  # Compile: create object files from C source files.  $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN)  	@mkdir -p $$(@D)  	@$$(SILENT) || printf "$$(MSG_COMPILING) $$<" | $$(AWK_CMD) -	$$(eval CMD=$$(CC) -c $$(ALL_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) +	$$(eval CMD := $$(CC) -c $$($1_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP))  	@$$(BUILD_CMD)  # Compile: create object files from C++ source files.  $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN)  	@mkdir -p $$(@D)  	@$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) -	$$(eval CMD=$$(CC) -c $$(ALL_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) -	@$(BUILD_CMD) +	$$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) +	@$$(BUILD_CMD) + +$1/%.o : %.cc $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) +	@mkdir -p $$(@D) +	@$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) +	$$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) +	@$$(BUILD_CMD)  # Assemble: create object files from assembler source files.  $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN)  	@mkdir -p $$(@D)  	@$(SILENT) || printf "$$(MSG_ASSEMBLING) $$<" | $$(AWK_CMD) -	$$(eval CMD=$$(CC) -c $$(ALL_ASFLAGS) $$< -o $$@) +	$$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@)  	@$$(BUILD_CMD)  $1/force:  $1/cflags.txt: $1/force -	echo '$$(ALL_CFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CFLAGS)' > $$@ +	echo '$$($1_CFLAGS)' | cmp -s - $$@ || echo '$$($1_CFLAGS)' > $$@  $1/cppflags.txt: $1/force -	echo '$$(ALL_CPPFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CPPFLAGS)' > $$@ +	echo '$$($1_CPPFLAGS)' | cmp -s - $$@ || echo '$$($1_CPPFLAGS)' > $$@  $1/asflags.txt: $1/force -	echo '$$(ALL_ASFLAGS)' | cmp -s - $$@ || echo '$$(ALL_ASFLAGS)' > $$@ - -$1/ldflags.txt: $1/force -	echo '$$(LDFLAGS)' | cmp -s - $$@ || echo '$$(LDFLAGS)' > $$@ - -$1/obj.txt: $1/force -	echo '$$(OBJ)' | cmp -s - $$@ || echo '$$(OBJ)' > $$@ +	echo '$$($1_ASFLAGS)' | cmp -s - $$@ || echo '$$($1_ASFLAGS)' > $$@  $1/compiler.txt: $1/force  	$$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@  endef +.PRECIOUS: $(MASTER_OUTPUT)/obj.txt +$(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force +	echo '$(OBJ)' | cmp -s - $@ || echo '$(OBJ)' > $@ + +.PRECIOUS: $(MASTER_OUTPUT)/ldflags.txt +$(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force +	echo '$(LDFLAGS)' | cmp -s - $@ || echo '$(LDFLAGS)' > $@ + +  # We have to use static rules for the .d files for some reason  DEPS = $(patsubst %.o,%.d,$(OBJ))  # Keep the .d files  .PRECIOUS: $(DEPS)  # Empty rule to force recompilation if the .d file is missing  $(DEPS): +	 -# Since the object files could be in two different folders, generate -# separate rules for them, rather than having too generic rules -$(eval $(call GEN_OBJRULE,$(OBJDIR))) -$(eval $(call GEN_OBJRULE,$(KBOBJDIR))) - -# Compile: create assembler files from C source files. -%.s : %.c | $(BEGIN) -	@$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) -	$(eval CMD=$(CC) -S $(ALL_CFLAGS) $< -o $@) -	@$(BUILD_CMD) - -# Compile: create assembler files from C++ source files. -%.s : %.cpp | $(BEGIN) -	@$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) -	$(eval CMD=$(CC) -S $(ALL_CPPFLAGS) $< -o $@) -	@$(BUILD_CMD) +$(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT))))  # Create preprocessed source for use in sending a bug report.  %.i : %.c | $(BEGIN) @@ -456,71 +357,19 @@ $(eval $(call GEN_OBJRULE,$(KBOBJDIR)))  # Target: clean project.  clean: -	$(REMOVE) -r $(OBJDIR) 2>/dev/null -	$(REMOVE) -r $(KBOBJDIR) 2>/dev/null +	$(foreach OUTPUT,$(OUTPUTS), $(REMOVE) -r $(OUTPUT) 2>/dev/null)  	$(REMOVE) $(BUILD_DIR)/$(TARGET).*  show_path:  	@echo VPATH=$(VPATH)  	@echo SRC=$(SRC) - -SUBDIRS := $(filter-out %/util/ %/doc/ %/keymaps/ %/old_keymap_files/,$(dir $(wildcard $(TOP_DIR)/keyboards/**/*/Makefile))) -SUBDIRS := $(SUBDIRS) $(dir $(wildcard $(TOP_DIR)/keyboards/*/.)) -SUBDIRS := $(sort $(SUBDIRS)) -# $(error $(SUBDIRS)) -all-keyboards-defaults-%: -	@for x in $(SUBDIRS) ; do \ -		printf "Compiling with default: $$x" | $(AWK_CMD); \ -		LOG=$$($(MAKE) -C $$x $(subst all-keyboards-defaults-,,$@) VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ -	done - -all-keyboards-defaults: all-keyboards-defaults-all - -KEYBOARDS := $(SUBDIRS:$(TOP_DIR)/keyboards/%/=/keyboards/%) -all-keyboards-all: $(addsuffix -all,$(KEYBOARDS)) -all-keyboards-clean: $(addsuffix -clean,$(KEYBOARDS)) -all-keyboards: all-keyboards-all - -define make_keyboard -$(eval KEYBOARD=$(patsubst /keyboards/%,%,$1)) -$(eval SUBPROJECT=$(lastword $(subst /, ,$(KEYBOARD)))) -$(eval KEYBOARD=$(firstword $(subst /, ,$(KEYBOARD)))) -$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.)))) -$(eval KEYMAPS+=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/$(SUBPROJECT)/keymaps/*/.)))) -@for x in $(KEYMAPS) ; do \ -	printf "Compiling $(BOLD)$(KEYBOARD)/$(SUBPROJECT)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$0; }'; \ -	LOG=$$($(MAKE) -C $(TOP_DIR)$1 $2 keymap=$$x VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ -done -endef - -define make_keyboard_helper -# Just remove the -all and so on from the first argument and pass it forward -$(call make_keyboard,$(subst -$2,,$1),$2) -endef - -/keyboards/%-all: -	$(call make_keyboard_helper,$@,all) -/keyboards/%-clean: -	$(call make_keyboard_helper,$@,clean) -/keyboards/%: -	$(call make_keyboard_helper,$@,all) - -all-keymaps-%: -	$(eval MAKECONFIG=$(call get_target,all-keymaps,$@)) -	$(eval KEYMAPS=$(notdir $(patsubst %/.,%,$(wildcard $(TOP_DIR)/keyboards/$(KEYBOARD)/keymaps/*/.)))) -	@for x in $(KEYMAPS) ; do \ -		printf "Compiling $(BOLD)$(KEYBOARD)$(NO_COLOR) with $(BOLD)$$x$(NO_COLOR)" | $(AWK) '{ printf "%-118s", $$0; }'; \ -		LOG=$$($(MAKE) $(subst all-keymaps-,,$@) keyboard=$(KEYBOARD) keymap=$$x VERBOSE=$(VERBOSE) COLOR=$(COLOR) SILENT=true 2>&1) ; if [ $$? -gt 0 ]; then $(PRINT_ERROR_PLAIN); elif [ "$$LOG" != "" ] ; then $(PRINT_WARNING_PLAIN); else $(PRINT_OK); fi; \ -	done - -all-keymaps: all-keymaps-all +	@echo OBJ=$(OBJ)  # Create build directory -$(shell mkdir $(BUILD_DIR) 2>/dev/null) +$(shell mkdir -p $(BUILD_DIR) 2>/dev/null)  # Create object files directory -$(shell mkdir $(OBJDIR) 2>/dev/null) -$(shell mkdir $(KBOBJDIR) 2>/dev/null) +$(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null)))  # Include the dependency files.  -include $(patsubst %.o,%.d,$(OBJ)) @@ -528,8 +377,6 @@ $(shell mkdir $(KBOBJDIR) 2>/dev/null)  # Listing of phony targets.  .PHONY : all finish sizebefore sizeafter gccversion \ -build elf hex eep lss sym coff extcoff check_submodule \ +build elf hex eep lss sym coff extcoff \  clean clean_list debug gdb-config show_path \ -program teensy dfu flip dfu-ee flip-ee dfu-start \ -all-keyboards-defaults all-keyboards all-keymaps \ -all-keyboards-defaults-% all-keyboards-% all-keymaps-% +program teensy dfu flip dfu-ee flip-ee dfu-start 
\ No newline at end of file  | 
