Forum: Mikrocontroller und Digitale Elektronik Probleme bei Makefile für ATmega


von Marcel (Gast)


Lesenswert?

mahlzeit,
ich habe mir von 
https://www.mikrocontroller.net/articles/Beispiel_Makefile die Makefile 
genommen und auf mein Projekt angepasst.
in der runtergeladenen Makefile war anstelle von F_CPU F_OSC 
eingetragen. Dies habe ich wieder abgeändert. Desweiteren habe ich noch 
den Pfad für AVRDude angepasst. Ich benutze avr-gcc 5.3.0 von SysGCC.

folgende sachen funktionieren nicht
1
all: begin gccversion sizebefore build sizeafter finished end
2
3
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
4
ELFSIZE = $(SIZE) -A $(TARGET).elf
5
sizebefore:
6
  @if [ -f $(TARGET).hex ]; then echo; echo $(MSG_SIZE_BEFORE); $(HEXSIZE); echo; fi
7
8
sizeafter:
9
  @if [ -f $(TARGET).hex ]; then echo; echo $(MSG_SIZE_AFTER); $(HEXSIZE); echo; fi

sizebefore und sizefinished werden nicht ausgeführt. Diese kann ich auch 
rausnehmen, wollte sie aber interessehalber mal drinn haben.
zunächst bekomme ich den Fehler

"-f" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

wenn ich das -f entferne, bekomme ich die Fehlermeldung

"main.hex" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

nehme ich diese zwei Befehle raus, baut alles durch.


Ein weiteres Problem habe ich beim clean
1
# Target: clean project.
2
clean: begin clean_list finished end
3
4
clean_list :
5
  @echo.
6
  @echo $(MSG_CLEANING)
7
  $(REMOVE) $(TARGET).hex
8
  $(REMOVE) $(TARGET).eep
9
  $(REMOVE) $(TARGET).obj
10
  $(REMOVE) $(TARGET).cof
11
  $(REMOVE) $(TARGET).elf
12
  $(REMOVE) $(TARGET).map
13
  $(REMOVE) $(TARGET).obj
14
  $(REMOVE) $(TARGET).a90
15
  $(REMOVE) $(TARGET).sym
16
  $(REMOVE) $(TARGET).lnk
17
  $(REMOVE) $(TARGET).lss
18
  $(REMOVE) $(OBJ)
19
  $(REMOVE) $(LST)
20
  $(REMOVE) $(SRC:.c=.s)
21
  $(REMOVE) $(SRC:.c=.d)
22
  $(REMOVE) .dep/*

begin, finished und end sind nur echo ausgaben.

wenn ich jetzt allerdings
make clean
in der console eingebe, bekomme ich den Fehler
rm -f main.hex
process_begin: CreateProcess(NULL, rm -f main.hex, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
make: *** [clean_list] Error 2

die Datei ist aber definitiv da. Warum kann die nicht gelöscht werden?

von Marcel (Gast)


Lesenswert?

Ahso,
auch bekomme ich nach jedem Befehl die Ausgabe
H:\Projects\AVR\Atmega\test>make clean
Das System kann den angegebenen Pfad nicht finden.

Welcher Pfad kann nicht gefunden werden?

von Stefan F. (Gast)


Lesenswert?

Ich schätze, dass dieses Makefile nur für Unix Systeme geeignet ist. 
Eventuell kommst du mit meinen Vorlagen auf 
http://stefanfrings.de/avr_hello_world/index.html besser klar, die 
funktionieren auch unter Windows.

von Straightforward (Gast)


Lesenswert?

Marcel schrieb:
> folgende sachen funktionieren nicht

Bist du dir sicher dass du so anfangen willst und nicht doch
mit einer einfach zu bedienenden IDE arbeitest?

Einfach und leicht zu lernen wäre z.B. AVR Studio 4.18
Schnell downloaden und installieren.

Ein paar Klicks zum Erstellen eines Projekts und Datei-Importe
und schon ist man seinem Ziel wesentlich näher ....

von quotendepp (Gast)


Lesenswert?

Marcel schrieb:
> Warum kann die nicht gelöscht werden?

Marcel schrieb:
> H:\Projects\AVR\Atmega\test>

gibts unter windows "rm"? wenn nicht, dann dürfte sich die fehlermeldung 
auf das nicht gefundene rm beziehen.

du könnstest sonst auch mal probieren, das makefile im linux subsystem 
(debian oder *buntu) laufen zu lassen...

von foobar (Gast)


Lesenswert?

Bist du sicher, dass dein Commandlines (@if etc) mit einem Tab 
beginnen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.