PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
FS
Inlägg: 245 Blev medlem: 14 januari 2005, 23:35:45
Inlägg
av FS » 7 februari 2007, 22:43:37
När man kör AVRStudio så skickar programmet med alla växlar till kompilatorn. Men om jag ska kompilera själv och tex ladda över mitt program med AVRDUDE hur får jag då reda på hur växlarna ska vara? (avr-gcc --help ger lite för sparsam info för att jag ska bli klokare...). Finns det nån manual?
Har nu lyckats kompilera och ladda över med:
Kod: Markera allt
avr-gcc -o test.o test.c -mmcu=atmega16
avr-objcopy -O ihex -R .eeprom test.o test.hex
sudo avrdude -p atmega16 -c avrisp2 -P usb -U test.hex
För större projekt hur gör jag en bra Makefile? Det vore ju klockrent om man kunde sno en Makefile från AVRStudio och använda som grund men det verkar ju inte gå...
Några tips på hur jag hanterar mina projekt utan AVRStudio?
strombom
Inlägg: 3305 Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:
Inlägg
av strombom » 7 februari 2007, 22:48:30
Jag har knappt funderat över det när jag använt AVR, jag fick tag på en makefil för länge sedan och har använt den utan eftertanke, så här ser den ut i varje fall:
Kod: Markera allt
PRG = filnamn
OBJ = filnamn.o
MCU_TARGET = atmega16
OPTIMIZE = -O2
DEFS =
LIBS = C:\Program\Elektronik\WinAVR\avr\lib\libm.a
# You should not have to change anything below here.
CC = avr-gcc
# Override is only needed by avr-lib build system.
override CFLAGS = -g -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS)
override LDFLAGS = -Wl,-Map,$(PRG).map
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
all: $(PRG).elf lst text eeprom
$(PRG).elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
rm -rf *.o $(PRG).elf *.eps *.png *.pdf *.bak
rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
lst: $(PRG).lst
%.lst: %.elf
$(OBJDUMP) -h -S $< > $@
# Rules for building the .text rom images
text: hex bin srec
hex: $(PRG).hex
bin: $(PRG).bin
srec: $(PRG).srec
%.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 $< $@
# Rules for building the .eeprom rom images
eeprom: ehex ebin esrec
ehex: $(PRG)_eeprom.hex
ebin: $(PRG)_eeprom.bin
esrec: $(PRG)_eeprom.srec
%_eeprom.hex: %.elf
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
%_eeprom.srec: %.elf
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@
%_eeprom.bin: %.elf
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O binary $< $@
# Every thing below here is used by avr-libc's build system and can be ignored
# by the casual user.
FIG2DEV = fig2dev
EXTRA_CLEAN_FILES = *.hex *.bin *.srec
dox: eps png pdf
eps: $(PRG).eps
png: $(PRG).png
pdf: $(PRG).pdf
%.eps: %.fig
$(FIG2DEV) -L eps $< $@
%.pdf: %.fig
$(FIG2DEV) -L pdf $< $@
%.png: %.fig
$(FIG2DEV) -L png $< $@
JJ
Inlägg: 366 Blev medlem: 16 maj 2005, 21:33:02
Inlägg
av JJ » 8 februari 2007, 09:35:42
Refernsmanualer till alla gnu-verktyg. både växlar till kompilatorn och hur make funkar, hittar du på
www.gnu.org .
Ulf
Inlägg: 399 Blev medlem: 15 februari 2006, 14:04:03
Inlägg
av Ulf » 8 februari 2007, 12:41:07
Följer det inte med exempel Makefiler till AVR-GCC eller var det WinAVR?