BUGFIX: fix issue 6 to really disable watchdog timer
[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_16 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
43 BOOTLOADER_ADDRESS_16 = 0x3800
44 DEFINES_16 = -DCONFIG_USE__EXCESSIVE_ASSEMBLER -DCONFIG_NO__NEED_WATCHDOG -DCONFIG_NO__PRECISESLEEP
45
46
47
48 FUSEOPT_88 = -U lfuse:w:0xd7:m -U hfuse:w:0xd4:m -U efuse:w:0xf8:m
49 BOOTLOADER_ADDRESS_88 = 0x1800
50 DEFINES_88 = -DCONFIG_NO__FLASH_BYTE_READACCESS -DCONFIG_NO__HAVE_READ_LOCK_FUSE
51
52
53
54 FUSEOPT_164 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
55 BOOTLOADER_ADDRESS_164 = 0x3800
56 DEFINES_164 = -DCONFIG_NO__FLASH_BYTE_READACCESS -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
57
58
59
60 FUSEOPT_324 = $(FUSEOPT_164)
61 BOOTLOADER_ADDRESS_324 = 0x7000
62 DEFINES_324 = #-DEMPTY
63
64
65
66 FUSEOPT_128 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m -U efuse:w:0xfd:m
67 BOOTLOADER_ADDRESS_128 = 0x1E000
68 DEFINES_128 = #-DEMPTY
69
70
71
72 FUSEOPT_640 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
73 BOOTLOADER_ADDRESS_640 = 0xE000
74 DEFINES_640 = #-DEMPTY
75
76
77
78 FUSEOPT_1280 = $(FUSEOPT_640)
79 BOOTLOADER_ADDRESS_1280 = 0x1E000
80 DEFINES_1280 = #-DEMPTY
81
82
83
84 FUSEOPT_1281 = $(FUSEOPT_1280)
85 BOOTLOADER_ADDRESS_1281 = 0x1E000
86 DEFINES_1281 = #-DEMPTY
87
88
89
90 FUSEOPT_2560 = $(FUSEOPT_1280)
91 BOOTLOADER_ADDRESS_2560 = 0x3E000
92 DEFINES_2560 = #-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
148
149
150 #http://www.nongnu.org/avr-libc/user-manual/using_tools.html
151 #autoselect logic
152 ifeq ($(DEVICE), atmega8)
153 FUSEOPT = $(FUSEOPT_8)
154 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_8)
155 MCUARCH = avr4
156 DEFINES += $(DEFINES_8)
157 else ifeq ($(DEVICE), atmega16)
158 FUSEOPT = $(FUSEOPT_16)
159 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_16)
160 MCUARCH = avr5
161 DEFINES += $(DEFINES_16)
162 else ifeq ($(DEVICE), atmega32)
163 FUSEOPT = $(FUSEOPT_32)
164 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_32)
165 MCUARCH = avr5
166 DEFINES += $(DEFINES_32)
167 else ifeq ($(DEVICE), atmega88)
168 FUSEOPT = $(FUSEOPT_88)
169 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
170 MCUARCH = avr4
171 DEFINES += $(DEFINES_88)
172 else ifeq ($(DEVICE), atmega88a)
173 FUSEOPT = $(FUSEOPT_88)
174 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
175 MCUARCH = avr4
176 DEFINES += $(DEFINES_88)
177 else ifeq ($(DEVICE), atmega88p)
178 FUSEOPT = $(FUSEOPT_88)
179 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
180 MCUARCH = avr4
181 DEFINES += $(DEFINES_88)
182 else ifeq ($(DEVICE), atmega88pa)
183 FUSEOPT = $(FUSEOPT_88)
184 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
185 MCUARCH = avr4
186 DEFINES += $(DEFINES_88)
187 else ifeq ($(DEVICE), atmega164a)
188 FUSEOPT = $(FUSEOPT_164)
189 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
190 MCUARCH = avr5
191 DEFINES += $(DEFINES_164)
192 else ifeq ($(DEVICE), atmega164p)
193 FUSEOPT = $(FUSEOPT_164)
194 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
195 MCUARCH = avr5
196 DEFINES += $(DEFINES_164)
197 else ifeq ($(DEVICE), atmega164pa)
198 FUSEOPT = $(FUSEOPT_164)
199 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
200 MCUARCH = avr5
201 DEFINES += $(DEFINES_164)
202 else ifeq ($(DEVICE), atmega168)
203 FUSEOPT = $(FUSEOPT_168)
204 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
205 MCUARCH = avr5
206 DEFINES += $(DEFINES_168)
207 else ifeq ($(DEVICE), atmega168a)
208 FUSEOPT = $(FUSEOPT_168)
209 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
210 MCUARCH = avr5
211 DEFINES += $(DEFINES_168)
212 else ifeq ($(DEVICE), atmega168p)
213 FUSEOPT = $(FUSEOPT_168)
214 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
215 MCUARCH = avr5
216 DEFINES += $(DEFINES_168)
217 else ifeq ($(DEVICE), atmega168pa)
218 FUSEOPT = $(FUSEOPT_168)
219 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
220 MCUARCH = avr5
221 DEFINES += $(DEFINES_168)
222 else ifeq ($(DEVICE), atmega324a)
223 FUSEOPT = $(FUSEOPT_324)
224 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
225 MCUARCH = avr5
226 DEFINES += $(DEFINES_324)
227 else ifeq ($(DEVICE), atmega324p)
228 FUSEOPT = $(FUSEOPT_324)
229 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
230 MCUARCH = avr5
231 DEFINES += $(DEFINES_324)
232 else ifeq ($(DEVICE), atmega324pa)
233 FUSEOPT = $(FUSEOPT_324)
234 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
235 MCUARCH = avr5
236 DEFINES += $(DEFINES_324)
237 else ifeq ($(DEVICE), atmega328)
238 FUSEOPT = $(FUSEOPT_328)
239 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
240 MCUARCH = avr5
241 DEFINES += $(DEFINES_328)
242 else ifeq ($(DEVICE), atmega328p)
243 FUSEOPT = $(FUSEOPT_328)
244 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
245 MCUARCH = avr5
246 DEFINES += $(DEFINES_328)
247 else ifeq ($(DEVICE), atmega640)
248 FUSEOPT = $(FUSEOPT_640)
249 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_640)
250 MCUARCH = avr5
251 DEFINES += $(DEFINES_640)
252 else ifeq ($(DEVICE), atmega644)
253 FUSEOPT = $(FUSEOPT_644)
254 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
255 MCUARCH = avr5
256 DEFINES += $(DEFINES_644)
257 else ifeq ($(DEVICE), atmega644a)
258 FUSEOPT = $(FUSEOPT_644)
259 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
260 MCUARCH = avr5
261 DEFINES += $(DEFINES_644)
262 else ifeq ($(DEVICE), atmega644p)
263 FUSEOPT = $(FUSEOPT_644)
264 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
265 MCUARCH = avr5
266 DEFINES += $(DEFINES_644)
267 else ifeq ($(DEVICE), atmega644pa)
268 FUSEOPT = $(FUSEOPT_644)
269 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
270 MCUARCH = avr5
271 DEFINES += $(DEFINES_644)
272 else ifeq ($(DEVICE), atmega128)
273 FUSEOPT = $(FUSEOPT_128)
274 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_128)
275 MCUARCH = avr51
276 DEFINES += $(DEFINES_128)
277 else ifeq ($(DEVICE), atmega1280)
278 FUSEOPT = $(FUSEOPT_1280)
279 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1280)
280 MCUARCH = avr51
281 DEFINES += $(DEFINES_1280)
282 else ifeq ($(DEVICE), atmega1281)
283 FUSEOPT = $(FUSEOPT_1281)
284 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1281)
285 MCUARCH = avr51
286 DEFINES += $(DEFINES_1281)
287 else ifeq ($(DEVICE), atmega1284)
288 FUSEOPT = $(FUSEOPT_1284)
289 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
290 MCUARCH = avr51
291 DEFINES += $(DEFINES_1284)
292 else ifeq ($(DEVICE), atmega1284p)
293 FUSEOPT = $(FUSEOPT_1284)
294 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
295 MCUARCH = avr51
296 DEFINES += $(DEFINES_1284)
297 else ifeq ($(DEVICE), atmega2560)
298 FUSEOPT = $(FUSEOPT_2560)
299 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_2560)
300 MCUARCH = avr6
301 DEFINES += $(DEFINES_2560)
302 else ifeq ($(DEVICE), atmega2561)
303 FUSEOPT = $(FUSEOPT_2561)
304 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_2561)
305 MCUARCH = avr6
306 DEFINES += $(DEFINES_2561)
307 else
308 FUSEOPT = unknown
309 endif
310
311 NEW_BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS)
312
313 # Tools:
314 AVRPATH = $(AVR8TOOLCHAINBINDIR)
315 AVRDUDE = @echo avrdude $(PROGRAMMER) -p $(DEVICE)
316
317 ECHO=@echo
318 GCC=@gcc
319 MAKE=@make
320 RM=@rm -f
321
322 CC=@$(AVRPATH)avr-gcc
323 OBC=@$(AVRPATH)avr-objcopy
324 OBD=@$(AVRPATH)avr-objdump
325 SIZ=@$(AVRPATH)avr-size
326