mirror of
https://github.com/arduino/Arduino.git
synced 2024-12-04 15:24:12 +01:00
30dc672dff
* Updating ATmega168 bootloader to work with standard distributions of avrdude (responding to signature requests made with the universal SPI command) and correctly store EEPROM data. Thanks to ladyada. * Changing compilation process to generate .eep file and allow for use of EEMEM directive (although not yet uploading EEPROM data).
144 lines
3.9 KiB
Makefile
Executable File
144 lines
3.9 KiB
Makefile
Executable File
# Makefile for ATmegaBOOT
|
|
# E.Lins, 18.7.2005
|
|
# $Id$
|
|
#
|
|
# Instructions
|
|
#
|
|
# To build the bootloader for the Diecimila:
|
|
# make diecimila
|
|
#
|
|
# To build the bootloader for the NG/Mini:
|
|
# make ng
|
|
#
|
|
# To build the bootloader for the LilyPad:
|
|
# make lilypad
|
|
#
|
|
# To burn the bootloader:
|
|
# make TARGET=diecimila isp
|
|
# make TARGET=ng isp
|
|
# make TARGET=lilypad isp
|
|
# make TARGET=pro8 isp
|
|
|
|
# program name should not be changed...
|
|
PROGRAM = ATmegaBOOT_168
|
|
|
|
# enter the parameters for the avrdude isp tool
|
|
ISPTOOL = stk500v2
|
|
ISPPORT = usb
|
|
ISPSPEED = -b 115200
|
|
|
|
MCU_TARGET = atmega168
|
|
LDSECTION = --section-start=.text=0x3800
|
|
|
|
# the efuse should really be 0xf8; since, however, only the lower
|
|
# three bits of that byte are used on the atmega168, avrdude gets
|
|
# confused if you specify 1's for the higher bits, see:
|
|
# http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/
|
|
#
|
|
# similarly, the lock bits should be 0xff instead of 0x3f (to
|
|
# unlock the bootloader section) and 0xcf instead of 0x0f (to
|
|
# lock it), but since the high two bits of the lock byte are
|
|
# unused, avrdude would get confused.
|
|
ISPFUSES = avrdude -c $(ISPTOOL) -p m168 -P $(ISPPORT) $(ISPSPEED) -e -u -U lock:w:0x3f:m -U efuse:w:0x00:m -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m
|
|
ISPFLASH = avrdude -c $(ISPTOOL) -p m168 -P $(ISPPORT) $(ISPSPEED) -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m
|
|
|
|
STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe"
|
|
STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex -lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt
|
|
STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt
|
|
|
|
|
|
OBJ = $(PROGRAM).o
|
|
OPTIMIZE = -O2
|
|
|
|
DEFS =
|
|
LIBS =
|
|
|
|
CC = avr-gcc
|
|
|
|
# Override is only needed by avr-lib build system.
|
|
|
|
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS)
|
|
override LDFLAGS = -Wl,$(LDSECTION)
|
|
#override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION)
|
|
|
|
OBJCOPY = avr-objcopy
|
|
OBJDUMP = avr-objdump
|
|
|
|
all:
|
|
|
|
lilypad: TARGET = lilypad
|
|
lilypad: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
|
|
lilypad: $(PROGRAM)_lilypad.hex
|
|
lilypad: AVR_FREQ = 8000000L
|
|
lilypad: HFUSE = DD
|
|
lilypad: LFUSE = E2
|
|
|
|
lilypad_resonator: TARGET = lilypad_resonator
|
|
lilypad_resonator: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=3'
|
|
lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex
|
|
lilypad_resonator: AVR_FREQ = 8000000L
|
|
lilypad_resonator: HFUSE = DD
|
|
lilypad_resonator: LFUSE = C6
|
|
|
|
pro8: TARGET = pro_8MHz
|
|
pro8: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
|
|
pro8: $(PROGRAM)_pro_8MHz.hex
|
|
pro8: AVR_FREQ = 8000000L
|
|
pro8: HFUSE = DD
|
|
pro8: LFUSE = C6
|
|
|
|
pro16: TARGET = pro_16MHz
|
|
pro16: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
|
|
pro16: $(PROGRAM)_pro_16MHz.hex
|
|
pro16: AVR_FREQ = 16000000L
|
|
pro16: HFUSE = DD
|
|
pro16: LFUSE = C6
|
|
|
|
pro20: TARGET = pro_20mhz
|
|
pro20: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1' '-DWATCHDOG_MODS'
|
|
pro20: $(PROGRAM)_pro_20mhz.hex
|
|
pro20: AVR_FREQ = 20000000L
|
|
pro20: HFUSE = DD
|
|
pro20: LFUSE = C6
|
|
|
|
diecimila: TARGET = diecimila
|
|
diecimila: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=1'
|
|
diecimila: $(PROGRAM)_diecimila.hex
|
|
diecimila: AVR_FREQ = 16000000L
|
|
diecimila: HFUSE = DD
|
|
diecimila: LFUSE = FF
|
|
|
|
ng: TARGET = ng
|
|
ng: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>1' '-DNUM_LED_FLASHES=3'
|
|
ng: $(PROGRAM)_ng.hex
|
|
ng: AVR_FREQ = 16000000L
|
|
ng: HFUSE = DD
|
|
ng: LFUSE = FF
|
|
|
|
isp: $(PROGRAM)_$(TARGET).hex
|
|
$(ISPFUSES)
|
|
$(ISPFLASH)
|
|
|
|
isp-stk500: $(PROGRAM)_$(TARGET).hex
|
|
$(STK500-1)
|
|
$(STK500-2)
|
|
|
|
%.elf: $(OBJ)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
|
|
|
|
clean:
|
|
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex
|
|
|
|
%.lst: %.elf
|
|
$(OBJDUMP) -h -S $< > $@
|
|
|
|
%.hex: %.elf
|
|
$(OBJCOPY) -j .text -j .data -O ihex $< $@
|
|
|
|
%.srec: %.elf
|
|
$(OBJCOPY) -j .text -j .data -O srec $< $@
|
|
|
|
%.bin: %.elf
|
|
$(OBJCOPY) -j .text -j .data -O binary $< $@
|
|
|