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