Erstes Programm für Mikrocontroller

Gast #746171
Lesenswert?
• ▲
▼
Hallo

Ich habe Heute mit Hilfe des AVR GCC Tutorials mein erstes Programm, ein 
Lauflicht für einen Mikrocontroller geschrieben. Dazu habe ich ein 
makefile erstellt und wollte mir damit nun eine .hex Datei erzeugen, 
welche ich in den Controller spielen kann.

Wenn ich nun in der Eingabeaufforderung in den Ordner gehe wo die 
Dateien main.c und makefile.bak sind und den Befehl "make all" ausführe, 
bekomme ich immer die Fehlermeldung: No rule to make target 'all' . Stop

Was mache ich falsch?
Gast #746216
Lesenswert?
• ▲
▼
Ja was wäre denn "all"?

Im Tutorial steht halt nur:

D:\tmp\gcc_tut\quickstart>dir

 Verzeichnis von D:\tmp\gcc_tut\quickstart

28.11.2006  22:53    <DIR>          .
28.11.2006  22:53    <DIR>          ..
28.11.2006  20:06               118 main.c
28.11.2006  20:03            16.810 Makefile
               2 Datei(en)         16.928 Bytes

Nun gibt man make all ein. Falls das mit WinAVR installierte Programmers 
Notepad genutzt wird, gibt es dazu einen Menüpunkt im Tools Menü. Sind 
alle Einstellungen korrekt, entsteht eine Datei main.hex, in der der 
Code für den AVR enthalten ist.

D:\tmp\gcc_tut\quickstart>make all


Klappt nur bei mir nicht. Wahrscheinlich weil ich das unter WINXP 
versuche. Wie compiliert ihr den eure Files?
Persönliche Seite #746236
Lesenswert?
• ▲
▼
Hänge deine problematische Dateien bei solchen Fragen an. Dann geht es 
mit den Antworten fixer.

In der Artikelsammlung ist ein Beispiel Makefile
http://www.mikrocontroller.net/articles/Beispiel_Makefile

Im ersten Makefile ist die Regel für all wie folgt:

# Default target.
all: begin gccversion sizebefore build sizeafter end

Schau nach, ob das in deinem Makefile so ähnlich ist.
#746240
Lesenswert?
• ▲
▼
Kai wrote:

> Wenn ich nun in der Eingabeaufforderung in den Ordner gehe wo die
> Dateien main.c und makefile.bak sind und den Befehl "make all" ausführe,
> bekomme ich immer die Fehlermeldung: No rule to make target 'all' . Stop

"makefile.bak" ?! Die sollte eigentlich "Makefile" heissen.

Jedenfalls deutet deine Fehlermeldung darauf hin, daß kein Makefile 
vorhanden ist.
#746255
Lesenswert?
• ▲
▼
Michael G. wrote:
> Nein, das heisst dass das Target "all" im Makefile nicht vorhanden ist.

Geh mal in irgendein Verzeichnis ohne Makefile und gib "make all" ein. 
Bei mir kommt
1
C:\Dokumente und Einstellungen\abcd>make all
2
make: *** No rule to make target `all'.  Stop.

sowohl unter Windows als auch unter Linux!
#746279
Lesenswert?
• ▲
▼
Michael G. wrote:
> michael@quark:~> make all
> make: *** No rule to make target `all'.  Stop.
> michael@quark:~> make
> make: *** No targets specified and no makefile found.  Stop.

und ich Quote nochmal das erste Posting des OP:

> [..] und den Befehl "make all" ausführe,
> bekomme ich immer die Fehlermeldung: No rule to make target 'all' . Stop

Folglich: Makefile fehlt! Nix anderes!
Persönliche Seite #746284
Lesenswert?
• ▲
▼
Niels Hüsken wrote:
> Michael G. wrote:
>> michael@quark:~> make all
>> make: *** No rule to make target `all'.  Stop.
>> michael@quark:~> make
>> make: *** No targets specified and no makefile found.  Stop.
>
> und ich Quote nochmal das erste Posting des OP:
>
>> [..] und den Befehl "make all" ausführe,
>> bekomme ich immer die Fehlermeldung: No rule to make target 'all' . Stop
>
> Folglich: Makefile fehlt! Nix anderes!

Also wenn ich das richtig verstehe, heißt die Meldung
1
No rule to make target 'all' . Stop
dass bei dem aktuellen Aufruf von Make kein Target "all" gefunden werden 
kann. Unabhängig davon, ob das Makefile existiert oder nicht. Sprich: 
Selbst wenn ein Makefile ohne das Target "all" existieren würde, käme 
exakt die Gleiche Fehlermeldung.
#746290
Lesenswert?
• ▲
▼
Simon K. wrote:

> kann. Unabhängig davon, ob das Makefile existiert oder nicht. Sprich:
> Selbst wenn ein Makefile ohne das Target "all" existieren würde, käme
> exakt die Gleiche Fehlermeldung.

Nach der Beschreibung des OP ist das aber eher unwahrscheinlich. 
Wahrscheinlicher ist, das das Makefile ganz fehlt.
Gast #746897
Lesenswert?
• ▲
▼
So, nun funktioniert es. Danke sehr!

Das Problem wahr tatsächlich die Endung .mak. Diese entfernt und schon 
ging es.


Nun hab ich eine Frage zu der Größe des erzeugten .hex Files. Wenn ich 
nun mein einfaches Blinkprogramm für den ATMega16 compiliere, ist dies 
ca. 14kB groß.

Wenn ich nun im Makefile den Controllertyp ändere, ist das .hex File nur 
noch 6kB groß. Kann mir einer sagen warum das so ist?
Persönliche Seite #746911
Lesenswert?
• ▲
▼
Die Grösse der HEX-Datei ist nicht ausschlaggebend, ob die Datei in den 
µC passt.

Die HEX-Datei enthält den binären Inhalt für den µC in codierter Form 
und ist deshalb immer wesentlich fetter als das binäre Speicherabbild.

Und weil fast immer der komplette Inhalt des µC in der HEX-Datei 
abgelegt wird, hängt die Grösse auch grundsätzlich von der FLASH-Grösse 
des jeweiligen µCs ab.
#747003
Lesenswert?
• ▲
▼
Simon K. wrote:

> Also wenn ich das richtig verstehe, heißt die Meldung
>
1
No rule to make target 'all' . Stop
> dass bei dem aktuellen Aufruf von Make kein Target "all" gefunden werden
> kann.

Mir fällt gerade noch etwas dazu ein:
Als Programmierer lernt man irgendwann die Bedeutung einer Fehlermeldung 
zu ignorieren, weil man selber aus eigener Erfahrung weiss, daß man 
nicht für jede Eventualität eine eigene Fehlermeldung mit eigenem 
Fehlertext einbauen kann.

Die Fehlermeldung "No rule to make target 'all' . Stop" sagt mir: Hier 
ist irgendwas ganz am Anfang des Prozesses etwas falsch gelaufen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren