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