www.mikrocontroller.net

Forum: Compiler & IDEs Hello World läuft nicht


Autor: Gottfried Hauer (gottfried_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche ein sehr simples Hello World auf meinem Grasshopper zum 
laufen zu bringen.
#include <stdlib.h>
#include <stdio.h>

int main() {
   printf("Hello World");
   return 0;
}

Ich hab die toolchain unter debian installiert, mit AVR32 Studio das 
Programm kompiliert und ins /tmp verschoben (HelloWorld.elf)
Wenn ich das Programm über telnet starte  hätte ich mir auf der Konsole 
ein Hello World erwartet. Leider krieg ich nur ein "killed".
Was mach ich falsch?

Autor: Wiwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin grade etwas verwirrt, aber ein Mikrocontroller zeigt doch kein 
printf an?

Oder hast du irgendwas schönes drummherum gebastelt?
(Mit entsprechendem Quelltext)

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Konsole = serielle Schnittstelle - dann müssen die entsprechenden 
Übertragungsparameter der UART eingestellt werden.

Autor: Sauger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gottfried Hauer schrieb:
> (HelloWorld.elf)

sicher das dein HelloWorld.elf ein ausführbares Programm ist. Die Endung 
.elf deutet auf ein Objektfile hin das noch vom Linker bearbeitet werden 
möchte.

MfG

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm sieht korrekt aus und die Endung elf ist auch richtig. Fast 
alle Linux-Programme liegen im elf-Format vor.

Poste mal die genaue Kommandozeile, mit der der Compiler/Linker 
aufgerufen wurde.

MfG Mark

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark .. schrieb:
> Das Programm sieht korrekt aus und die Endung elf ist auch richtig. Fast
> alle Linux-Programme liegen im elf-Format vor.

Allerdings wird das Format nicht nur für fertig gelinkte Programme 
verwendet, aber bei diesen ist es eher unüblich, die Namen auf .elf 
enden zu lassen.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:
> Allerdings wird das Format nicht nur für fertig gelinkte Programme
> verwendet, aber bei diesen ist es eher unüblich, die Namen auf .elf
> enden zu lassen.

Ja klar, normal haben die Programme gar keine Endung, nur gibt es einige 
IDEs wie z.B. Code::Blocks, bei denen .elf standardmäßig auch an das 
fertig gelinkte Binary drangehägt wird und manuell entfernt werden muss.

MfG Mark

Autor: Unbeteiligter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutzt du Linux auf dem Grasshopper oder ein Standalone "Hello World"?
Für beides (Linux / Standalone 'C') gibt es unterschiedliche Toolchains.
Für ein Standalone 'C' guckst du hier:
Beitrag "Re: AP7000 und usart"

Autor: Gottfried Hauer (gottfried_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende Linux am Grasshopper und habe die Toolchain mit apt-get von 
hier installiert.
http://www.atmel.no/avr32/ubuntu/jaunty binary/

Das Programm hab ich mit AVR32 Studio 2.5 geschrieben und ein C++ Linux 
Executable ausgewählt und kompiliert.

Ich bin gerade dabei mir eine Buildroot zu kompilieren. Hab ich einfach 
die falsche Toolchain erwischt? Weil im AVR Studio war überall als 
Compiler AVR32-linux-gcc... eingetragen und ich hab das auf avr-gcc 
ausgebessert, da ich diesen nicht auf dem Rechner gefunden habe.

Wenn ich das Programm jetzt mit der richtigen Toolchain kompiliert habe 
und das Hello World über die telnet-Console starte krieg ich dann eine 
Ausgabe auf der Console?

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gottfried Hauer schrieb:
> Ich bin gerade dabei mir eine Buildroot zu kompilieren. Hab ich einfach
> die falsche Toolchain erwischt? Weil im AVR Studio war überall als
> Compiler AVR32-linux-gcc... eingetragen und ich hab das auf avr-gcc
> ausgebessert, da ich diesen nicht auf dem Rechner gefunden habe.

Das war dann wohl der falsche Kompiler. Das stand nicht umsonst 
'AVR32-linux-gcc'!
'avr-gcc' ist der für die 8bit AVRs, das erklärt auch die Endung '.elf'.
Dein AVR32 kann damit mit Sicherheit nichts anfangen, es sei denn, Du 
hast einen passenden Emulator auf Deinem Grasshopper.
Du brauchst definitiv 'AVR32-linux-gcc'

Gottfried Hauer schrieb:
> Wenn ich das Programm jetzt mit der richtigen Toolchain kompiliert habe
> und das Hello World über die telnet-Console starte krieg ich dann eine
> Ausgabe auf der Console?

So sollte es dann sein.

Autor: Gottfried Hauer (gottfried_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für eure Hilfe. Ich hab mir jetzt die richtige Toolchain 
gebaut und das Programm kompiliert und siehe da es funktioniert.

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.