www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Erstes Programm für Mikrocontroller


Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Boxi Boxitec (boxi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
all fehlt?

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, das heisst dass das Target "all" im Makefile nicht vorhanden ist. 
Man kann ein anderes default-target waehlen, indem man:

nothing-specified: target

im Makefile angibt.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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
C:\Dokumente und Einstellungen\abcd>make all
make: *** No rule to make target `all'.  Stop.

sowohl unter Windows als auch unter Linux!

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
michael@quark:~> make all
make: *** No rule to make target `all'.  Stop.
michael@quark:~> make
make: *** No targets specified and no makefile found.  Stop.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>>> Wie compiliert ihr den eure Files?

damit:

http://www.myavr.de/download/myAVR_WorkpadPLUS_Demo.exe

gruß J.

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich persönlich bevorzuge es auch, wenn mir das Makefile automatisch 
erzeugt wird. Das AVR-Studio von Atmel kann das ebenfalls.

Grüße

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
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.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Kai (Gast)

>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,

Was soll diese Steinzeitmethode als Anfänger ? Nimm AVR Studio und 
compiliere damit.

MFG
Falk

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon K. wrote:

> Also wenn ich das richtig verstehe, heißt die Meldung
>
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.