Zacinam s WinAVR
Hynek Sladky
econf@centrum.cz
Úterý Leden 10 09:46:51 CET 2006
Staci si precist manual od make... :-)
Taky jsem nemel jasno, tak jsem se do nej konecne zacetl (GNUmake.pdf) a
jasno si udelal.
Jeste jsem nepotreboval psat ciste v assembleru (zatim jsem to resil
inline assemblerem), takze preklad z assembleru jsem neresil.
V makefile je potreba zmenit radky TARGET =, SCR =, ASRC =
Makefile jsem si napsal nasledujici:
# application specific parameters
MCU = atmega128
F_CPU = 11059200
FORMAT = ihex
TARGET = eval
# build specific parameters
# optimization
OPT = s
# other parameters
AVRGCC_VERSION = 330
# file names
SRC = $(TARGET).c
ASRC =
# paths
EXTRAINCDIRS =
# compiler flags
CFLAGS = -gstabs -O$(OPT) -fpack-struct -fshort-enums -Wall
-Wa,-adhlns=$(<:.c=.lst) $(patsubst %,-I%,$(EXTRAINCDIRS))
-DF_CPU=$(F_CPU) -DAVRGCC_VERSION=$(AVRGCC_VERSION)
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs -DF_CPU=$(F_CPU)
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref -lm
# utilities
CC = avr-gcc
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALLASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
all: $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).lss
# rm *.d
%.hex: %.elf
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
%.eep: %.elf
$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load"
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
%.cof: %.elf
$(OBJCOPY) --debugging --change-section-address .data-0x800000
--change-section-address .bss-0x800000 --change-section-address
.noinit-0x800000 --change-section-address .eeprom-0x810000 -O
coff-ext-avr $< $(TARGET).cof
%.lss: %.elf
$(OBJDUMP) -h -S $< > $@
# signing .o and .elf files to stay undeleted
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
# linking
%.elf: $(OBJ)
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
# compiling C code
%.o: %.c
$(CC) -c $(ALL_CFLAGS) $< -o $@
# compiling assembler code
%.o: $.S
$(CC) -c $(ALL_ASFLAGS) $< -o $@
# generating dependencies files
%.d: %.c
set -e; $(CC) -MM $(ALL_CFLAGS) $< | sed 's,\(.*\)\.o[ :]*,\1.o \1.d :
,g' > $@; [ -s $@ ] || rm -f $@
# (hidden '-') loading dependencies files
-include $(SRC:.c=.d)
Jaroslav Buchta napsal(a):
> Makefile je zrovna jedna z veci, kde nemam uplne jasno - zatim jsem napr.
> nenasel vyznam symbolu $@... napr. v
> $(PRG).elf: $(OBJ)
> $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
> Taky mi neni jasny prinos utility MFile ? tusim, ze je k priprave makefile,
> ale funkce je nejak divna - nakonec jsem to zeditoval z nejakeho prikladu, i
> kdyz je tam par neznamych, funguje to.
> - ma vubec cenu se to snazit integrovat do AVRStudia? Jaky je prinos, kdyz
> nejde pouzit ani ATMEL assembler? Co jsem zkousel, tak napr. Prog. Notepad v
> baliku WINAVR je docela pouzitelny, nebo bych to spis zaintegroval do MSVS,
> jako jsem delal s projekty pro 51 a PIC. Drtiva vetsina zdrojaku bude stejne
> v C
> - jak je to se startup kodem - pouzivate nejaky svuj, nebo je ten standardni
> temer dokonaly? Napr. u ke*ilu jsem si radsi napsal svuj, uplne nevyhovoval.
>
> Dekuji, s pozdravem
> J. Buchta
>
> -----Original Message-----
> From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz]On
> Behalf Of Hynek Sladky
> Sent: Tuesday, January 10, 2006 8:54 AM
> To: HW-news
> Subject: Re: Zacinam s WinAVR
>
>
> Pisu ve svem oblibenem editoru (PSpad), prekladam pomoci avr-gcc (z
> instalace WinAVR) primo v editoru, soubor .cof nactu do AVRstudia a
> ladim a ladim, nez najdu chybu, opravi a zase ladim... az do uplneho
> vyladeni :-)
>
> Pokud chcete, mohu Vam poslat svuj makefile (co nejvic zjednoduseny) pro
> pouziti avr-gcc s vystupem pro AVRstudio.
>
> Hynek Sladky
>
>
> Jaroslav Buchta napsal(a):
>
>>Zdravim, konecne mi nezbylo, nez se zacit zaobirat subj. Stahnul jsem,
>>nainstaloval jsem, napsal nejaky test, prelozil, listing vypada rozumne...
>>vsechno OK
>>Zajima me, jaky pouzivate postup, abych nehledal slepe ulicky:
>>- jak to integrovat do AvrStudia, na ktere jsem zvykly ? Nejaky odkaz?
>>- jde vyprodukovat src, ktery pujde prelozit ATMEL assemblerem, nebo je to
>>kravina? Rad bych nejak vyuzil moduly v assembleru, asi ale neni problem
>>pouzivat assembler z WinAVR, ze
>>- Nejaka hezka stranka s priklady zdrojaku...
>>
>>Vim, ze se tohle vsechno da najit, ale pokud ma nekdo sikovny odkaz nebo
>>zkusenost, budu rad. Nemam moc casu.
>>
>>Dekuji
Další informace o konferenci Hw-list