2 # Project: USBaspLoader (updater)
3 # Author: Stephan Bärwolf
4 # Creation Date: 2012-09-01
6 # License: GNU GPL v2 (see License.txt)
11 # where the updating firmware should be located (starting address)
14 # some MCUs with small BLS (bootloader section) need to deactivate some
15 # features in order to fit into BLS.
16 # If this option is enabled, also essential features may become deactivated
17 # Esp. you MUST ensure not to have watchdog initially enabled when using this!
20 # PROGRAMMER contains AVRDUDE options to address your programmer
21 # PROGRAMMER = -c pony-stk200
22 PROGRAMMER = -c usbasp
24 # since USBaspLoader supports HAVE_BLB11_SOFTW_LOCKBIT...
25 LOCKOPT = -U lock:w:0x3f:m
27 # standard atmega8 needs BODLEVEL to be programed, since it is a 5V device
28 # you may also want to UNprogram SUT1 to get a SLOWER bootup (lfuse then would be 0x3f)
29 FUSEOPT_8 = -U hfuse:w:0xc0:m -U lfuse:w:0x1f:m
30 BOOTLOADER_ADDRESS_8 = 0x1800
33 #untested (WARNING: may destroy ISP ability!)
34 #device always should select maximum bootloader-section size
35 #please mail tests-reports to matrixstorm@gmx.de:
37 BOOTLOADER_ADDRESS_32 = 0x7000
39 FUSEOPT_88 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
40 BOOTLOADER_ADDRESS_88 = 0x1800
43 BOOTLOADER_ADDRESS_164 = 0x3800
45 FUSEOPT_168 = -U hfuse:w:0xd6:m -U lfuse:w:0xdf:m -U efuse:w:0x00:m
46 BOOTLOADER_ADDRESS_168 = 0x3800
49 BOOTLOADER_ADDRESS_324 = 0x7000
51 FUSEOPT_328 = -U lfuse:w:0xf7:m -U hfuse:w:0xda:m -U efuse:w:0x03:m
52 BOOTLOADER_ADDRESS_328 = 0x7000
55 BOOTLOADER_ADDRESS_644 = 0xE000
58 BOOTLOADER_ADDRESS_128 = 0x1E000
60 FUSEOPT_1284 = unknown
61 BOOTLOADER_ADDRESS_1284 = 0x1E000
65 ifeq ($(DANGEROUS), 1)
66 CHOOSEFLASHSAVE = -DCONFIG_NO__NEED_WATCHDOG
68 CHOOSEFLASHSAVE = -DCONFIG_NO__BOOTLOADER_CAN_EXIT
73 DEFINES = #-DDEBUG_LEVEL=2
74 ifeq ($(DEVICE), atmega8)
75 FUSEOPT = $(FUSEOPT_8)
76 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_8)
78 else ifeq ($(DEVICE), atmega32)
79 FUSEOPT = $(FUSEOPT_32)
80 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_32)
82 else ifeq ($(DEVICE), atmega88)
83 FUSEOPT = $(FUSEOPT_88)
84 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
86 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
87 else ifeq ($(DEVICE), atmega88a)
88 FUSEOPT = $(FUSEOPT_88)
89 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
91 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
92 else ifeq ($(DEVICE), atmega88p)
93 FUSEOPT = $(FUSEOPT_88)
94 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
96 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
97 else ifeq ($(DEVICE), atmega88pa)
98 FUSEOPT = $(FUSEOPT_88)
99 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
101 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
102 else ifeq ($(DEVICE), atmega164a)
103 FUSEOPT = $(FUSEOPT_164)
104 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
106 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
107 else ifeq ($(DEVICE), atmega164p)
108 FUSEOPT = $(FUSEOPT_164)
109 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
111 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
112 else ifeq ($(DEVICE), atmega164pa)
113 FUSEOPT = $(FUSEOPT_164)
114 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
116 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
117 else ifeq ($(DEVICE), atmega168)
118 FUSEOPT = $(FUSEOPT_168)
119 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
121 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
122 else ifeq ($(DEVICE), atmega168a)
123 FUSEOPT = $(FUSEOPT_168)
124 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
126 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
127 else ifeq ($(DEVICE), atmega168p)
128 FUSEOPT = $(FUSEOPT_168)
129 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
131 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
132 else ifeq ($(DEVICE), atmega168pa)
133 FUSEOPT = $(FUSEOPT_168)
134 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
136 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
137 else ifeq ($(DEVICE), atmega324a)
138 FUSEOPT = $(FUSEOPT_324)
139 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
141 else ifeq ($(DEVICE), atmega324p)
142 FUSEOPT = $(FUSEOPT_324)
143 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
145 else ifeq ($(DEVICE), atmega324pa)
146 FUSEOPT = $(FUSEOPT_324)
147 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
149 else ifeq ($(DEVICE), atmega328)
150 FUSEOPT = $(FUSEOPT_328)
151 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
153 else ifeq ($(DEVICE), atmega328p)
154 FUSEOPT = $(FUSEOPT_328)
155 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
157 else ifeq ($(DEVICE), atmega644)
158 FUSEOPT = $(FUSEOPT_644)
159 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
161 else ifeq ($(DEVICE), atmega644a)
162 FUSEOPT = $(FUSEOPT_644)
163 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
165 else ifeq ($(DEVICE), atmega644p)
166 FUSEOPT = $(FUSEOPT_644)
167 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
169 else ifeq ($(DEVICE), atmega644pa)
170 FUSEOPT = $(FUSEOPT_644)
171 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
173 else ifeq ($(DEVICE), atmega128)
174 FUSEOPT = $(FUSEOPT_128)
175 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_128)
177 else ifeq ($(DEVICE), atmega1284)
178 FUSEOPT = $(FUSEOPT_1284)
179 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
181 else ifeq ($(DEVICE), atmega1284p)
182 FUSEOPT = $(FUSEOPT_1284)
183 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
189 NEW_BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS)
192 AVRPATH = $(AVR8TOOLCHAINBINDIR)
193 AVRDUDE = @echo avrdude $(PROGRAMMER) -p $(DEVICE)
200 CC=@$(AVRPATH)avr-gcc
201 OBC=@$(AVRPATH)avr-objcopy
202 OBD=@$(AVRPATH)avr-objdump
203 SIZ=@$(AVRPATH)avr-size