Revision 978b99e5

View differences:

LUFA/CodeTemplates/DriverStubs/Buttons.h
1
/*
2
             LUFA Library
3
     Copyright (C) Dean Camera, 2011.
4

  
5
  dean [at] fourwalledcubicle [dot] com
6
           www.lufa-lib.org
7
*/
8

  
9
/*
10
  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
11

  
12
  Permission to use, copy, modify, distribute, and sell this
13
  software and its documentation for any purpose is hereby granted
14
  without fee, provided that the above copyright notice appear in
15
  all copies and that both that the copyright notice and this
16
  permission notice and warranty disclaimer appear in supporting
17
  documentation, and that the name of the author not be used in
18
  advertising or publicity pertaining to distribution of the
19
  software without specific, written prior permission.
20

  
21
  The author disclaim all warranties with regard to this
22
  software, including all implied warranties of merchantability
23
  and fitness.  In no event shall the author be liable for any
24
  special, indirect or consequential damages or any damages
25
  whatsoever resulting from loss of use, data or profits, whether
26
  in an action of contract, negligence or other tortious action,
27
  arising out of or in connection with the use or performance of
28
  this software.
29
*/
30

  
31
/*
32
   This is a stub driver header file, for implementing custom board
33
   layout hardware with compatible LUFA board specific drivers. If
34
   the library is configured to use the BOARD_USER board mode, this
35
   driver file should be completed and copied into the "/Board/" folder
36
   inside the application's folder.
37

  
38
   This stub is for the board-specific component of the LUFA Buttons driver,
39
   for the control of physical board-mounted GPIO pushbuttons.
40
*/
41

  
42
#ifndef __BUTTONS_USER_H__
43
#define __BUTTONS_USER_H__
44

  
45
	/* Includes: */
46
		// TODO: Add any required includes here
47

  
48
	/* Enable C linkage for C++ Compilers: */
49
		#if defined(__cplusplus)
50
			extern "C" {
51
		#endif
52

  
53
	/* Preprocessor Checks: */
54
		#if !defined(__INCLUDE_FROM_BUTTONS_H)
55
			#error Do not include this file directly. Include LUFA/Drivers/Board/Buttons.h instead.
56
		#endif
57

  
58
	/* Public Interface - May be used in end-application: */
59
		/* Macros: */
60
			/** Button mask for the first button on the board. */
61
			#define BUTTONS_BUTTON1          // TODO: Add mask for first board button here
62

  
63
		/* Inline Functions: */
64
		#if !defined(__DOXYGEN__)
65
			static inline void Buttons_Init(void)
66
			{
67
				// TODO: Initialize the appropriate port pins as an inputs here, with pull-ups
68
			}
69

  
70
			static inline uint8_t Buttons_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
71
			static inline uint8_t Buttons_GetStatus(void)
72
			{
73
				// TODO: Return current button status here, debounced if required
74
			}
75
		#endif
76

  
77
	/* Disable C linkage for C++ Compilers: */
78
		#if defined(__cplusplus)
79
			}
80
		#endif
81

  
82
#endif
83

  
LUFA/CodeTemplates/DriverStubs/Dataflash.h
1
/*
2
             LUFA Library
3
     Copyright (C) Dean Camera, 2011.
4

  
5
  dean [at] fourwalledcubicle [dot] com
6
           www.lufa-lib.org
7
*/
8

  
9
/*
10
  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
11

  
12
  Permission to use, copy, modify, distribute, and sell this
13
  software and its documentation for any purpose is hereby granted
14
  without fee, provided that the above copyright notice appear in
15
  all copies and that both that the copyright notice and this
16
  permission notice and warranty disclaimer appear in supporting
17
  documentation, and that the name of the author not be used in
18
  advertising or publicity pertaining to distribution of the
19
  software without specific, written prior permission.
20

  
21
  The author disclaim all warranties with regard to this
22
  software, including all implied warranties of merchantability
23
  and fitness.  In no event shall the author be liable for any
24
  special, indirect or consequential damages or any damages
25
  whatsoever resulting from loss of use, data or profits, whether
26
  in an action of contract, negligence or other tortious action,
27
  arising out of or in connection with the use or performance of
28
  this software.
29
*/
30

  
31
/*
32
   This is a stub driver header file, for implementing custom board
33
   layout hardware with compatible LUFA board specific drivers. If
34
   the library is configured to use the BOARD_USER board mode, this
35
   driver file should be completed and copied into the "/Board/" folder
36
   inside the application's folder.
37

  
38
   This stub is for the board-specific component of the LUFA Dataflash
39
   driver.
40
*/
41

  
42
#ifndef __DATAFLASH_USER_H__
43
#define __DATAFLASH_USER_H__
44

  
45
	/* Includes: */
46
		// TODO: Add any required includes here
47

  
48
	/* Preprocessor Checks: */
49
		#if !defined(__INCLUDE_FROM_DATAFLASH_H)
50
			#error Do not include this file directly. Include LUFA/Drivers/Board/Dataflash.h instead.
51
		#endif
52

  
53
	/* Private Interface - For use in library only: */
54
	#if !defined(__DOXYGEN__)
55
		/* Macros: */
56
			#define DATAFLASH_CHIPCS_MASK                // TODO: Replace this with a mask of all the /CS pins of all Dataflashes
57
			#define DATAFLASH_CHIPCS_DDR                 // TODO: Replace with the DDR register name for the board's Dataflash ICs
58
			#define DATAFLASH_CHIPCS_PORT                // TODO: Replace with the PORT register name for the board's Dataflash ICs
59
	#endif
60

  
61
	/* Public Interface - May be used in end-application: */
62
		/* Macros: */
63
			/** Constant indicating the total number of dataflash ICs mounted on the selected board. */
64
			#define DATAFLASH_TOTALCHIPS                 1 // TODO: Replace with the number of Dataflashes on the board, max 2
65

  
66
			/** Mask for no dataflash chip selected. */
67
			#define DATAFLASH_NO_CHIP                    DATAFLASH_CHIPCS_MASK
68

  
69
			/** Mask for the first dataflash chip selected. */
70
			#define DATAFLASH_CHIP1                      // TODO: Replace with mask to hold /CS of first Dataflash low, and all others high
71

  
72
			/** Mask for the second dataflash chip selected. */
73
			#define DATAFLASH_CHIP2                      // TODO: Replace with mask to hold /CS of second Dataflash low, and all others high
74

  
75
			/** Internal main memory page size for the board's dataflash ICs. */
76
			#define DATAFLASH_PAGE_SIZE                  // TODO: Replace with the page size for the Dataflash ICs
77

  
78
			/** Total number of pages inside each of the board's dataflash ICs. */
79
			#define DATAFLASH_PAGES                      // TODO: Replace with the total number of pages inside one of the Dataflash ICs
80

  
81
		/* Inline Functions: */
82
			/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
83
			 *  The microcontroller's SPI driver MUST be initialized before any of the dataflash commands are used.
84
			 */
85
			static inline void Dataflash_Init(void)
86
			{
87
				DATAFLASH_CHIPCS_DDR  |= DATAFLASH_CHIPCS_MASK;
88
				DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK;
89
			}
90

  
91
			/** Determines the currently selected dataflash chip.
92
			 *
93
			 *  \return Mask of the currently selected Dataflash chip, either \ref DATAFLASH_NO_CHIP if no chip is selected
94
			 *          or a DATAFLASH_CHIPn mask (where n is the chip number).
95
			 */
96
			static inline uint8_t Dataflash_GetSelectedChip(void) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;
97
			static inline uint8_t Dataflash_GetSelectedChip(void)
98
			{
99
				return (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK);
100
			}
101

  
102
			/** Selects the given dataflash chip.
103
			 *
104
			 *  \param[in]  ChipMask  Mask of the Dataflash IC to select, in the form of DATAFLASH_CHIPn mask (where n is
105
			 *              the chip number).
106
			 */
107
			static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
108
			static inline void Dataflash_SelectChip(const uint8_t ChipMask)
109
			{
110
				DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT & ~DATAFLASH_CHIPCS_MASK) | ChipMask);
111
			}
112

  
113
			/** Deselects the current dataflash chip, so that no dataflash is selected. */
114
			static inline void Dataflash_DeselectChip(void) ATTR_ALWAYS_INLINE;
115
			static inline void Dataflash_DeselectChip(void)
116
			{
117
				Dataflash_SelectChip(DATAFLASH_NO_CHIP);
118
			}
119

  
120
			/** Selects a dataflash IC from the given page number, which should range from 0 to
121
			 *  ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one
122
			 *  dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside
123
			 *  the total number of pages contained in the boards dataflash ICs, all dataflash ICs
124
			 *  are deselected.
125
			 *
126
			 *  \param[in] PageAddress  Address of the page to manipulate, ranging from
127
			 *                          0 to ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1).
128
			 */
129
			static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress)
130
			{
131
				Dataflash_DeselectChip();
132

  
133
				if (PageAddress >= (DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS))
134
				  return;
135

  
136
				#if (DATAFLASH_TOTALCHIPS == 2)
137
					if (PageAddress & 0x01)
138
					  Dataflash_SelectChip(DATAFLASH_CHIP2);
139
					else
140
					  Dataflash_SelectChip(DATAFLASH_CHIP1);
141
				#else
142
					Dataflash_SelectChip(DATAFLASH_CHIP1);
143
				#endif
144
			}
145

  
146
			/** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive
147
			 *  a new command.
148
			 */
149
			static inline void Dataflash_ToggleSelectedChipCS(void)
150
			{
151
				uint8_t SelectedChipMask = Dataflash_GetSelectedChip();
152

  
153
				Dataflash_DeselectChip();
154
				Dataflash_SelectChip(SelectedChipMask);
155
			}
156

  
157
			/** Spin-loops while the currently selected dataflash is busy executing a command, such as a main
158
			 *  memory page program or main memory to buffer transfer.
159
			 */
160
			static inline void Dataflash_WaitWhileBusy(void)
161
			{
162
				Dataflash_ToggleSelectedChipCS();
163
				Dataflash_SendByte(DF_CMD_GETSTATUS);
164
				while (!(Dataflash_ReceiveByte() & DF_STATUS_READY));
165
				Dataflash_ToggleSelectedChipCS();
166
			}
167

  
168
			/** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with
169
			 *  dataflash commands which require a complete 24-bit address.
170
			 *
171
			 *  \param[in] PageAddress  Page address within the selected dataflash IC
172
			 *  \param[in] BufferByte   Address within the dataflash's buffer
173
			 */
174
			static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte)
175
			{
176
				#if (DATAFLASH_TOTALCHIPS == 2)
177
					PageAddress >>= 1;
178
				#endif
179

  
180
				Dataflash_SendByte(PageAddress >> 5);
181
				Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8));
182
				Dataflash_SendByte(BufferByte);
183
			}
184

  
185
#endif
186

  
LUFA/CodeTemplates/DriverStubs/Joystick.h
1
/*
2
             LUFA Library
3
     Copyright (C) Dean Camera, 2011.
4

  
5
  dean [at] fourwalledcubicle [dot] com
6
           www.lufa-lib.org
7
*/
8

  
9
/*
10
  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
11

  
12
  Permission to use, copy, modify, distribute, and sell this
13
  software and its documentation for any purpose is hereby granted
14
  without fee, provided that the above copyright notice appear in
15
  all copies and that both that the copyright notice and this
16
  permission notice and warranty disclaimer appear in supporting
17
  documentation, and that the name of the author not be used in
18
  advertising or publicity pertaining to distribution of the
19
  software without specific, written prior permission.
20

  
21
  The author disclaim all warranties with regard to this
22
  software, including all implied warranties of merchantability
23
  and fitness.  In no event shall the author be liable for any
24
  special, indirect or consequential damages or any damages
25
  whatsoever resulting from loss of use, data or profits, whether
26
  in an action of contract, negligence or other tortious action,
27
  arising out of or in connection with the use or performance of
28
  this software.
29
*/
30

  
31
/*
32
   This is a stub driver header file, for implementing custom board
33
   layout hardware with compatible LUFA board specific drivers. If
34
   the library is configured to use the BOARD_USER board mode, this
35
   driver file should be completed and copied into the "/Board/" folder
36
   inside the application's folder.
37

  
38
   This stub is for the board-specific component of the LUFA Joystick
39
   driver, for a digital four-way (plus button) joystick.
40
*/
41

  
42
#ifndef __JOYSTICK_USER_H__
43
#define __JOYSTICK_USER_H__
44

  
45
	/* Includes: */
46
		// TODO: Add any required includes here
47

  
48
	/* Enable C linkage for C++ Compilers: */
49
		#if defined(__cplusplus)
50
			extern "C" {
51
		#endif
52

  
53
	/* Preprocessor Checks: */
54
		#if !defined(__INCLUDE_FROM_JOYSTICK_H)
55
			#error Do not include this file directly. Include LUFA/Drivers/Board/Joystick.h instead.
56
		#endif
57

  
58
	/* Public Interface - May be used in end-application: */
59
		/* Macros: */
60
			/** Mask for the joystick being pushed in the left direction. */
61
			#define JOY_LEFT                  // TODO: Add mask to indicate joystick left position here
62

  
63
			/** Mask for the joystick being pushed in the right direction. */
64
			#define JOY_RIGHT                 // TODO: Add mask to indicate joystick right position here
65

  
66
			/** Mask for the joystick being pushed in the upward direction. */
67
			#define JOY_UP                    // TODO: Add mask to indicate joystick up position here
68

  
69
			/** Mask for the joystick being pushed in the downward direction. */
70
			#define JOY_DOWN                  // TODO: Add mask to indicate joystick down position here
71

  
72
			/** Mask for the joystick being pushed inward. */
73
			#define JOY_PRESS                 // TODO: Add mask to indicate joystick pressed position here
74

  
75
		/* Inline Functions: */
76
		#if !defined(__DOXYGEN__)
77
			static inline void Joystick_Init(void)
78
			{
79
				// TODO: Initialize joystick port pins as inputs with pull-ups
80
			}
81

  
82
			static inline uint8_t Joystick_GetStatus(void) ATTR_WARN_UNUSED_RESULT;
83
			static inline uint8_t Joystick_GetStatus(void)
84
			{
85
				// TODO: Return current joystick position data which can be obtained by masking against the JOY_* macros
86
			}
87
		#endif
88

  
89
	/* Disable C linkage for C++ Compilers: */
90
		#if defined(__cplusplus)
91
			}
92
		#endif
93

  
94
#endif
95

  
LUFA/CodeTemplates/DriverStubs/LEDs.h
1
/*
2
             LUFA Library
3
     Copyright (C) Dean Camera, 2011.
4

  
5
  dean [at] fourwalledcubicle [dot] com
6
           www.lufa-lib.org
7
*/
8

  
9
/*
10
  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
11

  
12
  Permission to use, copy, modify, distribute, and sell this
13
  software and its documentation for any purpose is hereby granted
14
  without fee, provided that the above copyright notice appear in
15
  all copies and that both that the copyright notice and this
16
  permission notice and warranty disclaimer appear in supporting
17
  documentation, and that the name of the author not be used in
18
  advertising or publicity pertaining to distribution of the
19
  software without specific, written prior permission.
20

  
21
  The author disclaim all warranties with regard to this
22
  software, including all implied warranties of merchantability
23
  and fitness.  In no event shall the author be liable for any
24
  special, indirect or consequential damages or any damages
25
  whatsoever resulting from loss of use, data or profits, whether
26
  in an action of contract, negligence or other tortious action,
27
  arising out of or in connection with the use or performance of
28
  this software.
29
*/
30

  
31
/*
32
   This is a stub driver header file, for implementing custom board
33
   layout hardware with compatible LUFA board specific drivers. If
34
   the library is configured to use the BOARD_USER board mode, this
35
   driver file should be completed and copied into the "/Board/" folder
36
   inside the application's folder.
37

  
38
   This stub is for the board-specific component of the LUFA LEDs driver,
39
   for the LEDs (up to four) mounted on most development boards.
40
*/
41

  
42
#ifndef __LEDS_USER_H__
43
#define __LEDS_USER_H__
44

  
45
	/* Includes: */
46
		// TODO: Add any required includes here
47

  
48
/* Enable C linkage for C++ Compilers: */
49
		#if defined(__cplusplus)
50
			extern "C" {
51
		#endif
52

  
53
	/* Preprocessor Checks: */
54
		#if !defined(__INCLUDE_FROM_LEDS_H)
55
			#error Do not include this file directly. Include LUFA/Drivers/Board/LEDS.h instead.
56
		#endif
57

  
58
	/* Public Interface - May be used in end-application: */
59
		/* Macros: */
60
			/** LED mask for the first LED on the board. */
61
			#define LEDS_LED1        // TODO: Add mask for first board LED here
62

  
63
			/** LED mask for the second LED on the board. */
64
			#define LEDS_LED2        // TODO: Add mask for second board LED here
65

  
66
			/** LED mask for the third LED on the board. */
67
			#define LEDS_LED3        // TODO: Add mask for third board LED here
68

  
69
			/** LED mask for the fourth LED on the board. */
70
			#define LEDS_LED4        // TODO: Add mask for fourth board LED here
71

  
72
			/** LED mask for all the LEDs on the board. */
73
			#define LEDS_ALL_LEDS    (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4)
74

  
75
			/** LED mask for none of the board LEDs. */
76
			#define LEDS_NO_LEDS     0
77

  
78
		/* Inline Functions: */
79
		#if !defined(__DOXYGEN__)
80
			static inline void LEDs_Init(void)
81
			{
82
				// TODO: Add code to initialize LED port pins as outputs here
83
			}
84

  
85
			static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
86
			{
87
				// TODO: Add code to turn on LEDs given in the LEDMask mask here, leave others as-is
88
			}
89

  
90
			static inline void LEDs_TurnOffLEDs(const uint8_t LEDMask)
91
			{
92
				// TODO: Add code to turn off LEDs given in the LEDMask mask here, leave others as-is
93
			}
94

  
95
			static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
96
			{
97
				// TODO: Add code to turn on only LEDs given in the LEDMask mask here, all others off
98
			}
99

  
100
			static inline void LEDs_ChangeLEDs(const uint8_t LEDMask, const uint8_t ActiveMask)
101
			{
102
				// TODO: Add code to set the Leds in the given LEDMask to the status given in ActiveMask here
103
			}
104

  
105
			static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
106
			{
107
				// TODO: Add code to toggle the Leds in the given LEDMask, ignoring all others
108
			}
109

  
110
			static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
111
			static inline uint8_t LEDs_GetLEDs(void)
112
			{
113
				// TODO: Add code to return the current LEDs status' here which can be masked against LED_LED* macros
114
			}
115
		#endif
116

  
117
	/* Disable C linkage for C++ Compilers: */
118
		#if defined(__cplusplus)
119
			}
120
		#endif
121

  
122
#endif
123

  
LUFA/CodeTemplates/LUFAConfig.h
1
/*
2
             LUFA Library
3
     Copyright (C) Dean Camera, 2011.
4

  
5
  dean [at] fourwalledcubicle [dot] com
6
           www.lufa-lib.org
7
*/
8

  
9
/*
10
  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
11

  
12
  Permission to use, copy, modify, distribute, and sell this
13
  software and its documentation for any purpose is hereby granted
14
  without fee, provided that the above copyright notice appear in
15
  all copies and that both that the copyright notice and this
16
  permission notice and warranty disclaimer appear in supporting
17
  documentation, and that the name of the author not be used in
18
  advertising or publicity pertaining to distribution of the
19
  software without specific, written prior permission.
20

  
21
  The author disclaim all warranties with regard to this
22
  software, including all implied warranties of merchantability
23
  and fitness.  In no event shall the author be liable for any
24
  special, indirect or consequential damages or any damages
25
  whatsoever resulting from loss of use, data or profits, whether
26
  in an action of contract, negligence or other tortious action,
27
  arising out of or in connection with the use or performance of
28
  this software.
29
*/
30

  
31
/*
32
   This is a header file which can be used to configure LUFA's
33
   compile time options, as an alternative to the compile time
34
   constants supplied through a makefile. To use this configuration
35
   header, copy this into your project's root directory and supply
36
   the \c USE_LUFA_CONFIG_HEADER token to the compiler so that it is
37
   defined in all compiled source files.
38
   
39
   For information on what each token does, refer to the LUFA
40
   manual section "Summary of Compile Tokens".
41
*/
42

  
43
#ifndef __LUFA_CONFIG_H__
44
#define __LUFA_CONFIG_H__
45

  
46
	#if (ARCH == ARCH_AVR8)
47

  
48
		/* Non-USB Related Configuration Tokens: */
49
//		#define DISABLE_TERMINAL_CODES
50

  
51
		/* USB Class Driver Related Tokens: */
52
//		#define HID_HOST_BOOT_PROTOCOL_ONLY
53
//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
54
//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
55
//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
56
//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
57
//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
58
//		#define NO_CLASS_DRIVER_AUTOFLUSH
59

  
60
		/* General USB Driver Related Tokens: */
61
//		#define ORDERED_EP_CONFIG
62
//		#define USE_STATIC_OPTIONS               {Insert Value Here}
63
//		#define USB_DEVICE_ONLY
64
//		#define USB_HOST_ONLY
65
//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
66
//		#define NO_LIMITED_CONTROLLER_CONNECT
67
//		#define NO_SOF_EVENTS
68

  
69
		/* USB Device Mode Driver Related Tokens: */
70
//		#define USE_RAM_DESCRIPTORS
71
//		#define USE_FLASH_DESCRIPTORS
72
//		#define USE_EEPROM_DESCRIPTORS
73
//		#define NO_INTERNAL_SERIAL
74
//		#define FIXED_CONTROL_ENDPOINT_SIZE      {Insert Value Here}
75
//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here}
76
//		#define FIXED_NUM_CONFIGURATION          {Insert Value Here}
77
//		#define CONTROL_ONLY_DEVICE
78
//		#define INTERRUPT_CONTROL_ENDPOINT
79
//		#define NO_DEVICE_REMOTE_WAKEUP
80
//		#define NO_DEVICE_SELF_POWER
81

  
82
		/* USB Host Mode Driver Related Tokens: */
83
//		#define HOST_STATE_AS_GPIOR              {Insert Value Here}
84
//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here}
85
//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here}
86

  
87
	#elif (ARCH == ARCH_UC3)
88

  
89
		/* Non-USB Related Configuration Tokens: */
90
//		#define DISABLE_TERMINAL_CODES
91

  
92
		/* USB Class Driver Related Tokens: */
93
//		#define HID_HOST_BOOT_PROTOCOL_ONLY
94
//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
95
//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
96
//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
97
//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
98
//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
99
//		#define NO_CLASS_DRIVER_AUTOFLUSH
100

  
101
		/* General USB Driver Related Tokens: */
102
//		#define ORDERED_EP_CONFIG
103
//		#define USE_STATIC_OPTIONS               {Insert Value Here}
104
//		#define USB_DEVICE_ONLY
105
//		#define USB_HOST_ONLY
106
//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
107
//		#define NO_SOF_EVENTS
108

  
109
		/* USB Device Mode Driver Related Tokens: */
110
//		#define NO_INTERNAL_SERIAL
111
//		#define FIXED_CONTROL_ENDPOINT_SIZE      {Insert Value Here}
112
//		#define FIXED_NUM_CONFIGURATION          {Insert Value Here}
113
//		#define CONTROL_ONLY_DEVICE
114
//		#define INTERRUPT_CONTROL_ENDPOINT
115
//		#define NO_DEVICE_REMOTE_WAKEUP
116
//		#define NO_DEVICE_SELF_POWER
117

  
118
		/* USB Host Mode Driver Related Tokens: */
119
//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here}
120
//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here}
121

  
122
	#endif	
123
#endif
124

  
LUFA/CodeTemplates/makefile_template.avr8
1
# Hey Emacs, this is a -*- makefile -*-
2
#----------------------------------------------------------------------------
3
# WinAVR Makefile Template written by Eric B. Weddington, J?rg Wunsch, et al.
4
#  >> Modified for use with the LUFA project. <<
5
#
6
# Released to the Public Domain
7
#
8
# Additional material for this makefile was written by:
9
# Peter Fleury
10
# Tim Henigan
11
# Colin O'Flynn
12
# Reiner Patommel
13
# Markus Pfaff
14
# Sander Pool
15
# Frederik Rouleau
16
# Carlos Lamas
17
# Dean Camera
18
# Opendous Inc.
19
# Denver Gingerich
20
#
21
#----------------------------------------------------------------------------
22
# On command line:
23
#
24
# make all = Make software.
25
#
26
# make clean = Clean out built project files.
27
#
28
# make coff = Convert ELF to AVR COFF.
29
#
30
# make extcoff = Convert ELF to AVR Extended COFF.
31
#
32
# make program = Download the hex file to the device, using avrdude.
33
#                Please customize the avrdude settings below first!
34
#
35
# make dfu = Download the hex file to the device, using dfu-programmer (must
36
#            have dfu-programmer installed).
37
#
38
# make flip = Download the hex file to the device, using Atmel FLIP (must
39
#             have Atmel FLIP installed).
40
#
41
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
42
#               (must have dfu-programmer installed).
43
#
44
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
45
#                (must have Atmel FLIP installed).
46
#
47
# make doxygen = Generate DoxyGen documentation for the project (must have
48
#                DoxyGen installed)
49
#
50
# make debug = Start either simulavr or avarice as specified for debugging, 
51
#              with avr-gdb or avr-insight as the front end for debugging.
52
#
53
# make filename.s = Just compile filename.c into the assembler code only.
54
#
55
# make filename.i = Create a preprocessed source file for use in submitting
56
#                   bug reports to the GCC project.
57
#
58
# To rebuild project do "make clean" then "make all".
59
#----------------------------------------------------------------------------
60

  
61

  
62
# MCU name
63
MCU = ### INSERT NAME OF MICROCONTROLLER MODEL HERE ###
64

  
65

  
66
# Targeted chip architecture (see library "Architectures" documentation)
67
ARCH = AVR8
68

  
69

  
70
# Target board (see library "Board Types" documentation, NONE for projects not requiring
71
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
72
# "Board" inside the application directory.
73
BOARD = ### INSERT NAME OF BOARD HERE, OR NONE IF NO BOARD DRIVERS USED ###
74

  
75

  
76
# Processor frequency.
77
#     This will define a symbol, F_CPU, in all source code files equal to the 
78
#     processor frequency in Hz. You can then use this symbol in your source code to 
79
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
80
#     automatically to create a 32-bit value in your source code.
81
#
82
#     This will be an integer division of F_CLOCK below, as it is sourced by
83
#     F_CLOCK after it has run through any CPU prescalers. Note that this value
84
#     does not *change* the processor frequency - it should merely be updated to
85
#     reflect the processor speed set externally so that the code can use accurate
86
#     software delays.
87
F_CPU = ### INSERT PRESCALED SYSTEM CLOCK SPEED HERE, IN HZ ###
88

  
89

  
90
# Input clock frequency.
91
#     This will define a symbol, F_USB, in all source code files equal to the 
92
#     input clock frequency (before any prescaling is performed) in Hz. This value may
93
#     differ from F_CPU if prescaling is used on the latter, and is required as the
94
#     raw input clock is fed directly to the PLL sections of the AVR for high speed
95
#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
96
#     at the end, this will be done automatically to create a 32-bit value in your
97
#     source code.
98
#
99
#     If no clock division is performed on the input clock inside the AVR (via the
100
#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
101
F_USB = ### INSERT CLOCK TO USB MODULE HERE, IN HZ ###
102

  
103

  
104
# Output format. (can be srec, ihex, binary)
105
FORMAT = ihex
106

  
107

  
108
# Target file name (without extension).
109
TARGET = ### INSERT NAME OF MAIN FILENAME HERE, WITHOUT EXTENSION ###
110

  
111

  
112
# Object files directory
113
#     To put object files in current directory, use a dot (.), do NOT make
114
#     this an empty or blank macro!
115
OBJDIR = .
116

  
117

  
118
# Path to the LUFA library
119
LUFA_PATH = ### INSERT PATH TO LUFA LIBRARY RELATIVE TO PROJECT DIRECTORY HERE ###
120

  
121

  
122
# LUFA library compile-time options and predefined tokens (add '-D' before each token)
123
LUFA_OPTS = ### INSERT LUFA COMPILE TIME TOKES HERE ###
124

  
125

  
126
# Create the LUFA source path variables by including the LUFA root makefile
127
include $(LUFA_PATH)/LUFA/makefile
128

  
129

  
130
# List C source files here. (C dependencies are automatically generated.)
131
SRC = $(TARGET).c                                                 \
132
	  $(LUFA_SRC_USB)                                             \
133
	  $(LUFA_SRC_USBCLASS)
134
      ### INSERT ADDITIONAL PROJECT SOURCE FILENAMES OR LUFA MODULE NAMES HERE ###
135

  
136

  
137
# List C++ source files here. (C dependencies are automatically generated.)
138
CPPSRC = 
139

  
140

  
141
# List Assembler source files here.
142
#     Make them always end in a capital .S.  Files ending in a lowercase .s
143
#     will not be considered source files but generated files (assembler
144
#     output from the compiler), and will be deleted upon "make clean"!
145
#     Even though the DOS/Win* filesystem matches both .s and .S the same,
146
#     it will preserve the spelling of the filenames, and gcc itself does
147
#     care about how the name is spelled on its command-line.
148
ASRC =
149

  
150

  
151
# Optimization level, can be [0, 1, 2, 3, s]. 
152
#     0 = turn off optimization. s = optimize for size.
153
#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
154
OPT = s
155

  
156

  
157
# List any extra directories to look for include files here.
158
#     Each directory must be seperated by a space.
159
#     Use forward slashes for directory separators.
160
#     For a directory that has spaces, enclose it in quotes.
161
EXTRAINCDIRS = $(LUFA_PATH)/
162

  
163

  
164
# Compiler flag to set the C Standard level.
165
#     c89   = "ANSI" C
166
#     gnu89 = c89 plus GCC extensions
167
#     c99   = ISO C99 standard (not yet fully implemented)
168
#     gnu99 = c99 plus GCC extensions
169
CSTANDARD = -std=gnu99
170

  
171

  
172
# Place -D or -U options here for C sources
173
CDEFS  = -DF_CPU=$(F_CPU)UL
174
CDEFS += -DF_USB=$(F_USB)UL
175
CDEFS += -DBOARD=BOARD_$(BOARD)
176
CDEFS += -DARCH=ARCH_$(ARCH)
177
CDEFS += $(LUFA_OPTS)
178

  
179

  
180
# Place -D or -U options here for ASM sources
181
ADEFS  = -DF_CPU=$(F_CPU)
182
ADEFS += -DF_USB=$(F_USB)UL
183
ADEFS += -DBOARD=BOARD_$(BOARD)
184
ADEFS += -DARCH=ARCH_$(ARCH)
185
ADEFS += $(LUFA_OPTS)
186

  
187
# Place -D or -U options here for C++ sources
188
CPPDEFS  = -DF_CPU=$(F_CPU)UL
189
CPPDEFS += -DF_USB=$(F_USB)UL
190
CPPDEFS += -DBOARD=BOARD_$(BOARD)
191
CPPDEFS += -DARCH=ARCH_$(ARCH)
192
CPPDEFS += $(LUFA_OPTS)
193

  
194

  
195
# Debugging format.
196
#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
197
#     AVR Studio 4.10 requires dwarf-2.
198
#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
199
DEBUG = dwarf-2
200

  
201

  
202
#---------------- Compiler Options C ----------------
203
#  -g*:          generate debugging information
204
#  -O*:          optimization level
205
#  -f...:        tuning, see GCC manual and avr-libc documentation
206
#  -Wall...:     warning level
207
#  -Wa,...:      tell GCC to pass this to the assembler.
208
#    -adhlns...: create assembler listing
209
CFLAGS = -g$(DEBUG)
210
CFLAGS += $(CDEFS)
211
CFLAGS += -O$(OPT)
212
CFLAGS += -funsigned-char
213
CFLAGS += -funsigned-bitfields
214
CFLAGS += -ffunction-sections
215
CFLAGS += -fno-inline-small-functions
216
CFLAGS += -fpack-struct
217
CFLAGS += -fshort-enums
218
CFLAGS += -fno-strict-aliasing
219
CFLAGS += -Wall
220
CFLAGS += -Wstrict-prototypes
221
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
222
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
223
CFLAGS += $(CSTANDARD)
224

  
225

  
226
#---------------- Compiler Options C++ ----------------
227
#  -g*:          generate debugging information
228
#  -O*:          optimization level
229
#  -f...:        tuning, see GCC manual and avr-libc documentation
230
#  -Wall...:     warning level
231
#  -Wa,...:      tell GCC to pass this to the assembler.
232
#    -adhlns...: create assembler listing
233
CPPFLAGS = -g$(DEBUG)
234
CPPFLAGS += $(CPPDEFS)
235
CPPFLAGS += -O$(OPT)
236
CPPFLAGS += -funsigned-char
237
CPPFLAGS += -funsigned-bitfields
238
CPPFLAGS += -fpack-struct
239
CPPFLAGS += -fshort-enums
240
CPPFLAGS += -ffunction-sections
241
CPPFLAGS += -fno-strict-aliasing
242
CPPFLAGS += -fno-exceptions
243
CPPFLAGS += -Wall
244
CPPFLAGS += -Wundef
245
CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
246
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
247
#CPPFLAGS += $(CSTANDARD)
248

  
249

  
250
#---------------- Assembler Options ----------------
251
#  -Wa,...:   tell GCC to pass this to the assembler.
252
#  -adhlns:   create listing
253
#  -gstabs:   have the assembler create line number information; note that
254
#             for use in COFF files, additional information about filenames
255
#             and function names needs to be present in the assembler source
256
#             files -- see avr-libc docs [FIXME: not yet described there]
257
#  -listing-cont-lines: Sets the maximum number of continuation lines of hex 
258
#       dump that will be displayed for a given single line of source input.
259
ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
260

  
261

  
262
#---------------- Library Options ----------------
263
# Minimalistic printf version
264
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
265

  
266
# Floating point printf version (requires MATH_LIB = -lm below)
267
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
268

  
269
# If this is left blank, then it will use the Standard printf version.
270
PRINTF_LIB = 
271
#PRINTF_LIB = $(PRINTF_LIB_MIN)
272
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
273

  
274

  
275
# Minimalistic scanf version
276
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
277

  
278
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
279
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
280

  
281
# If this is left blank, then it will use the Standard scanf version.
282
SCANF_LIB = 
283
#SCANF_LIB = $(SCANF_LIB_MIN)
284
#SCANF_LIB = $(SCANF_LIB_FLOAT)
285

  
286

  
287
MATH_LIB = -lm
288

  
289

  
290
# List any extra directories to look for libraries here.
291
#     Each directory must be seperated by a space.
292
#     Use forward slashes for directory separators.
293
#     For a directory that has spaces, enclose it in quotes.
294
EXTRALIBDIRS = 
295

  
296

  
297

  
298
#---------------- External Memory Options ----------------
299

  
300
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
301
# used for variables (.data/.bss) and heap (malloc()).
302
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
303

  
304
# 64 KB of external RAM, starting after internal RAM (ATmega128!),
305
# only used for heap (malloc()).
306
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
307

  
308
EXTMEMOPTS =
309

  
310

  
311

  
312
#---------------- Linker Options ----------------
313
#  -Wl,...:     tell GCC to pass this to linker.
314
#    -Map:      create map file
315
#    --cref:    add cross reference to  map file
316
LDFLAGS  = -Wl,-Map=$(TARGET).map,--cref
317
LDFLAGS += -Wl,--relax 
318
LDFLAGS += -Wl,--gc-sections
319
LDFLAGS += $(EXTMEMOPTS)
320
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
321
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
322
#LDFLAGS += -T linker_script.x
323

  
324

  
325

  
326
#---------------- Programming Options (avrdude) ----------------
327

  
328
# Programming hardware
329
# Type: avrdude -c ?
330
# to get a full listing.
331
#
332
AVRDUDE_PROGRAMMER = jtagmkII
333

  
334
# com1 = serial port. Use lpt1 to connect to parallel port.
335
AVRDUDE_PORT = usb
336

  
337
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
338
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
339

  
340

  
341
# Uncomment the following if you want avrdude's erase cycle counter.
342
# Note that this counter needs to be initialized first using -Yn,
343
# see avrdude manual.
344
#AVRDUDE_ERASE_COUNTER = -y
345

  
346
# Uncomment the following if you do /not/ wish a verification to be
347
# performed after programming the device.
348
#AVRDUDE_NO_VERIFY = -V
349

  
350
# Increase verbosity level.  Please use this when submitting bug
351
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> 
352
# to submit bug reports.
353
#AVRDUDE_VERBOSE = -v -v
354

  
355
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
356
AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
357
AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
358
AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
359

  
360

  
361

  
362
#---------------- Debugging Options ----------------
363

  
364
# For simulavr only - target MCU frequency.
365
DEBUG_MFREQ = $(F_CPU)
366

  
367
# Set the DEBUG_UI to either gdb or insight.
368
# DEBUG_UI = gdb
369
DEBUG_UI = insight
370

  
371
# Set the debugging back-end to either avarice, simulavr.
372
DEBUG_BACKEND = avarice
373
#DEBUG_BACKEND = simulavr
374

  
375
# GDB Init Filename.
376
GDBINIT_FILE = __avr_gdbinit
377

  
378
# When using avarice settings for the JTAG
379
JTAG_DEV = /dev/com1
380

  
381
# Debugging port used to communicate between GDB / avarice / simulavr.
382
DEBUG_PORT = 4242
383

  
384
# Debugging host used to communicate between GDB / avarice / simulavr, normally
385
#     just set to localhost unless doing some sort of crazy debugging when 
386
#     avarice is running on a different computer.
387
DEBUG_HOST = localhost
388

  
389

  
390

  
391
#============================================================================
392

  
393

  
394
# Define programs and commands.
395
SHELL = sh
396
CC = avr-gcc
397
OBJCOPY = avr-objcopy
398
OBJDUMP = avr-objdump
399
SIZE = avr-size
400
AR = avr-ar rcs
401
NM = avr-nm
402
AVRDUDE = avrdude
403
REMOVE = rm -f
404
REMOVEDIR = rm -rf
405
COPY = cp
406
WINSHELL = cmd
407

  
408

  
409
# Define Messages
410
# English
411
MSG_ERRORS_NONE = Errors: none
412
MSG_BEGIN = -------- begin --------
413
MSG_END = --------  end  --------
414
MSG_SIZE_BEFORE = Size before: 
415
MSG_SIZE_AFTER = Size after:
416
MSG_COFF = Converting to AVR COFF:
417
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
418
MSG_FLASH = Creating load file for Flash:
419
MSG_EEPROM = Creating load file for EEPROM:
420
MSG_EXTENDED_LISTING = Creating Extended Listing:
421
MSG_SYMBOL_TABLE = Creating Symbol Table:
422
MSG_LINKING = Linking:
423
MSG_COMPILING = Compiling C:
424
MSG_COMPILING_CPP = Compiling C++:
425
MSG_ASSEMBLING = Assembling:
426
MSG_CLEANING = Cleaning project:
427
MSG_CREATING_LIBRARY = Creating library:
428

  
429

  
430

  
431

  
432
# Define all object files.
433
OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o) 
434

  
435
# Define all listing files.
436
LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst) 
437

  
438

  
439
# Compiler flags to generate dependency files.
440
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
441

  
442

  
443
# Combine all necessary flags and optional flags.
444
# Add target processor to flags.
445
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
446
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
447
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
448

  
449

  
450

  
451

  
452

  
453
# Default target.
454
all: begin gccversion sizebefore build sizeafter end
455

  
456
# Change the build target to build a HEX file or a library.
457
build: elf hex eep lss sym
458
#build: lib
459

  
460

  
461
elf: $(TARGET).elf
462
hex: $(TARGET).hex
463
eep: $(TARGET).eep
464
lss: $(TARGET).lss
465
sym: $(TARGET).sym
466
LIBNAME=lib$(TARGET).a
467
lib: $(LIBNAME)
468

  
469

  
470

  
471
# Eye candy.
472
# AVR Studio 3.x does not check make's exit code but relies on
473
# the following magic strings to be generated by the compile job.
474
begin:
475
	@echo
476
	@echo $(MSG_BEGIN)
477

  
478
end:
479
	@echo $(MSG_END)
480
	@echo
481

  
482

  
483
# Display size of file.
484
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
485
ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
486
MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
487
FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
488

  
489

  
490
sizebefore:
491
	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
492
	2>/dev/null; echo; fi
493

  
494
sizeafter:
495
	@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
496
	2>/dev/null; echo; fi
497

  
498

  
499

  
500
# Display compiler version information.
501
gccversion : 
502
	@$(CC) --version
503

  
504

  
505
# Program the device.  
506
program: $(TARGET).hex $(TARGET).eep
507
	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
508

  
509
flip: $(TARGET).hex
510
	batchisp -hardware usb -device $(MCU) -operation erase f
511
	batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program
512
	batchisp -hardware usb -device $(MCU) -operation start reset 0
513

  
514
dfu: $(TARGET).hex
515
	dfu-programmer $(MCU) erase
516
	dfu-programmer $(MCU) flash $(TARGET).hex
517
	dfu-programmer $(MCU) reset
518

  
519
flip-ee: $(TARGET).hex $(TARGET).eep
520
	$(COPY) $(TARGET).eep $(TARGET)eep.hex
521
	batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase
522
	batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
523
	batchisp -hardware usb -device $(MCU) -operation start reset 0
524
	$(REMOVE) $(TARGET)eep.hex
525

  
526
dfu-ee: $(TARGET).hex $(TARGET).eep
527
	dfu-programmer $(MCU) eeprom-flash $(TARGET).eep
528
	dfu-programmer $(MCU) reset
529

  
530

  
531
# Generate avr-gdb config/init file which does the following:
532
#     define the reset signal, load the target file, connect to target, and set 
533
#     a breakpoint at main().
534
gdb-config: 
535
	@$(REMOVE) $(GDBINIT_FILE)
536
	@echo define reset >> $(GDBINIT_FILE)
537
	@echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
538
	@echo end >> $(GDBINIT_FILE)
539
	@echo file $(TARGET).elf >> $(GDBINIT_FILE)
540
	@echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
541
ifeq ($(DEBUG_BACKEND),simulavr)
542
	@echo load  >> $(GDBINIT_FILE)
543
endif
544
	@echo break main >> $(GDBINIT_FILE)
545

  
546
debug: gdb-config $(TARGET).elf
547
ifeq ($(DEBUG_BACKEND), avarice)
548
	@echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
549
	@$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
550
	$(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
551
	@$(WINSHELL) /c pause
552

  
553
else
554
	@$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
555
	$(DEBUG_MFREQ) --port $(DEBUG_PORT)
556
endif
557
	@$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
558

  
559

  
560

  
561

  
562
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
563
COFFCONVERT = $(OBJCOPY) --debugging
564
COFFCONVERT += --change-section-address .data-0x800000
565
COFFCONVERT += --change-section-address .bss-0x800000
566
COFFCONVERT += --change-section-address .noinit-0x800000
567
COFFCONVERT += --change-section-address .eeprom-0x810000
568

  
569

  
570

  
571
coff: $(TARGET).elf
572
	@echo
573
	@echo $(MSG_COFF) $(TARGET).cof
574
	$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
575

  
576

  
577
extcoff: $(TARGET).elf
578
	@echo
579
	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
580
	$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
581

  
582

  
583

  
584
# Create final output files (.hex, .eep) from ELF output file.
585
%.hex: %.elf
586
	@echo
587
	@echo $(MSG_FLASH) $@
588
	$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@
589

  
590
%.eep: %.elf
591
	@echo
592
	@echo $(MSG_EEPROM) $@
593
	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
594
	--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
595

  
596
# Create extended listing file from ELF output file.
597
%.lss: %.elf
598
	@echo
599
	@echo $(MSG_EXTENDED_LISTING) $@
600
	$(OBJDUMP) -h -S -z $< > $@
601

  
602
# Create a symbol table from ELF output file.
603
%.sym: %.elf
604
	@echo
605
	@echo $(MSG_SYMBOL_TABLE) $@
606
	$(NM) -n $< > $@
607

  
608

  
609

  
610
# Create library from object files.
611
.SECONDARY : $(TARGET).a
612
.PRECIOUS : $(OBJ)
613
%.a: $(OBJ)
614
	@echo
615
	@echo $(MSG_CREATING_LIBRARY) $@
616
	$(AR) $@ $(OBJ)
617

  
618

  
619
# Link: create ELF output file from object files.
620
.SECONDARY : $(TARGET).elf
621
.PRECIOUS : $(OBJ)
622
%.elf: $(OBJ)
623
	@echo
624
	@echo $(MSG_LINKING) $@
625
	$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
626

  
627

  
628
# Compile: create object files from C source files.
629
$(OBJDIR)/%.o : %.c
630
	@echo
631
	@echo $(MSG_COMPILING) $<
632
	$(CC) -c $(ALL_CFLAGS) $< -o $@ 
633

  
634

  
635
# Compile: create object files from C++ source files.
636
$(OBJDIR)/%.o : %.cpp
637
	@echo
638
	@echo $(MSG_COMPILING_CPP) $<
639
	$(CC) -c $(ALL_CPPFLAGS) $< -o $@ 
640

  
641

  
642
# Compile: create assembler files from C source files.
643
%.s : %.c
644
	$(CC) -S $(ALL_CFLAGS) $< -o $@
645

  
646

  
647
# Compile: create assembler files from C++ source files.
648
%.s : %.cpp
649
	$(CC) -S $(ALL_CPPFLAGS) $< -o $@
650

  
651

  
652
# Assemble: create object files from assembler source files.
653
$(OBJDIR)/%.o : %.S
654
	@echo
655
	@echo $(MSG_ASSEMBLING) $<
656
	$(CC) -c $(ALL_ASFLAGS) $< -o $@
657

  
658

  
659
# Create preprocessed source for use in sending a bug report.
660
%.i : %.c
661
	$(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ 
662

  
663

  
664
# Target: clean project.
665
clean: begin clean_list end
666

  
667
clean_list :
668
	@echo
669
	@echo $(MSG_CLEANING)
670
	$(REMOVE) $(TARGET).hex
671
	$(REMOVE) $(TARGET).eep
672
	$(REMOVE) $(TARGET).cof
673
	$(REMOVE) $(TARGET).elf
674
	$(REMOVE) $(TARGET).map
675
	$(REMOVE) $(TARGET).sym
676
	$(REMOVE) $(TARGET).lss
677
	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
678
	$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
679
	$(REMOVE) $(SRC:.c=.s)
680
	$(REMOVE) $(SRC:.c=.d)
681
	$(REMOVE) $(SRC:.c=.i)
682
	$(REMOVEDIR) .dep
683

  
684
doxygen:
685
	@echo Generating Project Documentation \($(TARGET)\)...
686
	@doxygen Doxygen.conf
687
	@echo Documentation Generation Complete.
688

  
689
clean_doxygen:
690
	rm -rf Documentation
691

  
692
checksource:
693
	@for f in $(SRC) $(CPPSRC) $(ASRC); do \
694
		if [ -f $$f ]; then \
695
			echo "Found Source File: $$f" ; \
696
		else \
697
			echo "Source File Not Found: $$f" ; \
698
		fi; done 
699

  
700

  
701
# Create object files directory
702
$(shell mkdir $(OBJDIR) 2>/dev/null)
703

  
704

  
705
# Include the dependency files.
706
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
707

  
708

  
709
# Listing of phony targets.
710
.PHONY : all begin finish end sizebefore sizeafter gccversion \
711
build elf hex eep lss sym coff extcoff doxygen clean          \
712
clean_list clean_doxygen program dfu flip flip-ee dfu-ee      \
713
debug gdb-config checksource
LUFA/CodeTemplates/makefile_template.uc3
1
# Hey Emacs, this is a -*- makefile -*-
2
#----------------------------------------------------------------------------
3
# WinAVR Makefile Template written by Eric B. Weddington, J?rg Wunsch, et al.
4
#  >> Modified for use with the LUFA project. <<
5
#
6
# Released to the Public Domain
7
#
8
# Additional material for this makefile was written by:
9
# Peter Fleury
10
# Tim Henigan
11
# Colin O'Flynn
12
# Reiner Patommel
13
# Markus Pfaff
14
# Sander Pool
15
# Frederik Rouleau
16
# Carlos Lamas
17
# Dean Camera
18
# Opendous Inc.
19
# Denver Gingerich
20
#
21
#----------------------------------------------------------------------------
22
# On command line:
23
#
24
# make all = Make software.
25
#
26
# make clean = Clean out built project files.
27
#
28
# make dfu = Download the hex file to the device, using dfu-programmer (must
29
#            have dfu-programmer installed).
30
#
31
# make flip = Download the hex file to the device, using Atmel FLIP (must
32
#             have Atmel FLIP installed).
33
#
34
# make doxygen = Generate DoxyGen documentation for the project (must have
35
#                DoxyGen installed)
36
#
37
# make filename.s = Just compile filename.c into the assembler code only.
38
#
39
# make filename.i = Create a preprocessed source file for use in submitting
40
#                   bug reports to the GCC project.
41
#
42
# To rebuild project do "make clean" then "make all".
43
#----------------------------------------------------------------------------
44

  
45

  
46
# MCU name
47
MCU = ### INSERT NAME OF MICROCONTROLLER MODEL HERE ###
48

  
49

  
50
# Targeted chip architecture (see library "Architectures" documentation)
51
ARCH = UC3
52

  
53

  
54
# Target board (see library "Board Types" documentation, NONE for projects not requiring
55
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
56
# "Board" inside the application directory.
57
BOARD = ### INSERT NAME OF BOARD HERE, OR NONE IF NO BOARD DRIVERS USED ###
58

  
59

  
60
# Processor frequency.
61
#     This will define a symbol, F_CPU, in all source code files equal to the
62
#     processor frequency in Hz. You can then use this symbol in your source code to
63
#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
64
#     automatically to create a 32-bit value in your source code.
65
#
66
#     This should be the frequency the system core runs at, after the system clock
67
#     has been set up correctly and started.
68
F_CPU = ### INSERT PRESCALED SYSTEM CLOCK SPEED HERE, IN HZ ###
69

  
70

  
71
# USB controller master clock frequency.
72
#     This will define a symbol, F_USB, in all source code files equal to the
73
#     input clock frequency of the USB controller's clock generator in Hz.
74
#
75
#     For the UC3 chips, this should be equal to 48MHz or 96MHz.
76
F_USB = ### INSERT CLOCK TO USB MODULE HERE, IN HZ ###
77

  
78

  
79
# Output format. (can be srec, ihex, binary)
80
FORMAT = ihex
81

  
82

  
83
# Target file name (without extension).
84
TARGET = ### INSERT NAME OF MAIN FILENAME HERE, WITHOUT EXTENSION ###
85

  
86

  
87
# Object files directory
88
#     To put object files in current directory, use a dot (.), do NOT make
89
#     this an empty or blank macro!
90
OBJDIR = .
91

  
92

  
93
# Path to the LUFA library
94
LUFA_PATH = ### INSERT PATH TO LUFA LIBRARY RELATIVE TO PROJECT DIRECTORY HERE ###
95

  
96

  
97
# LUFA library compile-time options and predefined tokens (add '-D' before each token)
98
LUFA_OPTS = ### INSERT LUFA COMPILE TIME TOKES HERE ###
99

  
100

  
101
# Create the LUFA source path variables by including the LUFA root makefile
102
include $(LUFA_PATH)/LUFA/makefile
103

  
104

  
105
# List C source files here. (C dependencies are automatically generated.)
106
SRC = $(TARGET).c                                                 \
107
	  $(LUFA_SRC_USB)                                             \
108
	  $(LUFA_SRC_USBCLASS)
109
      ### INSERT ADDITIONAL PROJECT SOURCE FILENAMES OR LUFA MODULE NAMES HERE ###
110

  
111

  
112
# List C++ source files here. (C dependencies are automatically generated.)
113
CPPSRC = 
114

  
115

  
116
# List Assembler source files here.
117
#     Make them always end in a capital .S.  Files ending in a lowercase .s
118
#     will not be considered source files but generated files (assembler
119
#     output from the compiler), and will be deleted upon "make clean"!
120
#     Even though the DOS/Win* filesystem matches both .s and .S the same,
121
#     it will preserve the spelling of the filenames, and gcc itself does
122
#     care about how the name is spelled on its command-line.
123
ASRC =
124

  
125

  
126
# Optimization level, can be [0, 1, 2, 3, s]. 
127
#     0 = turn off optimization. s = optimize for size.
128
#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
129
OPT = s
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff