root / arduino-1.0 / hardware / arduino / bootloaders / bt / Makefile @ 58d82c77
History | View | Annotate | Download (2.83 KB)
1 | 58d82c77 | Tom Mullins | # Makefile for ATmegaBOOT |
---|---|---|---|
2 | # E.Lins, 18.7.2005 |
||
3 | # $Id$ |
||
4 | # |
||
5 | # Instructions |
||
6 | # |
||
7 | # To make bootloader .hex file: |
||
8 | # make diecimila |
||
9 | # make lilypad |
||
10 | # make ng |
||
11 | # etc... |
||
12 | # |
||
13 | # To burn bootloader .hex file: |
||
14 | # make diecimila_isp |
||
15 | # make lilypad_isp |
||
16 | # make ng_isp |
||
17 | # etc... |
||
18 | |||
19 | # program name should not be changed... |
||
20 | PROGRAM = ATmegaBOOT_168 |
||
21 | |||
22 | # enter the parameters for the avrdude isp tool |
||
23 | ISPTOOL = stk500v2 |
||
24 | ISPPORT = usb |
||
25 | ISPSPEED = -b 115200 |
||
26 | |||
27 | MCU_TARGET = atmega168 |
||
28 | LDSECTION = --section-start=.text=0x3800 |
||
29 | |||
30 | # the efuse should really be 0xf8; since, however, only the lower |
||
31 | # three bits of that byte are used on the atmega168, avrdude gets |
||
32 | # confused if you specify 1's for the higher bits, see: |
||
33 | # http://tinker.it/now/2007/02/24/the-tale-of-avrdude-atmega168-and-extended-bits-fuses/ |
||
34 | # |
||
35 | # similarly, the lock bits should be 0xff instead of 0x3f (to |
||
36 | # unlock the bootloader section) and 0xcf instead of 0x0f (to |
||
37 | # lock it), but since the high two bits of the lock byte are |
||
38 | # unused, avrdude would get confused. |
||
39 | |||
40 | ISPFUSES = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ |
||
41 | -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 |
||
42 | ISPFLASH = avrdude -c $(ISPTOOL) -p $(MCU_TARGET) -P $(ISPPORT) $(ISPSPEED) \ |
||
43 | -U flash:w:$(PROGRAM)_$(TARGET).hex -U lock:w:0x0f:m |
||
44 | |||
45 | STK500 = "C:\Program Files\Atmel\AVR Tools\STK500\Stk500.exe" |
||
46 | STK500-1 = $(STK500) -e -d$(MCU_TARGET) -pf -vf -if$(PROGRAM)_$(TARGET).hex \ |
||
47 | -lFF -LFF -f$(HFUSE)$(LFUSE) -EF8 -ms -q -cUSB -I200kHz -s -wt |
||
48 | STK500-2 = $(STK500) -d$(MCU_TARGET) -ms -q -lCF -LCF -cUSB -I200kHz -s -wt |
||
49 | |||
50 | |||
51 | OBJ = $(PROGRAM).o |
||
52 | OPTIMIZE = -O2 |
||
53 | |||
54 | DEFS = |
||
55 | LIBS = |
||
56 | |||
57 | CC = avr-gcc |
||
58 | |||
59 | # Override is only needed by avr-lib build system. |
||
60 | |||
61 | override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) -DF_CPU=$(AVR_FREQ) $(DEFS) |
||
62 | override LDFLAGS = -Wl,$(LDSECTION) |
||
63 | #override LDFLAGS = -Wl,-Map,$(PROGRAM).map,$(LDSECTION) |
||
64 | |||
65 | OBJCOPY = avr-objcopy |
||
66 | OBJDUMP = avr-objdump |
||
67 | |||
68 | all: |
||
69 | |||
70 | atmega328_bt: TARGET = atmega328_bt |
||
71 | atmega328_bt: MCU_TARGET = atmega328p |
||
72 | atmega328_bt: AVR_FREQ = 16000000L |
||
73 | atmega328_bt: LDSECTION = --section-start=.text=0x7000 |
||
74 | atmega328_bt: $(PROGRAM)_atmega328_bt.hex |
||
75 | |||
76 | atmega328_bt_isp: atmega328_bt |
||
77 | atmega328_bt_isp: TARGET = atmega328_bt |
||
78 | atmega328_bt_isp: MCU_TARGET = atmega328p |
||
79 | atmega328_bt_isp: HFUSE = D8 |
||
80 | atmega328_bt_isp: LFUSE = FF |
||
81 | atmega328_bt_isp: EFUSE = 05 |
||
82 | atmega328_bt_isp: isp |
||
83 | |||
84 | isp: $(TARGET) |
||
85 | $(ISPFUSES) |
||
86 | $(ISPFLASH) |
||
87 | |||
88 | isp-stk500: $(PROGRAM)_$(TARGET).hex |
||
89 | $(STK500-1) |
||
90 | $(STK500-2) |
||
91 | |||
92 | %.elf: $(OBJ) |
||
93 | $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) |
||
94 | |||
95 | clean: |
||
96 | rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex |
||
97 | |||
98 | %.lst: %.elf |
||
99 | $(OBJDUMP) -h -S $< > $@ |
||
100 | |||
101 | %.hex: %.elf |
||
102 | $(OBJCOPY) -j .text -j .data -O ihex $< $@ |
||
103 | |||
104 | %.srec: %.elf |
||
105 | $(OBJCOPY) -j .text -j .data -O srec $< $@ |
||
106 | |||
107 | %.bin: %.elf |
||
108 | $(OBJCOPY) -j .text -j .data -O binary $< $@ |
||
109 |