USBaspLoader v0.97 stable release
[pub/USBaspLoader.git] / Makefile.inc
1 # Name: Makefile.inc
2 # Project: USBaspLoader (updater)
3 # Author: Stephan Bärwolf
4 # Creation Date: 2012-09-01
5 # Tabsize: 4
6 # License: GNU GPL v2 (see License.txt)
7
8 F_CPU = 16000000
9 DEVICE = atmega8
10
11 # where the updating firmware should be located (starting address)
12 FLASHADDRESS = 0x0000
13
14 # use any fix (ATxmega compatible) crc32, uncomment to disable feature or set automatically with value "0"
15 ;UPDATECRC32 = 0
16
17 # some MCU independent defines...
18 #...will be extended within MCU dependend configuration below...
19 DEFINES += -DCONFIG_NO__CHIP_ERASE -DCONFIG_NO__ONDEMAND_PAGEERASE
20
21 # have the bootloader always enter the programming mode
22 ;DEFINES += -DCONFIG_HAVE__BOOTLOADER_ALWAYSENTERPROGRAMMODE
23
24 # have the bootloader exit itself after around 3 seconds (@16MHz) inactivity
25 ;DEFINES += -DCONFIG_BOOTLOADER_LOOPCYCLES_TIMEOUT=16 -DCONFIG_HAVE__BOOTLOADER_ABORTTIMEOUTONACT
26
27 # save the PROG button on the layout (CAREFUL - read feature description first)
28 ;DEFINES += -DCONFIG_HAVE__BOOTLOADER_IGNOREPROGBUTTON
29
30
31
32 # some MCUs with small BLS (bootloader section) need to deactivate some
33 # features in order to fit into BLS.
34 # If this option is enabled, also essential features may become deactivated
35 # Esp. you MUST ensure not to have watchdog initially enabled when using this!
36 DANGEROUS=0
37
38 # PROGRAMMER contains AVRDUDE options to address your programmer
39 # PROGRAMMER = -c pony-stk200
40 PROGRAMMER = -c usbasp
41
42 # since USBaspLoader supports HAVE_BLB11_SOFTW_LOCKBIT...
43 LOCKOPT = -U lock:w:0x3f:m
44
45
46
47
48
49 #untested devices (WARNING: may destroy ISP ability!)
50 #device always should select maximum bootloader-section size
51 #please mail tests-reports to matrixstorm@gmx.de
52 #
53 #some features may be deactivated to fit into bootloader section
54 #ATTANTION: CONFIG_NO... feature deactivation may not be optimal!
55
56 FUSEOPT_8535 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
57 BOOTLOADER_ADDRESS_8535 = 0x1800
58 DEFINES_8535 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP
59
60
61
62 FUSEOPT_16 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
63 BOOTLOADER_ADDRESS_16 = 0x3800
64 DEFINES_16 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP
65 ifeq ($(F_CPU), 12000000)
66 DEFINES_16 += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
67 endif
68
69
70
71 FUSEOPT_88 = -U lfuse:w:0xd7:m -U hfuse:w:0xd4:m -U efuse:w:0xf8:m
72 BOOTLOADER_ADDRESS_88 = 0x1800
73 DEFINES_88 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP
74 ifeq ($(F_CPU), 12000000)
75 DEFINES_88 += -DCONFIG_NO__FLASH_BYTE_READACCESS
76 endif
77
78
79
80 FUSEOPT_164 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
81 BOOTLOADER_ADDRESS_164 = 0x3800
82 DEFINES_164 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP -DCONFIG_NO__FLASH_BYTE_READACCESS -DCONFIG_NO__HAVE_READ_LOCK_FUSE
83 ifeq ($(F_CPU), 12000000)
84 DEFINES_164 += -DCONFIG_NO__BOOTLOADER_CAN_EXIT
85 endif
86
87
88
89 FUSEOPT_324 = $(FUSEOPT_164)
90 BOOTLOADER_ADDRESS_324 = 0x7000
91 DEFINES_324 = #-DEMPTY
92
93
94
95 FUSEOPT_128 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m -U efuse:w:0xfd:m
96 BOOTLOADER_ADDRESS_128 = 0x1E000
97 DEFINES_128 = -D__AVR_LIBC_DEPRECATED_ENABLE__
98
99
100
101 FUSEOPT_640 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
102 BOOTLOADER_ADDRESS_640 = 0xE000
103 DEFINES_640 = #-DEMPTY
104
105
106
107 FUSEOPT_1280 = $(FUSEOPT_640)
108 BOOTLOADER_ADDRESS_1280 = 0x1E000
109 DEFINES_1280 = #-DEMPTY
110
111
112
113 FUSEOPT_1281 = $(FUSEOPT_1280)
114 BOOTLOADER_ADDRESS_1281 = 0x1E000
115 DEFINES_1281 = #-DEMPTY
116
117
118
119 FUSEOPT_2561 = $(FUSEOPT_1281)
120 BOOTLOADER_ADDRESS_2561 = 0x3E000
121 DEFINES_2561 = #-DEMPTY
122
123
124
125
126 #tested devices
127
128 # standard atmega8 needs BODLEVEL to be programed, since it is a 5V device
129 # you may also want to UNprogram SUT1 to get a SLOWER bootup (lfuse then would be 0x3f)
130 FUSEOPT_8 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
131 BOOTLOADER_ADDRESS_8 = 0x1800
132 DEFINES_8 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP
133
134
135
136 FUSEOPT_32 = $(FUSEOPT_16)
137 BOOTLOADER_ADDRESS_32 = 0x7000
138 DEFINES_32 = #-DEMPTY
139
140
141
142 FUSEOPT_162 = -U lfuse:w:0xff:m -U hfuse:w:0x90:m -U efuse:w:0xf9:m
143 BOOTLOADER_ADDRESS_162 = 0x3800
144 DEFINES_162 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP -DCONFIG_NO__HAVE_READ_LOCK_FUSE
145 ifeq ($(F_CPU), 12000000)
146 DEFINES_162 += -DCONFIG_NO__BOOTLOADER_CAN_EXIT
147 endif
148
149
150
151 FUSEOPT_168 = $(FUSEOPT_88)
152 BOOTLOADER_ADDRESS_168 = 0x3800
153 DEFINES_168 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP -DCONFIG_NO__FLASH_BYTE_READACCESS
154 ifeq ($(F_CPU), 12000000)
155 DEFINES_168 += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
156 endif
157
158
159
160 FUSEOPT_328 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0x04:m
161 BOOTLOADER_ADDRESS_328 = 0x7000
162 DEFINES_328 = #-DEMPTY
163
164
165
166 FUSEOPT_644 = $(FUSEOPT_324)
167 BOOTLOADER_ADDRESS_644 = 0xE000
168 DEFINES_644 = #-DEMPTY
169
170
171
172 FUSEOPT_1284 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
173 BOOTLOADER_ADDRESS_1284 = 0x1E000
174 DEFINES_1284 = #-DEMPTY
175
176
177
178 FUSEOPT_2560 = $(FUSEOPT_1280)
179 BOOTLOADER_ADDRESS_2560 = 0x3E000
180 DEFINES_2560 = #-DEMPTY
181
182
183
184
185
186
187 #http://www.nongnu.org/avr-libc/user-manual/using_tools.html
188 #autoselect logic
189 ifeq ($(DEVICE), atmega8535)
190 FUSEOPT = $(FUSEOPT_8535)
191 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_8535)
192 MCUARCH = avr4
193 DEFINES += $(DEFINES_8535)
194 else ifeq ($(DEVICE), atmega8)
195 FUSEOPT = $(FUSEOPT_8)
196 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_8)
197 MCUARCH = avr4
198 DEFINES += $(DEFINES_8)
199 else ifeq ($(DEVICE), atmega16)
200 FUSEOPT = $(FUSEOPT_16)
201 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_16)
202 MCUARCH = avr5
203 DEFINES += $(DEFINES_16)
204 else ifeq ($(DEVICE), atmega32)
205 FUSEOPT = $(FUSEOPT_32)
206 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_32)
207 MCUARCH = avr5
208 DEFINES += $(DEFINES_32)
209 else ifeq ($(DEVICE), atmega88)
210 FUSEOPT = $(FUSEOPT_88)
211 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
212 MCUARCH = avr4
213 DEFINES += $(DEFINES_88)
214 else ifeq ($(DEVICE), atmega88a)
215 FUSEOPT = $(FUSEOPT_88)
216 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
217 MCUARCH = avr4
218 DEFINES += $(DEFINES_88)
219 else ifeq ($(DEVICE), atmega88p)
220 FUSEOPT = $(FUSEOPT_88)
221 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
222 MCUARCH = avr4
223 DEFINES += $(DEFINES_88)
224 else ifeq ($(DEVICE), atmega88pa)
225 FUSEOPT = $(FUSEOPT_88)
226 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
227 MCUARCH = avr4
228 DEFINES += $(DEFINES_88)
229 else ifeq ($(DEVICE), atmega162)
230 FUSEOPT = $(FUSEOPT_162)
231 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_162)
232 MCUARCH = avr5
233 DEFINES += $(DEFINES_162)
234 else ifeq ($(DEVICE), atmega164a)
235 FUSEOPT = $(FUSEOPT_164)
236 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
237 MCUARCH = avr5
238 DEFINES += $(DEFINES_164)
239 else ifeq ($(DEVICE), atmega164p)
240 FUSEOPT = $(FUSEOPT_164)
241 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
242 MCUARCH = avr5
243 DEFINES += $(DEFINES_164)
244 else ifeq ($(DEVICE), atmega164pa)
245 FUSEOPT = $(FUSEOPT_164)
246 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
247 MCUARCH = avr5
248 DEFINES += $(DEFINES_164)
249 else ifeq ($(DEVICE), atmega168)
250 FUSEOPT = $(FUSEOPT_168)
251 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
252 MCUARCH = avr5
253 DEFINES += $(DEFINES_168)
254 else ifeq ($(DEVICE), atmega168a)
255 FUSEOPT = $(FUSEOPT_168)
256 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
257 MCUARCH = avr5
258 DEFINES += $(DEFINES_168)
259 else ifeq ($(DEVICE), atmega168p)
260 FUSEOPT = $(FUSEOPT_168)
261 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
262 MCUARCH = avr5
263 DEFINES += $(DEFINES_168)
264 else ifeq ($(DEVICE), atmega168pa)
265 FUSEOPT = $(FUSEOPT_168)
266 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
267 MCUARCH = avr5
268 DEFINES += $(DEFINES_168)
269 else ifeq ($(DEVICE), atmega324a)
270 FUSEOPT = $(FUSEOPT_324)
271 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
272 MCUARCH = avr5
273 DEFINES += $(DEFINES_324)
274 else ifeq ($(DEVICE), atmega324p)
275 FUSEOPT = $(FUSEOPT_324)
276 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
277 MCUARCH = avr5
278 DEFINES += $(DEFINES_324)
279 else ifeq ($(DEVICE), atmega324pa)
280 FUSEOPT = $(FUSEOPT_324)
281 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
282 MCUARCH = avr5
283 DEFINES += $(DEFINES_324)
284 else ifeq ($(DEVICE), atmega328)
285 FUSEOPT = $(FUSEOPT_328)
286 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
287 MCUARCH = avr5
288 DEFINES += $(DEFINES_328)
289 else ifeq ($(DEVICE), atmega328p)
290 FUSEOPT = $(FUSEOPT_328)
291 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
292 MCUARCH = avr5
293 DEFINES += $(DEFINES_328)
294 else ifeq ($(DEVICE), atmega640)
295 FUSEOPT = $(FUSEOPT_640)
296 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_640)
297 MCUARCH = avr5
298 DEFINES += $(DEFINES_640)
299 else ifeq ($(DEVICE), atmega644)
300 FUSEOPT = $(FUSEOPT_644)
301 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
302 MCUARCH = avr5
303 DEFINES += $(DEFINES_644)
304 else ifeq ($(DEVICE), atmega644a)
305 FUSEOPT = $(FUSEOPT_644)
306 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
307 MCUARCH = avr5
308 DEFINES += $(DEFINES_644)
309 else ifeq ($(DEVICE), atmega644p)
310 FUSEOPT = $(FUSEOPT_644)
311 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
312 MCUARCH = avr5
313 DEFINES += $(DEFINES_644)
314 else ifeq ($(DEVICE), atmega644pa)
315 FUSEOPT = $(FUSEOPT_644)
316 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
317 MCUARCH = avr5
318 DEFINES += $(DEFINES_644)
319 else ifeq ($(DEVICE), atmega128)
320 FUSEOPT = $(FUSEOPT_128)
321 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_128)
322 MCUARCH = avr51
323 DEFINES += $(DEFINES_128)
324 else ifeq ($(DEVICE), atmega1280)
325 FUSEOPT = $(FUSEOPT_1280)
326 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1280)
327 MCUARCH = avr51
328 DEFINES += $(DEFINES_1280)
329 else ifeq ($(DEVICE), atmega1281)
330 FUSEOPT = $(FUSEOPT_1281)
331 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1281)
332 MCUARCH = avr51
333 DEFINES += $(DEFINES_1281)
334 else ifeq ($(DEVICE), atmega1284)
335 FUSEOPT = $(FUSEOPT_1284)
336 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
337 MCUARCH = avr51
338 DEFINES += $(DEFINES_1284)
339 else ifeq ($(DEVICE), atmega1284p)
340 FUSEOPT = $(FUSEOPT_1284)
341 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
342 MCUARCH = avr51
343 DEFINES += $(DEFINES_1284)
344 else ifeq ($(DEVICE), atmega2560)
345 FUSEOPT = $(FUSEOPT_2560)
346 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_2560)
347 MCUARCH = avr6
348 DEFINES += $(DEFINES_2560)
349 else ifeq ($(DEVICE), atmega2561)
350 FUSEOPT = $(FUSEOPT_2561)
351 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_2561)
352 MCUARCH = avr6
353 DEFINES += $(DEFINES_2561)
354 else
355 FUSEOPT = unknown
356 endif
357
358 NEW_BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS)
359
360 # Tools:
361 AVRPATH = $(AVR8TOOLCHAINBINDIR)
362 AVRDUDE = $(AVRDUDEBINDIR)avrdude $(PROGRAMMER) -p $(DEVICE)
363
364 ECHO=@echo
365 GCC=@gcc
366 MAKE=@make
367 RM=@rm -f
368
369 CC=@$(AVRPATH)avr-gcc
370 OBC=@$(AVRPATH)avr-objcopy
371 OBD=@$(AVRPATH)avr-objdump
372 SIZ=@$(AVRPATH)avr-size
373