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