makefile erweitern

OP #794500
Hallo,
ich kenn mich noch nicht so gut aus mit diesen Makefiles.
Dieses erzeug zwar ein HEX File korrect, aber kein ELF File für die 
Simulation in AVR STUDIO.
Kann mir da einer helfen, . Wie macht man das?

Bernd

# makefile, written by guido socher
MCU=attiny2313
CC=avr-gcc
OBJCOPY=avr-objcopy
OBJDUMP=avr-objdump
REMOVE = rm -f

AVRINC=C:/WinAVR/avr/include/avr
AVRINCINT=C:/WinAVR/avr/include
OUTPUTDIR=Out
OBJLIBDIR=Obj

OBJ  = $(ASRC:.s=.o) $(SRC:.c=.o)

CFLAGS=-g -mmcu=$(MCU) -funsigned-char -funsigned-bitfields 
-fpack-struct -fshort-enums \
          -std=gnu99 -Wall  -Wstrict-prototypes -Os  -I$(OBJLIBDIR)

ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp -Wall

#-------------------
.PHONY: all
all:  mm_example.hex
#-------------------
mm_example.hex : mm_example.out
  $(OBJCOPY) -R .eeprom -O ihex $(OUTPUTDIR)/mm_example.out 
$(OUTPUTDIR)/mm_example.hex

  avr-size $(OUTPUTDIR)/mm_example.out
  @echo " "
  @echo "Expl.: data=initialized data, bss=uninitialized data, 
text=code"
  @echo " "

mm_example.out : mm_example.o
  $(CC) $(CFLAGS) -mno-interrupts -o $(OUTPUTDIR)/mm_example.out 
-Wl,-Map,$(OUTPUTDIR)/mm_example.map \
  $(OUTPUTDIR)/mm_example.o $(OBJLIBDIR)/mm_mod1.o 
$(OBJLIBDIR)/mm_mod2.o

#-------------------
mm_example.o : mm_example.c $(OBJLIBDIR)/mm_module.h
  $(CC) $(CFLAGS) -Os -c -o $(OUTPUTDIR)/mm_example.o mm_example.c


# avrdude
program: mm_example.hex
  avrdude -p attiny2313 -c stk200 -P lpt1 -e -U 
flash:w:$(OUTPUTDIR)/mm_example.hex

#-------------------
clean:
  $(REMOVE) $(OUTPUTDIR)/*.o
  $(REMOVE) $(OUTPUTDIR)/*.hex
  $(REMOVE) $(OUTPUTDIR)/*.map
  $(REMOVE) $(OUTPUTDIR)/*.out
  $(REMOVE) $(OUTPUTDIR)/*.lss
#-------------------
OP #795310
Hallo,
ja klappt, wunderbar...
Noch ein Problem jetzt.

Folgendes Programm soll eine Led 8 mal an aus schalten
Beim ersten mal geht es, auch mit anderen Werten

#define uint8_t Blkz = 8 ;

int main(void)
while(1) // Hauptschleife
 while(0 < Blkz)
 {
     Blkz -=1;
     PORTD = (1<<PD1);  /*LED on*/
     ... hier delay
     PORTD = (0<<PD1);  /*LED off*/
     ... hier delay
 }

 ... MM_Data holen, klappt alles

 switch (MM_Data)
 {
  case 0: PORTB = (1<<PB0); Blkz = 1;break;
  case 1: PORTB = (1<<PB1); Blkz = 2;break;
  case 2: PORTB = (1<<PB2); Blkz = 3;break;
  case 3: PORTB = (1<<PB3); Blkz = 4;break;
  case 4: PORTB = (1<<PB4); Blkz = 5;break;
  case 5: PORTB = (1<<PB5); Blkz = 6;break;
  case 6: PORTB = (1<<PB6); Blkz = 7;break;
  case 7: PORTB = (1<<PB7); Blkz = 8;break;
}
} //ende von main

Wenn die Variable Blkz dann z.B. auf 1 gesetzt wird blinkt es 4 mal, bei 
2 8mal usw...
Was mache ich da falsch ?
Gruss Bernd
Moderator Persönliche Seite #795326
Bernd Bömer wrote:

> Noch ein Problem jetzt.

Mach dafür bitte einen neuen Thread auf (wegen der Leute, die den alten
über die Suche finden und dann völlig unverwandtes Zeug darin vorfinden
werden).  Beschreibe dabei auch deine Umgebung (*) und bau das Beispiel
so, dass man es auch zum Test compilieren kann statt irgendwas
irgendwie abzutippen -- du wärst nicht der erste, der sich dabei auch
mal vertippt, sodass man dann völlig falschen Fehlern hinterherrennt.

(*) Wo ist die LED dran, wofür sind die PORTB-Pins gut bei dir?
OP #795511
Hallo Jörg,
ok. Werde mich dran halten.
Hat sich aber schon erledigt.
Habe das Problem gefunden.
Die case anweisungen wurden mehrfach durchlafen und deshalb auch in der 
whileschleife die Ausgabe mehrfach...
Danke fuer die Antwort.

Aber dieses makefile macht mir immer noch Probleme mit dem 
Verstaendniss.
 Wie kann man denn zusaetzlich ein epp File erzeugen lassen.
Bernd

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.