2 # Project: USBaspLoader 
   3 # Author: Christian Starkjohann 
   4 # Creation Date: 2007-12-10 
   5 # Author: Stephan Bärwolf 
   6 # Improvement Date: 2012-07-31 
   8 # Copyright: (c) 2007 by OBJECTIVE DEVELOPMENT Software GmbH 
   9 # License: GNU GPL v2 (see License.txt) 
  11 ############################################################################### 
  12 # Configure the following variables according to your AVR. 
  13 # Program the device with 
  14 #     make fuse    # to set the clock generator, boot section size etc. 
  15 #     make flash   # to load the boot loader into flash 
  16 #     make lock    # to protect the boot loader from overwriting 
  18 include ..
/Makefile.inc
 
  21 DEFINES 
= #-DDEBUG_LEVEL=2 
  22 # Remove the -fno-* options when you use gcc 3, it does not understand them 
  23 CFLAGS 
= -Wall 
-Os 
-fno-move-loop-invariants 
-fno-tree-scev-cprop 
-fno-inline-small-functions 
-I. 
-mmcu
=$(DEVICE
) -DBOOTLOADER_ADDRESS
=$(BOOTLOADER_ADDRESS
) -DF_CPU
=$(F_CPU
) $(DEFINES
) 
  24 LDFLAGS 
= -Wl
,--relax
,--gc-sections 
-Wl
,--section-start
=.text
=$(BOOTLOADER_ADDRESS
) 
  26 OBJECTS 
=  usbdrv
/usbdrvasm.o usbdrv
/oddebug.o main.o
 
  32         cp 
-Rvp main.hex .
/hexfiles
/usbasploader.hex
 
  35         $(CC
) $(CFLAGS
) -c 
$< -o 
$@
 
  38         $(CC
) $(CFLAGS
) -x assembler-with-cpp 
-c 
$< -o 
$@
 
  39 # "-x assembler-with-cpp" should not be necessary since this is the default 
  40 # file type for the .S (with capital S) extension. However, upper case 
  41 # characters are not always preserved on Windows. To ensure WinAVR 
  42 # compatibility define the file type manually. 
  45         $(CC
) $(CFLAGS
) -S 
$< -o 
$@
 
  48         $(AVRDUDE
) -U flash
:w
:main.hex
:i
 
  51         $(AVRDUDE
) -U flash
:r
:read.hex
:i
 
  66         rm -f main.hex main.bin 
*.o usbdrv
/*.o main.s usbdrv
/oddebug.s usbdrv
/usbdrv.s
 
  70         $(CC
) $(CFLAGS
) -o main.bin 
$(OBJECTS
) $(LDFLAGS
) 
  73         rm -f main.hex main.eep.hex
 
  74         avr-objcopy 
-j .text 
-j .data 
-O ihex main.bin main.hex
 
  78         avr-objdump 
-d main.bin
 
  81         $(CC
) $(CFLAGS
) -E main.c
 
  83 # Special rules for generating hex files for various devices and clock speeds 
  84 ALLHEXFILES 
= hexfiles
/mega8_12mhz.hex hexfiles
/mega8_15mhz.hex hexfiles
/mega8_16mhz.hex \
 
  85         hexfiles
/mega88_12mhz.hex hexfiles
/mega88_15mhz.hex hexfiles
/mega88_16mhz.hex hexfiles
/mega88_20mhz.hex\
 
  86         hexfiles
/mega168_12mhz.hex hexfiles
/mega168_15mhz.hex hexfiles
/mega168_16mhz.hex hexfiles
/mega168_20mhz.hex\
 
  87         hexfiles
/mega328p_12mhz.hex hexfiles
/mega328p_15mhz.hex hexfiles
/mega328p_16mhz.hex hexfiles
/mega328p_20mhz.hex
 
  89 allhexfiles
: $(ALLHEXFILES
) 
  91         avr-size hexfiles
/*.hex
 
  94         @
[ -d hexfiles 
] || mkdir hexfiles
 
  95         @device
=`echo $@ | sed -e 's|.*/mega||g' -e 's|_.*||g'`; \
 
  96         clock
=`echo $@ | sed -e 's|.*_||g' -e 's|mhz.*||g'`; \
 
  97         addr
=`echo $$device | sed -e 's/\([0-9]\)8/\1/g' | awk '{printf("%x", ($$1 - 2) * 1024)}'`; \
 
  98         echo 
"### Make with F_CPU=$${clock}000000 DEVICE=atmega$$device BOOTLOADER_ADDRESS=$$addr"; \
 
 100         $(MAKE
) main.hex F_CPU
=$${clock}000000 DEVICE
=atmega
$$device BOOTLOADER_ADDRESS
=$$addr DEFINES
=-DUSE_AUTOCONFIG
=1