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