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)
77 else ifeq ($(DEVICE), atmega32)
78 FUSEOPT = $(FUSEOPT_32)
79 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_32)
80 else ifeq ($(DEVICE), atmega88)
81 FUSEOPT = $(FUSEOPT_88)
82 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
83 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
84 else ifeq ($(DEVICE), atmega88a)
85 FUSEOPT = $(FUSEOPT_88)
86 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
87 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
88 else ifeq ($(DEVICE), atmega88p)
89 FUSEOPT = $(FUSEOPT_88)
90 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
91 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
92 else ifeq ($(DEVICE), atmega88pa)
93 FUSEOPT = $(FUSEOPT_88)
94 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_88)
95 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE
96 else ifeq ($(DEVICE), atmega164a)
97 FUSEOPT = $(FUSEOPT_164)
98 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
99 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
100 else ifeq ($(DEVICE), atmega164p)
101 FUSEOPT = $(FUSEOPT_164)
102 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
103 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
104 else ifeq ($(DEVICE), atmega164pa)
105 FUSEOPT = $(FUSEOPT_164)
106 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_164)
107 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE -DCONFIG_NO__BOOTLOADER_CAN_EXIT
108 else ifeq ($(DEVICE), atmega168)
109 FUSEOPT = $(FUSEOPT_168)
110 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
111 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
112 else ifeq ($(DEVICE), atmega168a)
113 FUSEOPT = $(FUSEOPT_168)
114 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
115 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
116 else ifeq ($(DEVICE), atmega168p)
117 FUSEOPT = $(FUSEOPT_168)
118 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
119 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
120 else ifeq ($(DEVICE), atmega168pa)
121 FUSEOPT = $(FUSEOPT_168)
122 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_168)
123 DEFINES += -DCONFIG_NO__HAVE_READ_LOCK_FUSE $(CHOOSEFLASHSAVE)
124 else ifeq ($(DEVICE), atmega324a)
125 FUSEOPT = $(FUSEOPT_324)
126 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
127 else ifeq ($(DEVICE), atmega324p)
128 FUSEOPT = $(FUSEOPT_324)
129 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
130 else ifeq ($(DEVICE), atmega324pa)
131 FUSEOPT = $(FUSEOPT_324)
132 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_324)
133 else ifeq ($(DEVICE), atmega328)
134 FUSEOPT = $(FUSEOPT_328)
135 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
136 else ifeq ($(DEVICE), atmega328p)
137 FUSEOPT = $(FUSEOPT_328)
138 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_328)
139 else ifeq ($(DEVICE), atmega644)
140 FUSEOPT = $(FUSEOPT_644)
141 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
142 else ifeq ($(DEVICE), atmega644a)
143 FUSEOPT = $(FUSEOPT_644)
144 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
145 else ifeq ($(DEVICE), atmega644p)
146 FUSEOPT = $(FUSEOPT_644)
147 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
148 else ifeq ($(DEVICE), atmega644pa)
149 FUSEOPT = $(FUSEOPT_644)
150 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_644)
151 else ifeq ($(DEVICE), atmega128)
152 FUSEOPT = $(FUSEOPT_128)
153 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_128)
154 else ifeq ($(DEVICE), atmega1284)
155 FUSEOPT = $(FUSEOPT_1284)
156 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
157 else ifeq ($(DEVICE), atmega1284p)
158 FUSEOPT = $(FUSEOPT_1284)
159 BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS_1284)
164 NEW_BOOTLOADER_ADDRESS = $(BOOTLOADER_ADDRESS)
167 AVRPATH = $(AVR8TOOLCHAINBINDIR)
168 AVRDUDE = @echo avrdude $(PROGRAMMER) -p $(DEVICE)
175 CC=@$(AVRPATH)avr-gcc
176 OBC=@$(AVRPATH)avr-objcopy
177 OBD=@$(AVRPATH)avr-objdump
178 SIZ=@$(AVRPATH)avr-size