Forum: Compiler & IDEs Compiler für Windows Umgebung


von 1udo1 (Gast)


Lesenswert?

Hallo,

ich möchte zur Einarbeitung in C die Programme ausprobieren, die im 
openbook galileo aufgeführt sind. Also solche, wie
1
/* test.c */
2
#include <stdio.h>
3
int main (void) 
4
{
5
   printf("Test\n");
6
   return 0;
7
}

Auf meinem Entwicklungsboard mit dem Mega 16 ist keine Tastatur und auch 
kein Bildschirm direkt angeschlossen.

Meine Frage:

Kann ich ein solches Programm, wie oben aufgeführt, mit dem mega16 über 
RS232 flashen und dann die Ergebnisse auf dem Monitor meines PC 
kontrollieren? Ich bin mir nicht sicher, ob eine printf-Anweisung im 
Flash meines mega16 den Bildschirm ansteuert.

Falls das nicht geht, dann möchte ich mir einen Freeware compiler 
installieren, mit dem ich C-Programme auf meinem Rechner üben kann.

Kann jemand einen geeigneten Freeware-compiler empfehlen?

Udo

von unwichtig (Gast)


Lesenswert?

Codeblocks ist ein guter Freeware-Compiler.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Hmm, ist in dem "openbook galileo" kein Hinweis drin, welcher Compiler 
zum Ausprobieren der Beispiele benutzt werden kann?

Zu C-Programmen, die auf dem Mikrocontroller laufen:

Ich benutze für die AVRs den AVR GCC in der Version für Windows, 
also den WinAVR.

Deine Idee das printf auf dem Mikrocontroller über RS232 an den 
Windows-Rechner weiterzuleiten und auf dessen Monitor darzustellen ist 
ein üblicher Weg. es gibt da ein paar Feinheiten, wie das genau gemacht 
wird. Die sind aber alle nachzulesen z.B. im AVR-GCC-Tutorial und 
zur Not kann man bei dann offenen Fragen immer noch hier nachfragen.

Zum Erlernen von C macht man es sich aber unnötig schwer, wenn man das 
auf einem Mikrocontroller macht: Man hat wenige Tools um den 
Programmablauf zu inspizieren und ist an zeitaufwändige Prozeduren 
gebunden (Flashen, Hardwaredebugger einrichten...).

Deshalb ist deine zweite Idee, auf dem Windows-Rechner C Programme für 
Windows zu schreiben, auch schlau.

Zu C-Programmen, die auf dem Windows-Rechner laufen:

Es gibt sehr viele Freeware C-Compiler 
(http://www.thefreecountry.com/compilers/cpp.shtml).

Für mich macht es Sinn ebenfalls einen GCC unter Windows zu benutzen, 
wenn ich später einen Mikrocontroller mit GCC programmiere. Allerdings 
sind einfache Konsolenprogramme (printf...) eigentlich mit jedem 
beliebigen C Compiler möglich.

Es gibt da einige Pakete, in denen der GCC drin ist. Ich benutze MinGW
(http://www.mingw.org/) in Verbindung mit MSYS.

MinGW/MSYS ist mehr als ein reiner C Compiler, weil noch etliche 
Zusatztools dabei sind und eine Linuxähnliche Umgebung eingerichtet 
wird.

Noch näher an Linux würde man unter Windows mit Cygwin kommen, läuft 
allerdings auf meinem Rechner nicht.

Wenn nur der C Compiler GCC aus dem MinGW benutzt werden soll und eine 
grafische Bedienoberfläche (IDE) drumherum, dann ist *Dev-C++* eine 
Option (http://www.bloodshed.net/dev/index.html).

Eine andere grafische Oberfläche ist das bereits erwähnte Code::Blocks 
(http://www.codeblocks.org/).

Eine andere grafische Oberfläche ist Eclipse. Das läuft auf meinem 
Rechner aber auch nicht.

von Klaus F. (kfalser)


Lesenswert?

> Noch näher an Linux würde man unter Windows mit Cygwin kommen, läuft
> allerdings auf meinem Rechner nicht.

> Eine andere grafische Oberfläche ist Eclipse. Das läuft auf meinem
> Rechner aber auch nicht.

Nur um den Eindruck zu korrigieren, diese Programme hätten Probleme.
Ich weiss nicht, welchen Rechner Du hast, und welche Windows Version, 
aber beide Programme laufen bei mir schon seit Jahren.

EDIT : und gücklich und zufrieden bin ich auch noch damit ...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Klaus, wenn du das Problem auf meinem Rechner korrigieren kannst, gebe 
ich dir einen aus ;-)

Cygwin hatte ich lange Zeit am Laufen und war super zufrieden damit, 
dann ging es "eines Tages" nicht mehr. Und seit dem hatte ich es auch 
nie mehr zum Laufen bekommen. Selbst durch Neuinstallation auf einem 
neuen, alten OS nicht.

Aber wenn mein Text den von mir ungewollten (!) Eindruck erweckt, dass 
die genannten Programme von Haus aus instabil sind, ist es gut, dass du 
das durch deine Erfahrungen relativierst

Nein, ich erzähle nicht, welche Rechner/OS ich noch einsetze, ich 
schäme mich!

von 1udo1 (Gast)


Lesenswert?

Hallo Leute,

Danke zunächst für eure Anregungen.

Ich habe mal versucht das kleine Programm dort oben zu flashen.
1
/* test.c */
2
3
#include <avr/io.h>
4
int main (void) 
5
{
6
   printf("test.c\n");
7
   return 0;
8
}

Habe schon erwartet, dass der  avr-gcc compiler meckert. Ich weiß 
nämlich nicht, welche #include ??? Datei man noch angeben muss, damit 
mein Mega16 das Wort "Test" auf meinen Bildschirm bringt. Im Tutorial 
konnte ich das nicht finden, oder übersehe das, wie man printf ins 
Programm einbindet.

Udo

von Peter (Gast)


Lesenswert?

wenn du noch sagst wie die Fehlermeldung ist, dann man man bestimt auch 
weiterhelfen.

von P. S. (Gast)


Lesenswert?

Und besorge dir ein Buch ueber C - das lernt man nicht per Versuch & 
Irrtum.

von Pete K. (pete77)


Lesenswert?

Schau Dir mal ein Programm hier in der Codesammlung an, dann bekommst Du 
einen guten Eindruck wie komplex ein AVR Programm sein kann/ist.

Und angefangen wird mit dem AVR Tutorial (Oben links im Menü auf AVR 
klicken) hier auf der Seite, gelle ? :-)

von Stefan B. (stefan) Benutzerseite


Lesenswert?

1udo1 wrote:

> Im Tutorial
> konnte ich das nicht finden, oder übersehe das, wie man printf ins
> Programm einbindet.


Ja du übersiehst da was.

Die Nutzung von printf steht im Abschnitt und das 2. Beispiel dort 
"ist's"
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Nutzung_von_printf

Achte aber mal auf den Scrollbalken an der Seite. Der Scrollbalken ist 
ca. bei 75%, d.h. 3/4 des kompletten Tutorials sind vorher.

Nicht alles davon brauchst du für ein printf, aber geh mal davon aus, 
dass das Tutorial hierarchisch aufgebaut ist...

Mindestens den Teil zur Initialisierung der seriellen Schnittstelle 
(UART) des µC und deren Low-Level-Ansteuerroutinen musst du kennen.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Wenn du C auf dem PC lernen möchtest dann wäre OpenWatcom eine der 
Lösungen. Die Doku ist gut, alle Bibliotheksfunktionen sind schön in 
PDFs beschrieben. OpenWatcom ist kostenlos.

von sous (Gast)


Lesenswert?

> Codeblocks ist ein guter Freeware-Compiler.

Codeblocks ist KEIN Compiler sondern eine IDE.
Sieht aber auf den ersten Blick interessant aus...

von Gast3 (Gast)


Lesenswert?

>Ich habe mal versucht das kleine Programm dort oben zu flashen.
/* test.c */
#include <avr/io.h>
int main (void)
{
   printf("test.c\n");
   return 0;
}
>Habe schon erwartet, dass der  avr-gcc compiler meckert. Ich weiß
>nämlich nicht, welche #include ??? Datei man noch angeben muss, damit
>mein Mega16 das Wort "Test" auf meinen Bildschirm bringt. Im Tutorial
>konnte ich das nicht finden, oder übersehe das, wie man printf ins
>Programm einbindet.

Da scheint mir einiges schief zu laufen. Wenn Du dieses Programm 
tatsaechlich compiliert bekommst und dann in den Mega16 flashst, woher 
soll der Mega16 wissen, dass die Ausgabe auf den PC soll? Woher soll der 
PC - gesetzt den Fall, der Mega schickt es an die RS232 (was er auch 
nicht weiss)- wissen, was er mit den an der RS232 ankommenden Zeichen 
machen soll?

Damit das funktioniert, muss das Programm auf dem PC ausgefuehrt werden. 
Dazu muss es natuerlich fuer diesen compiliert werden.

Gast3

von daniel (Gast)


Lesenswert?

>Kann jemand einen geeigneten Freeware-compiler empfehlen?

das wörtchen freeware outet dich aus windows user ;)
wenn dagegen jemand von opensource redet, dann outet er sich
als *nix user.

codeblock ist eine IDE, ist nix compiler
auch wenn die IDEs vielleicht oft einen Compiler mitaufnehmen.

ansonsten, wie du richtig erkannst hast, wird mit einfachen printf
wahrscheinlich nicht laufen. ich weiss jetzt gar nicht, ob avrgcc
printf so implementiert, dass es auf uart hinausschreibt.
ausserdem muss auf der pc seite zb hterm laufen. google mal nach hterm.
in die andere richtung ist es noch umständlicher, wenn man
mit scanf dir werte vom pc einlesen möchte. aber machbar ist alles :)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

printf auf einem AVR ist eine Frau ohne Unterleib -- sozusagen.

Du kannst nicht per printf auf dein PC-Terminal druchen, jedenfalls 
nicht so einfach. Wenn, dann musst du über (f)printf in ein eigenen FILE 
schreiben, das wiederum die ausgzugebenden Zeichen über einen 
Callback-Mechanismus auf eine Schnittstelle ausgibt.

Üblich ist die serielle Schnittstelle, also
1
µC <-> UART <-> Pegelwandler <-> RS232 <-> PC <-> Termionalprogramm

Weil das zum Anfangen die Overdose ist und du auch erst am C-Lernen 
bist, kannst Du Programme, die für den AVR geschrieben sind

-- mit einem AVR-Simulator wie in AVR-Studio durchsteppen und angucken, 
was passiert, wie sich die Register und Stasi ändern. Dazu müssen die 
Programme für AVR übersetzt worden sein.

-- mit einem Host-Compiler wie gcc für deinen PC übersetzen und dort 
laufen lassen. gcc für deinen PC erhält du zB mit Code::Blocks anbei. 
C::B brauchst du garnicht zu verwenden, aber es bringt einen MinGW mit 
gcc mit. Diesen kannst du ebenfalls von Kommandozeile aus verwenden wie 
den avr-gcc und auch die gleichen Optionen und Schalter verwenden. 
Ausnahme sind die maschinenabhängigen Schalter, die mit -m anfangen.

Natürlich muss man die Hardware-Abhängigkeiten in der Quelle irgendwie 
rausfaktorisieren; was soll ein PC mit einer avr/io.h anfangen?

Wie das aussehen kann ist zB zu sehen in meiner PC-Auskopplung von

Beitrag "Re: AVR: Snake! ------------O"

Für den PC geschrieben ist nur die pc-snake.c. Alles andere sind 
Quellen, die auch für AVR funktionieren. Allerdings ist bei pc-snake 
nicht das ganze AVR-Projekt dabei, sondern nur das, was für den PC 
gebraucht wird.

Wie man die Hardware-Abhängigkeit mit ein paar Zeilen los wird ist zu 
sehen im Kopf von snake.c.

von Günter R. (galileo14)


Lesenswert?

Stefan B. wrote:
> Nein, ich erzähle nicht, welche Rechner/OS ich noch einsetze, ich
> schäme mich!

Oh, erzähle es doch bitte, es würde mich sehr interessieren; ich denke 
nicht, daß man sich für irgendein Equipment schämen muß. Mein 
Arbeitsrechner ist ein 1600-MHz-Pentium IV unter Win2000, und ich 
arbeite überdies jeden Tag mit einem Pentium 133 MHz unter MS-DOS 6.22 
und mit Wordstar - das ist der stabilste PC, den ich besitze und er ist 
15 Jahre alt.

von nicht ideologisierter Computernutzer (Gast)


Lesenswert?

> Falls das nicht geht, dann möchte ich mir einen Freeware compiler
> installieren, mit dem ich C-Programme auf meinem Rechner üben kann.

http://www.smorgasbordet.com/pellesc/

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.