mirror of
				https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
				synced 2025-10-31 03:14:16 +00:00 
			
		
		
		
	
		
			
	
	
		
			504 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
		
		
			
		
	
	
			504 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
|  | # Makefile for ATmegaBOOT
 | ||
|  | # E.Lins, 18.7.2005
 | ||
|  | # $Id$
 | ||
|  | #
 | ||
|  | # Instructions
 | ||
|  | #
 | ||
|  | # To make bootloader .hex file:
 | ||
|  | # make diecimila
 | ||
|  | # make lilypad
 | ||
|  | # make ng
 | ||
|  | # etc...
 | ||
|  | #
 | ||
|  | # To burn bootloader .hex file:
 | ||
|  | # make diecimila_isp
 | ||
|  | # make lilypad_isp
 | ||
|  | # make ng_isp
 | ||
|  | # etc...
 | ||
|  | 
 | ||
|  | # program name should not be changed...
 | ||
|  | PROGRAM    = optiboot | ||
|  | 
 | ||
|  | # The default behavior is to build using tools that are in the users
 | ||
|  | # current path variables, but we can also build using an installed
 | ||
|  | # Arduino user IDE setup, or the Arduino source tree.
 | ||
|  | # Uncomment this next lines to build within the arduino environment,
 | ||
|  | # using the arduino-included avrgcc toolset (mac and pc)
 | ||
|  | # ENV ?= arduino
 | ||
|  | # ENV ?= arduinodev
 | ||
|  | # OS ?= macosx
 | ||
|  | # OS ?= windows
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # enter the parameters for the avrdude isp tool  -b19200
 | ||
|  | #
 | ||
|  | # These are the parameters for a usb-based STK500v2 programmer.
 | ||
|  | # Exact type unknown.  (historical Makefile values.)
 | ||
|  | ISPTOOL	   = stk500v2 | ||
|  | ISPPORT	   =  usb | ||
|  | ISPSPEED   = -b 57600 | ||
|  | #
 | ||
|  | #
 | ||
|  | # These are parameters for using an Arduino with the ArduinoISP sketch
 | ||
|  | #  as the programmer.  On a mac, for a particular Uno as programmer.
 | ||
|  | #ISPTOOL	= stk500v1 -C /Applications/arduino/arduino-0022/hardware/tools/avr/etc/avrdude.conf
 | ||
|  | #ISPPORT	= /dev/tty.usbmodemfd3141 
 | ||
|  | #ISPSPEED	= -b19200
 | ||
|  | 
 | ||
|  | MCU_TARGET = atmega168 | ||
|  | LDSECTIONS  = -Wl,--section-start=.text=0x3e00 -Wl,--section-start=.version=0x3ffe | ||
|  | 
 | ||
|  | # Build environments
 | ||
|  | # Start of some ugly makefile-isms to allow optiboot to be built
 | ||
|  | # in several different environments.  See the README.TXT file for
 | ||
|  | # details.
 | ||
|  | 
 | ||
|  | # default
 | ||
|  | fixpath = $(1) | ||
|  | 
 | ||
|  | ifeq ($(ENV), arduino) | ||
|  | # For Arduino, we assume that we're connected to the optiboot directory
 | ||
|  | # included with the arduino distribution, which means that the full set
 | ||
|  | # of avr-tools are "right up there" in standard places.
 | ||
|  | TOOLROOT = ../../../tools | ||
|  | GCCROOT = $(TOOLROOT)/avr/bin/ | ||
|  | AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf | ||
|  | 
 | ||
|  | ifeq ($(OS), windows) | ||
|  | # On windows, SOME of the tool paths will need to have backslashes instead
 | ||
|  | # of forward slashes (because they use windows cmd.exe for execution instead
 | ||
|  | # of a unix/mingw shell?)  We also have to ensure that a consistent shell
 | ||
|  | # is used even if a unix shell is installed (ie as part of WINAVR)
 | ||
|  | fixpath = $(subst /,\,$1) | ||
|  | SHELL = cmd.exe | ||
|  | endif | ||
|  | 
 | ||
|  | else ifeq ($(ENV), arduinodev) | ||
|  | # Arduino IDE source code environment.  Use the unpacked compilers created
 | ||
|  | # by the build (you'll need to do "ant build" first.)
 | ||
|  | ifeq ($(OS), macosx) | ||
|  | TOOLROOT = ../../../../build/macosx/work/Arduino.app/Contents/Resources/Java/hardware/tools | ||
|  | endif | ||
|  | ifeq ($(OS), windows) | ||
|  | TOOLROOT = ../../../../build/windows/work/hardware/tools | ||
|  | endif | ||
|  | 
 | ||
|  | GCCROOT = $(TOOLROOT)/avr/bin/ | ||
|  | AVRDUDE_CONF = -C$(TOOLROOT)/avr/etc/avrdude.conf | ||
|  | 
 | ||
|  | else | ||
|  | GCCROOT = | ||
|  | AVRDUDE_CONF = | ||
|  | endif | ||
|  | #
 | ||
|  | # End of build environment code.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # 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 0x2f (to
 | ||
|  | # lock it), but since the high two bits of the lock byte are
 | ||
|  | # unused, avrdude would get confused.
 | ||
|  | 
 | ||
|  | ISPFUSES    = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \
 | ||
|  |               -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
 | ||
|  |               -e -u -U lock:w:0x3f:m -U efuse:w:0x$(EFUSE):m \
 | ||
|  |               -U hfuse:w:0x$(HFUSE):m -U lfuse:w:0x$(LFUSE):m | ||
|  | ISPFLASH    = $(GCCROOT)avrdude $(AVRDUDE_CONF) -c $(ISPTOOL) \
 | ||
|  |               -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \
 | ||
|  |               -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x2f: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 = -Os -fno-inline-small-functions -fno-split-wide-types | ||
|  | # -mshort-calls
 | ||
|  | 
 | ||
|  | DEFS       =  | ||
|  | LIBS       = | ||
|  | 
 | ||
|  | CC         = $(GCCROOT)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       = $(LDSECTIONS) -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib | ||
|  | 
 | ||
|  | OBJCOPY        = $(GCCROOT)avr-objcopy | ||
|  | OBJDUMP        = $(call fixpath,$(GCCROOT)avr-objdump) | ||
|  | 
 | ||
|  | SIZE           = $(GCCROOT)avr-size | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #Voice board test
 | ||
|  | # ATmega328
 | ||
|  | #
 | ||
|  | #atmega328: TARGET = atmega328p
 | ||
|  | #atmega328: MCU_TARGET = atmega328p
 | ||
|  | #atmega328: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=38400'
 | ||
|  | #atmega328: AVR_FREQ = 12000000L 
 | ||
|  | #atmega328: LDSECTIONS  = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe
 | ||
|  | #atmega328: $(PROGRAM)_atmega328.hex
 | ||
|  | #atmega328: $(PROGRAM)_atmega328.lst
 | ||
|  | 
 | ||
|  | xmega32D4: TARGET = atxmega32d4 | ||
|  | xmega32D4: MCU_TARGET = atxmega32d4 | ||
|  | xmega32D4: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=57600' | ||
|  | xmega32D4: AVR_FREQ = 32000000L  | ||
|  | xmega32D4: LDSECTIONS  = -Wl,--section-start=.text=0x8000 | ||
|  | xmega32D4: $(PROGRAM)_xmega32d4.hex | ||
|  | xmega32D4: $(PROGRAM)_xmega32d4.lst | ||
|  | 
 | ||
|  | atmega328: TARGET = atmega328 | ||
|  | atmega328: MCU_TARGET = atmega328p | ||
|  | atmega328: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=57600' | ||
|  | atmega328: AVR_FREQ = 16000000L | ||
|  | atmega328: LDSECTIONS  = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe | ||
|  | atmega328: $(PROGRAM)_atmega328_16.hex | ||
|  | atmega328: $(PROGRAM)_atmega328_16.lst | ||
|  | 
 | ||
|  | 
 | ||
|  | # Test platforms
 | ||
|  | # Virtual boot block test
 | ||
|  | virboot328: TARGET = atmega328 | ||
|  | virboot328: MCU_TARGET = atmega328p | ||
|  | virboot328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' '-DVIRTUAL_BOOT' | ||
|  | virboot328: AVR_FREQ = 16000000L | ||
|  | virboot328: LDSECTIONS  = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe | ||
|  | virboot328: $(PROGRAM)_atmega328.hex | ||
|  | virboot328: $(PROGRAM)_atmega328.lst | ||
|  | 
 | ||
|  | # 20MHz clocked platforms
 | ||
|  | #
 | ||
|  | # These are capable of 230400 baud, or 38400 baud on PC (Arduino Avrdude issue)
 | ||
|  | #
 | ||
|  | 
 | ||
|  | pro20: TARGET = pro_20mhz | ||
|  | pro20: MCU_TARGET = atmega168 | ||
|  | pro20: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | pro20: AVR_FREQ = 20000000L | ||
|  | pro20: $(PROGRAM)_pro_20mhz.hex | ||
|  | pro20: $(PROGRAM)_pro_20mhz.lst | ||
|  | 
 | ||
|  | pro20_isp: pro20 | ||
|  | pro20_isp: TARGET = pro_20mhz | ||
|  | # 2.7V brownout
 | ||
|  | pro20_isp: HFUSE = DD | ||
|  | # Full swing xtal (20MHz) 258CK/14CK+4.1ms
 | ||
|  | pro20_isp: LFUSE = C6 | ||
|  | # 512 byte boot
 | ||
|  | pro20_isp: EFUSE = 04 | ||
|  | pro20_isp: isp | ||
|  | 
 | ||
|  | # 16MHz clocked platforms
 | ||
|  | #
 | ||
|  | # These are capable of 230400 baud, or 38400 baud on PC (Arduino Avrdude issue)
 | ||
|  | #
 | ||
|  | 
 | ||
|  | pro16: TARGET = pro_16MHz | ||
|  | pro16: MCU_TARGET = atmega168 | ||
|  | pro16: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | pro16: AVR_FREQ = 16000000L | ||
|  | pro16: $(PROGRAM)_pro_16MHz.hex | ||
|  | pro16: $(PROGRAM)_pro_16MHz.lst | ||
|  | 
 | ||
|  | pro16_isp: pro16 | ||
|  | pro16_isp: TARGET = pro_16MHz | ||
|  | # 2.7V brownout
 | ||
|  | pro16_isp: HFUSE = DD | ||
|  | # Full swing xtal (20MHz) 258CK/14CK+4.1ms
 | ||
|  | pro16_isp: LFUSE = C6 | ||
|  | # 512 byte boot
 | ||
|  | pro16_isp: EFUSE = 04 | ||
|  | pro16_isp: isp | ||
|  | 
 | ||
|  | # Diecimila, Duemilanove with m168, and NG use identical bootloaders
 | ||
|  | # Call it "atmega168" for generality and clarity, keep "diecimila" for
 | ||
|  | # backward compatibility of makefile
 | ||
|  | #
 | ||
|  | atmega168: TARGET = atmega168 | ||
|  | atmega168: MCU_TARGET = atmega168 | ||
|  | atmega168: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=38400' | ||
|  | atmega168: AVR_FREQ = 12000000L  | ||
|  | atmega168: $(PROGRAM)_atmega168.hex | ||
|  | atmega168: $(PROGRAM)_atmega168.lst | ||
|  | 
 | ||
|  | atmega168_isp: atmega168 | ||
|  | atmega168_isp: TARGET = atmega168 | ||
|  | # 2.7V brownout
 | ||
|  | atmega168_isp: HFUSE = DD | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atmega168_isp: LFUSE = FF | ||
|  | # 512 byte boot
 | ||
|  | atmega168_isp: EFUSE = 04 | ||
|  | atmega168_isp: isp | ||
|  | 
 | ||
|  | diecimila: TARGET = diecimila | ||
|  | diecimila: MCU_TARGET = atmega168 | ||
|  | diecimila: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | diecimila: AVR_FREQ = 16000000L  | ||
|  | diecimila: $(PROGRAM)_diecimila.hex | ||
|  | diecimila: $(PROGRAM)_diecimila.lst | ||
|  | 
 | ||
|  | diecimila_isp: diecimila | ||
|  | diecimila_isp: TARGET = diecimila | ||
|  | # 2.7V brownout
 | ||
|  | diecimila_isp: HFUSE = DD | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | diecimila_isp: LFUSE = FF | ||
|  | # 512 byte boot
 | ||
|  | diecimila_isp: EFUSE = 04 | ||
|  | diecimila_isp: isp | ||
|  | 
 | ||
|  | atmega328_isp: atmega328 | ||
|  | atmega328_isp: TARGET = atmega328 | ||
|  | atmega328_isp: MCU_TARGET = atmega328p | ||
|  | # 512 byte boot, SPIEN
 | ||
|  | atmega328_isp: HFUSE = DE | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atmega328_isp: LFUSE = FF | ||
|  | # 2.7V brownout
 | ||
|  | atmega328_isp: EFUSE = FD | ||
|  | atmega328_isp: isp | ||
|  | 
 | ||
|  | atmega1284: TARGET = atmega1284p | ||
|  | atmega1284: MCU_TARGET = atmega1284p | ||
|  | atmega1284: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' '-DBIGBOOT' | ||
|  | atmega1284: AVR_FREQ = 16000000L | ||
|  | atmega1284: LDSECTIONS  = -Wl,--section-start=.text=0x1fc00 -Wl,--section-start=.version=0x1fffe | ||
|  | atmega1284: $(PROGRAM)_atmega1284p.hex | ||
|  | atmega1284: $(PROGRAM)_atmega1284p.lst | ||
|  | 
 | ||
|  | atmega1284_isp: atmega1284 | ||
|  | atmega1284_isp: TARGET = atmega1284p | ||
|  | atmega1284_isp: MCU_TARGET = atmega1284p | ||
|  | # 1024 byte boot
 | ||
|  | atmega1284_isp: HFUSE = DE | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atmega1284_isp: LFUSE = FF | ||
|  | # 2.7V brownout
 | ||
|  | atmega1284_isp: EFUSE = FD | ||
|  | atmega1284_isp: isp | ||
|  | 
 | ||
|  | # Sanguino has a minimum boot size of 1024 bytes, so enable extra functions
 | ||
|  | #
 | ||
|  | sanguino: TARGET = atmega644p | ||
|  | sanguino: MCU_TARGET = atmega644p | ||
|  | sanguino: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' '-DBIGBOOT' | ||
|  | sanguino: AVR_FREQ = 16000000L | ||
|  | sanguino: LDSECTIONS  = -Wl,--section-start=.text=0xfc00 -Wl,--section-start=.version=0xfffe | ||
|  | sanguino: $(PROGRAM)_atmega644p.hex | ||
|  | sanguino: $(PROGRAM)_atmega644p.lst | ||
|  | 
 | ||
|  | sanguino_isp: sanguino | ||
|  | sanguino_isp: TARGET = atmega644p | ||
|  | sanguino_isp: MCU_TARGET = atmega644p | ||
|  | # 1024 byte boot
 | ||
|  | sanguino_isp: HFUSE = DE | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | sanguino_isp: LFUSE = FF | ||
|  | # 2.7V brownout
 | ||
|  | sanguino_isp: EFUSE = FD | ||
|  | sanguino_isp: isp | ||
|  | 
 | ||
|  | # Mega has a minimum boot size of 1024 bytes, so enable extra functions
 | ||
|  | #mega: TARGET = atmega1280
 | ||
|  | mega1280: MCU_TARGET = atmega1280 | ||
|  | mega1280: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' '-DBIGBOOT' | ||
|  | mega1280: AVR_FREQ = 16000000L | ||
|  | mega1280: LDSECTIONS  = -Wl,--section-start=.text=0x1fc00  -Wl,--section-start=.version=0x1fffe | ||
|  | mega1280: $(PROGRAM)_atmega1280.hex | ||
|  | mega1280: $(PROGRAM)_atmega1280.lst | ||
|  | 
 | ||
|  | mega1280_isp: mega | ||
|  | mega1280_isp: TARGET = atmega1280 | ||
|  | mega1280_isp: MCU_TARGET = atmega1280 | ||
|  | # 1024 byte boot
 | ||
|  | mega1280_isp: HFUSE = DE | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | mega1280_isp: LFUSE = FF | ||
|  | # 2.7V brownout
 | ||
|  | mega1280_isp: EFUSE = FD | ||
|  | mega1280_isp: isp | ||
|  | 
 | ||
|  | # ATmega8
 | ||
|  | #
 | ||
|  | atmega8: TARGET = atmega8 | ||
|  | atmega8: MCU_TARGET = atmega8 | ||
|  | atmega8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | atmega8: AVR_FREQ = 16000000L  | ||
|  | atmega8: LDSECTIONS  = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe | ||
|  | atmega8: $(PROGRAM)_atmega8.hex | ||
|  | atmega8: $(PROGRAM)_atmega8.lst | ||
|  | 
 | ||
|  | atmega8_isp: atmega8 | ||
|  | atmega8_isp: TARGET = atmega8 | ||
|  | atmega8_isp: MCU_TARGET = atmega8 | ||
|  | # SPIEN, CKOPT, Bootsize=512B
 | ||
|  | atmega8_isp: HFUSE = CC | ||
|  | # 2.7V brownout, Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atmega8_isp: LFUSE = BF | ||
|  | atmega8_isp: isp | ||
|  | 
 | ||
|  | # ATmega88
 | ||
|  | #
 | ||
|  | atmega88: TARGET = atmega88 | ||
|  | atmega88: MCU_TARGET = atmega88 | ||
|  | atmega88: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=38400' | ||
|  | atmega88: AVR_FREQ = 12000000L  | ||
|  | atmega88: LDSECTIONS  = -Wl,--section-start=.text=0x1e00 -Wl,--section-start=.version=0x1ffe | ||
|  | atmega88: $(PROGRAM)_atmega88.hex | ||
|  | atmega88: $(PROGRAM)_atmega88.lst | ||
|  | 
 | ||
|  | atmega88_isp: atmega88 | ||
|  | atmega88_isp: TARGET = atmega88 | ||
|  | atmega88_isp: MCU_TARGET = atmega88 | ||
|  | # 2.7V brownout
 | ||
|  | atmega88_isp: HFUSE = DD | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atemga88_isp: LFUSE = FF | ||
|  | # 512 byte boot
 | ||
|  | atmega88_isp: EFUSE = 04 | ||
|  | atmega88_isp: isp | ||
|  | 
 | ||
|  | 
 | ||
|  | # 8MHz clocked platforms
 | ||
|  | #
 | ||
|  | # These are capable of 38400 baud
 | ||
|  | #
 | ||
|  | 
 | ||
|  | lilypad: TARGET = lilypad | ||
|  | lilypad: MCU_TARGET = atmega168 | ||
|  | lilypad: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | lilypad: AVR_FREQ = 8000000L | ||
|  | lilypad: $(PROGRAM)_lilypad.hex | ||
|  | lilypad: $(PROGRAM)_lilypad.lst | ||
|  | 
 | ||
|  | lilypad_isp: lilypad | ||
|  | lilypad_isp: TARGET = lilypad | ||
|  | # 2.7V brownout
 | ||
|  | lilypad_isp: HFUSE = DD | ||
|  | # Internal 8MHz osc (8MHz) Slow rising power
 | ||
|  | lilypad_isp: LFUSE = E2 | ||
|  | # 512 byte boot
 | ||
|  | lilypad_isp: EFUSE = 04 | ||
|  | lilypad_isp: isp | ||
|  | 
 | ||
|  | lilypad_resonator: TARGET = lilypad_resonator | ||
|  | lilypad_resonator: MCU_TARGET = atmega168 | ||
|  | lilypad_resonator: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | lilypad_resonator: AVR_FREQ = 8000000L | ||
|  | lilypad_resonator: $(PROGRAM)_lilypad_resonator.hex | ||
|  | lilypad_resonator: $(PROGRAM)_lilypad_resonator.lst | ||
|  | 
 | ||
|  | lilypad_resonator_isp: lilypad_resonator | ||
|  | lilypad_resonator_isp: TARGET = lilypad_resonator | ||
|  | # 2.7V brownout
 | ||
|  | lilypad_resonator_isp: HFUSE = DD | ||
|  | # Full swing xtal (20MHz) 258CK/14CK+4.1ms
 | ||
|  | lilypad_resonator_isp: LFUSE = C6 | ||
|  | # 512 byte boot
 | ||
|  | lilypad_resonator_isp: EFUSE = 04 | ||
|  | lilypad_resonator_isp: isp | ||
|  | 
 | ||
|  | pro8: TARGET = pro_8MHz | ||
|  | pro8: MCU_TARGET = atmega168 | ||
|  | pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | pro8: AVR_FREQ = 8000000L | ||
|  | pro8: $(PROGRAM)_pro_8MHz.hex | ||
|  | pro8: $(PROGRAM)_pro_8MHz.lst | ||
|  | 
 | ||
|  | pro8_isp: pro8 | ||
|  | pro8_isp: TARGET = pro_8MHz | ||
|  | # 2.7V brownout
 | ||
|  | pro8_isp: HFUSE = DD | ||
|  | # Full swing xtal (20MHz) 258CK/14CK+4.1ms
 | ||
|  | pro8_isp: LFUSE = C6 | ||
|  | # 512 byte boot
 | ||
|  | pro8_isp: EFUSE = 04 | ||
|  | pro8_isp: isp | ||
|  | 
 | ||
|  | atmega328_pro8: TARGET = atmega328_pro_8MHz | ||
|  | atmega328_pro8: MCU_TARGET = atmega328p | ||
|  | atmega328_pro8: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=38400' | ||
|  | atmega328_pro8: AVR_FREQ = 8000000L | ||
|  | atmega328_pro8: LDSECTIONS = -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe | ||
|  | atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.hex | ||
|  | atmega328_pro8: $(PROGRAM)_atmega328_pro_8MHz.lst | ||
|  | 
 | ||
|  | atmega328_pro8_isp: atmega328_pro8 | ||
|  | atmega328_pro8_isp: TARGET = atmega328_pro_8MHz | ||
|  | atmega328_pro8_isp: MCU_TARGET = atmega328p | ||
|  | # 512 byte boot, SPIEN
 | ||
|  | atmega328_pro8_isp: HFUSE = DE | ||
|  | # Low power xtal (16MHz) 16KCK/14CK+65ms
 | ||
|  | atmega328_pro8_isp: LFUSE = FF | ||
|  | # 2.7V brownout
 | ||
|  | atmega328_pro8_isp: EFUSE = DE | ||
|  | atmega328_pro8_isp: isp | ||
|  | 
 | ||
|  | # 1MHz clocked platforms
 | ||
|  | #
 | ||
|  | # These are capable of 9600 baud
 | ||
|  | #
 | ||
|  | 
 | ||
|  | luminet: TARGET = luminet | ||
|  | luminet: MCU_TARGET = attiny84 | ||
|  | luminet: CFLAGS += '-DLED_START_FLASHES=3' '-DSOFT_UART' '-DBAUD_RATE=9600' | ||
|  | luminet: CFLAGS += '-DVIRTUAL_BOOT_PARTITION' | ||
|  | luminet: AVR_FREQ = 1000000L | ||
|  | luminet: LDSECTIONS = -Wl,--section-start=.text=0x1d00 -Wl,--section-start=.version=0x1efe | ||
|  | luminet: $(PROGRAM)_luminet.hex | ||
|  | luminet: $(PROGRAM)_luminet.lst | ||
|  | 
 | ||
|  | luminet_isp: luminet | ||
|  | luminet_isp: TARGET = luminet | ||
|  | luminet_isp: MCU_TARGET = attiny84 | ||
|  | # Brownout disabled
 | ||
|  | luminet_isp: HFUSE = DF | ||
|  | # 1MHz internal oscillator, slowly rising power
 | ||
|  | luminet_isp: LFUSE = 62 | ||
|  | # Self-programming enable
 | ||
|  | luminet_isp: EFUSE = FE | ||
|  | luminet_isp: isp | ||
|  | 
 | ||
|  | #
 | ||
|  | # Generic build instructions
 | ||
|  | #
 | ||
|  | #
 | ||
|  | 
 | ||
|  | isp: $(TARGET) | ||
|  | 	$(ISPFUSES) | ||
|  | 	$(ISPFLASH) | ||
|  | 
 | ||
|  | isp-stk500: $(PROGRAM)_$(TARGET).hex | ||
|  | 	$(STK500-1) | ||
|  | 	$(STK500-2) | ||
|  | 
 | ||
|  | %.elf: $(OBJ) | ||
|  | 	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) | ||
|  | 	$(SIZE) $@ | ||
|  | 
 | ||
|  | 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 -j .version --set-section-flags .version=alloc,load -O ihex $< $@ | ||
|  | 
 | ||
|  | %.srec: %.elf | ||
|  | 	$(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O srec $< $@ | ||
|  | 
 | ||
|  | %.bin: %.elf | ||
|  | 	$(OBJCOPY) -j .text -j .data -j .version --set-section-flags .version=alloc,load -O binary $< $@ |