b3dbb40af0ab89c7d393667027d4afb12f28fb06
[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 # standard atmega8 needs BODLEVEL to be programed, since it is a 5V device
32 # you may also want to UNprogram SUT1 to get a SLOWER bootup (lfuse then would be 0x3f)
33 FUSEOPT_8 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
34 BOOTLOADER_ADDRESS_8 = 0x1800
35 DEFINES_8 = -DCONFIG_NO__BOOTLOADER_CAN_EXIT -DCONFIG_NO__PRECISESLEEP
36
37
38 #untested (WARNING: may destroy ISP ability!)
39 #device always should select maximum bootloader-section size
40 #please mail tests-reports to matrixstorm@gmx.de:
41 FUSEOPT_32 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m
42 BOOTLOADER_ADDRESS_32 = 0x7000
43 DEFINES_32 = #-DEMPTY
44
45
46
47 FUSEOPT_88 = -U lfuse:w:0xd7:m -U hfuse:w:0xd4:m -U efuse:w:0xf8:m
48 BOOTLOADER_ADDRESS_88 = 0x1800
49 DEFINES_88 = -DCONFIG_NO__HAVE_READ_LOCK_FUSE
50
51
52
53 FUSEOPT_164 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
54 BOOTLOADER_ADDRESS_164 = 0x3800
55 DEFINES_164 = -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
56
57
58
59 FUSEOPT_168 = $(FUSEOPT_88)
60 BOOTLOADER_ADDRESS_168 = 0x3800
61 ifeq ($(DANGEROUS), 1)
62 DEFINES_168 = -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__NEED_WATCHDOG
63 else
64 DEFINES_168 = -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
65 endif
66
67
68
69 FUSEOPT_324 = $(FUSEOPT_164)
70 BOOTLOADER_ADDRESS_324 = 0x7000
71 DEFINES_324 = #-DEMPTY
72
73
74
75 FUSEOPT_328 = -U lfuse:w:0xd7:m -U hfuse:w:0xd0:m -U efuse:w:0xfc:m
76 BOOTLOADER_ADDRESS_328 = 0x7000
77 DEFINES_328 = #-DEMPTY
78
79
80
81 FUSEOPT_644 = $(FUSEOPT_324)
82 BOOTLOADER_ADDRESS_644 = 0xE000
83 DEFINES_644 = #-DEMPTY
84
85
86
87 FUSEOPT_128 = -U lfuse:w:0x1f:m -U hfuse:w:0xc0:m -U efuse:w:0xfd:m
88 BOOTLOADER_ADDRESS_128 = 0x1E000
89 DEFINES_128 = #-DEMPTY
90
91
92
93 FUSEOPT_1284 = $(FUSEOPT_644)
94 BOOTLOADER_ADDRESS_1284 = 0x1E000
95 DEFINES_1284 = #-DEMPTY
96
97
98
99
100
101
102
103 #autoselect logic
104 ifeq ($(DEVICE), atmega8)
105 FUSEOPT = $(FUSEOPT_8)
106 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_8)
107 MCUARCH = avr4
108 DEFINES += $(DEFINES_8)
109 else ifeq ($(DEVICE), atmega32)
110 FUSEOPT = $(FUSEOPT_32)
111 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_32)
112 MCUARCH = avr5
113 DEFINES += $(DEFINES_32)
114 else ifeq ($(DEVICE), atmega88)
115 FUSEOPT = $(FUSEOPT_88)
116 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
117 MCUARCH = avr4
118 DEFINES += $(DEFINES_88)
119 else ifeq ($(DEVICE), atmega88a)
120 FUSEOPT = $(FUSEOPT_88)
121 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
122 MCUARCH = avr4
123 DEFINES += $(DEFINES_88)
124 else ifeq ($(DEVICE), atmega88p)
125 FUSEOPT = $(FUSEOPT_88)
126 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
127 MCUARCH = avr4
128 DEFINES += $(DEFINES_88)
129 else ifeq ($(DEVICE), atmega88pa)
130 FUSEOPT = $(FUSEOPT_88)
131 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
132 MCUARCH = avr4
133 DEFINES += $(DEFINES_88)
134 else ifeq ($(DEVICE), atmega164a)
135 FUSEOPT = $(FUSEOPT_164)
136 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
137 MCUARCH = avr5
138 DEFINES += $(DEFINES_164)
139 else ifeq ($(DEVICE), atmega164p)
140 FUSEOPT = $(FUSEOPT_164)
141 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
142 MCUARCH = avr5
143 DEFINES += $(DEFINES_164)
144 else ifeq ($(DEVICE), atmega164pa)
145 FUSEOPT = $(FUSEOPT_164)
146 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
147 MCUARCH = avr5
148 DEFINES += $(DEFINES_164)
149 else ifeq ($(DEVICE), atmega168)
150 FUSEOPT = $(FUSEOPT_168)
151 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
152 MCUARCH = avr5
153 DEFINES += $(DEFINES_168)
154 else ifeq ($(DEVICE), atmega168a)
155 FUSEOPT = $(FUSEOPT_168)
156 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
157 MCUARCH = avr5
158 DEFINES += $(DEFINES_168)
159 else ifeq ($(DEVICE), atmega168p)
160 FUSEOPT = $(FUSEOPT_168)
161 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
162 MCUARCH = avr5
163 DEFINES += $(DEFINES_168)
164 else ifeq ($(DEVICE), atmega168pa)
165 FUSEOPT = $(FUSEOPT_168)
166 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
167 MCUARCH = avr5
168 DEFINES += $(DEFINES_168)
169 else ifeq ($(DEVICE), atmega324a)
170 FUSEOPT = $(FUSEOPT_324)
171 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
172 MCUARCH = avr5
173 DEFINES += $(DEFINES_324)
174 else ifeq ($(DEVICE), atmega324p)
175 FUSEOPT = $(FUSEOPT_324)
176 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
177 MCUARCH = avr5
178 DEFINES += $(DEFINES_324)
179 else ifeq ($(DEVICE), atmega324pa)
180 FUSEOPT = $(FUSEOPT_324)
181 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
182 MCUARCH = avr5
183 DEFINES += $(DEFINES_324)
184 else ifeq ($(DEVICE), atmega328)
185 FUSEOPT = $(FUSEOPT_328)
186 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
187 MCUARCH = avr5
188 DEFINES += $(DEFINES_328)
189 else ifeq ($(DEVICE), atmega328p)
190 FUSEOPT = $(FUSEOPT_328)
191 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
192 MCUARCH = avr5
193 DEFINES += $(DEFINES_328)
194 else ifeq ($(DEVICE), atmega644)
195 FUSEOPT = $(FUSEOPT_644)
196 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
197 MCUARCH = avr5
198 DEFINES += $(DEFINES_644)
199 else ifeq ($(DEVICE), atmega644a)
200 FUSEOPT = $(FUSEOPT_644)
201 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
202 MCUARCH = avr5
203 DEFINES += $(DEFINES_644)
204 else ifeq ($(DEVICE), atmega644p)
205 FUSEOPT = $(FUSEOPT_644)
206 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
207 MCUARCH = avr5
208 DEFINES += $(DEFINES_644)
209 else ifeq ($(DEVICE), atmega644pa)
210 FUSEOPT = $(FUSEOPT_644)
211 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
212 MCUARCH = avr5
213 DEFINES += $(DEFINES_644)
214 else ifeq ($(DEVICE), atmega128)
215 FUSEOPT = $(FUSEOPT_128)
216 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_128)
217 MCUARCH = avr51
218 DEFINES += $(DEFINES_128)
219 else ifeq ($(DEVICE), atmega1284)
220 FUSEOPT = $(FUSEOPT_1284)
221 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
222 MCUARCH = avr51
223 DEFINES += $(DEFINES_1284)
224 else ifeq ($(DEVICE), atmega1284p)
225 FUSEOPT = $(FUSEOPT_1284)
226 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
227 MCUARCH = avr51
228 DEFINES += $(DEFINES_1284)
229 else
230 FUSEOPT = unknown
231 endif
232
233 NEW_BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS)
234
235 # Tools:
236 AVRPATH = $(AVR8TOOLCHAINBINDIR)
237 AVRDUDE = @echo avrdude $(PROGRAMMER) -p $(DEVICE)
238
239 ECHO=@echo
240 GCC=@gcc
241 MAKE=@make
242 RM=@rm -f
243
244 CC=@$(AVRPATH)avr-gcc
245 OBC=@$(AVRPATH)avr-objcopy
246 OBD=@$(AVRPATH)avr-objdump
247 SIZ=@$(AVRPATH)avr-size
248