avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-gcc-list] re:avrgcc for window NT with AVR studio3.56 - Gcctest9


From: Loc Mai
Subject: [avr-gcc-list] re:avrgcc for window NT with AVR studio3.56 - Gcctest9
Date: Mon, 7 Apr 2003 11:09:15 -0400

Yeh, I almost got through it. But after building project, there is an error
as:
errors: none
----end---
Errors detected during link stage
stopped.

It is not easy to understand makefile, to me.  Any expert can advise me.
Thanks.

Here is the makefile (copied and little bit changed from Winavr\sample)

# MCU name
MCU = atmega103

# Output format. (can be srec, ihex)
FORMAT = ihex

# Target file name (without extension).
#TARGET = main
TARGET = gcctest9

# Optimization level (can be 0, 1, 2, 3, s)
# (Note: 3 is not always the best optimization level. See avr-libc FAQ)
OPT = s

# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c \
uart.c timer.c
#foo.c bar.c  #----reomved

# List Assembler source files here.
ASRC =  sqrtMike.s sqrtJack.s

# Optional compiler flags.
CFLAGS = -g -O$(OPT) -funsigned-char -funsigned-bitfields -fpack-struct \
-fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)

# Optional assembler flags.
ASFLAGS = -Wa,-ahlms=$(<:.s=.lst), -gstabs

# Optional linker flags.
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref

# Additional library flags (-lm = math library).
LIBFLAGS = -lm

# --------------------------------------------------------------------------
-

# Define directories, if needed.
DIRAVR = c:/winavr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = .
DIRLIB = $(DIRAVR)/avr/lib

# Define programs and commands.
SHELL = sh

CC = avr-gcc

OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump

REMOVE = rm -f
COPY = cp

ELFCOFF = objtool

HEXSIZE = @avr-size --target=$(FORMAT) $(TARGET).hex
ELFSIZE = @avr-size $(TARGET).elf

FINISH = @echo Errors: none
BEGIN = @echo -------- begin --------
END = @echo --------  end  --------

# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.s=.o)

# Define all listing files.
LST = $(ASRC:.s=.lst) $(SRC:.c=.lst)

# Combine all necessary flags and optional flags. Add target processor to
flags.
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
ALL_LDFLAGS = -mmcu=$(MCU) $(LDFLAGS)

# Default target.
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep
$(TARGET).lss sizeafter finished end

# Eye candy.
begin:
 $(BEGIN)

finished:
 $(FINISH)

end:
 $(END)

# Display size of file.---
sizebefore:
 @echo Size before:
 -$(HEXSIZE)

sizeafter:
 @echo Size after:
 $(HEXSIZE)

# Display compiler version information.
gccversion :
 $(CC) --version

# Target: Convert ELF to COFF for use in debugging / simulating in AVR
Studio.
coff: $(TARGET).cof end

%.cof: %.elf
 $(ELFCOFF) loadelf $< mapfile $*.map writecof $@

# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
 $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@

# Display size of file.---
#sizebefore:
# @echo Size before:
# -$(HEXSIZE)

#sizeafter:
# @echo Size after:
# $(HEXSIZE)

%.eep: %.elf
 -$(OBJCOPY) -j
.eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma
.eeprom=0 -O $(FORMAT) $< $@

# Create extended listing file from ELF output file.
%.lss: %.elf
 $(OBJDUMP) -h -S $< > $@

# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
 $(CC) $(ALL_LDFLAGS) $(OBJ) $(LIBFLAGS) --output $@

# Compile: create object files from C source files.
%.o : %.c
 $(CC) -c $(ALL_CFLAGS) $< -o $@

# Assemble: create object files from assembler source files.
%.o : %.s
 $(CC) -c $(ALL_ASFLAGS) $< -o $@

# Target: clean project.
clean: begin clean_list finished end

clean_list :
 $(REMOVE) $(TARGET).hex
 $(REMOVE) $(TARGET).eep
 $(REMOVE) $(TARGET).obj
 $(REMOVE) $(TARGET).cof
 $(REMOVE) $(TARGET).elf
 $(REMOVE) $(TARGET).map
 $(REMOVE) $(TARGET).obj
 $(REMOVE) $(TARGET).a90
 $(REMOVE) $(TARGET).sym
 $(REMOVE) $(TARGET).lnk
 $(REMOVE) $(TARGET).lss
 $(REMOVE) $(OBJ)
 $(REMOVE) $(LST)

# Automatically generate C source code dependencies. (Code taken from the GN
U make user manual.)
# Note that this will work with sh (bash) and sed that is shipped with
WinAVR (see the SHELL variable defined above).
# This may not work with other shells or other seds.
%.d: %.c
 set -e; $(CC) -MM $(ALL_CFLAGS) $< \
 | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
 [ -s $@ ] || rm -f $@

# Remove the '-' if you want to see the dependency files generated.
-include $(SRC:.c=.d)

# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion coff clean
clean_list



> Date: Fri, 4 Apr 2003 23:37:26 +0200
> From: Volkmar Dierkes <address@hidden>
> To: address@hidden
> Subject: Re: [avr-gcc-list] re:avrgcc for window NT with AVR studio3.56 -
> Gcctest9
> Message-ID: <address@hidden>
> In-Reply-To: <address@hidden>
> References: <address@hidden>
> <address@hidden>
> Content-Type: text/plain; charset="us-ascii"
> MIME-Version: 1.0
> Content-Transfer-Encoding: 7bit
> Precedence: list
> Message: 8
>
> On Fri, 4 Apr 2003 16:03:08 -0500, Loc Mai wrote:
>
> > I get through it  apart but other error: undefined reference to:'
> > __inw_atomic'
> > in gcctest9.c line 128, 130, 134, 136
> > related to:  ticks = get_ticks();  ticks = timer_delta(ticks);
> > I traced it is in timer.h:
> > #define get_ticks() __inw_atomic(TCNT1)
> >
> > I could not see __inw_atomic in library.  Could you please tell me how I
can
> > fix this.
>
> It seems that you come to the point where its obvious that the
> statement 'The gcctest files are out of date'.
>
> Maybe you can change the #define line to
> #define get_ticks() TCNT1
>
> But the statement above, that the gcctest files are out of date, is
> already true. Sorry
>
> Volkmar
>
> ------------------------------
>
> _______________________________________________
> avr-gcc-list mailing list
> address@hidden
> http://www.avr1.org/mailman/listinfo/avr-gcc-list
>
>
> End of avr-gcc-list Digest, Vol 3, Issue 5
> ******************************************
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]