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