Forum: Compiler & IDEs AVR-GCC mit AVR-Studio 3.x


von Bernd Stenner (Gast)


Lesenswert?

Hallo Zusammen,

ich habe folgendes Problem, zu dem ich weder hier im Forum, noch bei
avrfreaks.net und auch nicht in den div. Manuals eine Lösung gefunden
habe: Ich möchte das AVR-Studio zusammen mit AVR-GCC nutzen, ansich
offensichtlich keine große Sache, da dies wohl viele machen.

Nun habe ich eine Installationsversion vom AVR-Studio 3.5 (?) sowie den
AVR-GCC vom Nov. 2001. Und dem scheint wohl was zu fehlen, soweit ich
das richtig verstehe. Auf jeden Fall compiliert diese Kombination nicht
fehlerfrei, obwohl ich die Anleitung mit den gcctest-Sourcecodes
haargenau ausgeführt habe.

Danach bin ich darauf gestoßen, das bei avrfreaks.net eine neue Version
des Compilers zu finden sei. Ein entsprechender Link führt auf die
WINAVR-Seite. Sei's drum, WINAVR installiert: Es findet sich aber
leider keine Anleitung, wie ich vom Programmers Notepad aus compiliere.
Ich habe daher versucht, den hierin enthaltenen GCC für das AVR-Studio
zu verwenden, was laut Readme zwar gehen soll, aber nicht ging :-(

Ich kann nicht mehr! Ich versuche seit 8h ein laufendes System auf die
Beine zu stellen und halte mich nicht für besonders dumm oder
ungeschickt. Ich habe schon so einiges an Programmen installiert
bekommen, aber diese Geschichte raubt mir die letzten Nerven.

Also, bitte, wer kann mir weiterhelfen?

danke und gruß
bernd

von Jörg Wunsch (Gast)


Lesenswert?

Hmm, PN2 haben schon genügend Leute zum Aufruf des Compilers überreden
können.

Anyway, AVR Studio 3.x wird nicht länger von Atmel unterstützt.  Nimm
bitte 4.08.

von Bernd Stenner (Gast)


Lesenswert?

Also,
weiter gebracht hat mich daß jetzt noch nicht...
AVR Studio 4.08 ist installiert, aber so wie's aussieht, kann ich da
nur Assembler-Projekte mit starten. Eine Möglichkeit, den C-Compiler
einzubinden, habe ich nicht gefunden.

Mir ist es ja auch gar nicht so wichtig, ob ich nun 4.08 oder 3.x habe,
schließlich haben einige wohl schon mit der Version 3.x programmiert.
Nur ich brauche wohl eine Version des AVR-GCCC von AVRFreaks.net die
jünger ist als 7.12.2001. Vielleicht kann mir jemand sagen, wo die
auffindbar ist...

gruß
bernd

von Toni (Gast)


Lesenswert?


von Bernd Stenner (Gast)


Lesenswert?

Danke Toni,
doch hat leider nichts gebracht... WinAVR hatte ich ja schon, doch auch
die Anleitung auf der von dir zitierten Seite führte mit dem dortigen
Testprogramm nicht zu einer fehlerfreien Kompilierung.

Derzeit beschwert sich der Compiler über eine undefinierte Referenz zur
Funktion ionint (taucht in dem Testprogramm auf).

Das sieht mir doch sehr nach nicht gesetzten Pfaden aus, aber ich habe
ide Installation genau nach Anleitung durchgeführt. Von manuell
anzulegenden Pfaden steht da nichts.

gruß
Bernd

von Jörg Wunsch (Gast)


Lesenswert?

Nein, eine undefined reference hat nichts mit irgengdwelchen nicht
gesetzten Pfaden zu tun, sondern es bedeutet schlicht und einfach, daß
Dein Program ionint referenziert, aber nicht definiert.

Da die Standard-Makefiles allesamt mit -g in den Compiler-Optionen
daherkommen, sollte Dir der Linker auch noch sagen, in welcher Zeile
die Referenz auftaucht.

Falls Du wirklich ionint geschrieben hast, vielleicht ein simpler
Schreibfehler?

Ansonsten: in avr-gcc und avr-libc hat sich seit der uralten Version,
mit der Du bislang gearbeitet hast, einiges getan.  Manch altes
Programm benötigt da ein wenig Politur...

von Bernd Stenner (Gast)


Lesenswert?

Hallo Jörg,

ist mir schon klar, aber wenn die Funktion ionint nicht definiert ist,
fehlt eine Datei, in der die Definition erfolgen sollte. Da es sich um
ein kleines Testprogramm von der ersten der beiden von Toni zitierten
Seiten handelt und Bestandteil einer Anleitung zur Installation von
WinAVR ist, bin ich davon ausgegangen, daß alle benötigten Header
inkludiert sind, aber evtl. nicht gefunden werden. Ein Schreibfehler
ist es leider auch nicht, dort steht tatsächlich ionint().

Es ist übrigens richtig, der Linker sagt mir auch die Zeile. Ich habe
eben gesehen, er wirft in Zusammenhang mit dem ionint auch noch eine
Warnung aus.

Wie auch immer, mir ist das Programm an sich ja nicht wichtig, ich will
einfach nur ein Programmiersystem haben, was ich übrigens bisher nicht
hatte. Dieses WE wollte ich halt eigentlich darauf verwenden, mir den
Atmel vertrauter zu machen. Allerdings habe ich bis jetzt immer noch
kein System, mit dem ich in c Programme schreiben, compilieren und
übertragen kann. Ist doch alles sch...

Ich weiß nicht, wenn ich eine Installationsdatei ausführe, davon bin
ich bisher immer ausgegangen, habe ich entweder anschließend ein
lauffähiges System oder eine genaue Anleitung, was noch zu machen ist.
Weder bei AVR-Studio+AVR-GCC noch bei WinAVR war das der Fall. Das ist
schon ziemlich frustriend.

gruß
bernd

von Jörg Wunsch (Gast)


Lesenswert?

> ist mir schon klar, aber wenn die Funktion ionint nicht definiert
> ist, fehlt eine Datei, in der die Definition erfolgen sollte. Da es
> sich um ein kleines Testprogramm von der ersten der beiden von Toni
> zitierten Seiten handelt und Bestandteil einer Anleitung zur
> Installation von WinAVR ist, bin ich davon ausgegangen, daß alle
> benötigten Header inkludiert sind, ...

Headerdateien enden auf .h, diese werden vom C-Präprozessor in Deine
C-Quellen reingezogen.

Du hast vermutlich (genau kann ich das nicht sagen, weil Dein Input
etwas zu spärlich ist) in Deinem Makefile nur eine C-Datei angegeben,
obwohl das Projekt aus mehreren besteht.

von Bernd (Gast)


Lesenswert?

Hallo Jörg,

Du hast schon recht, das meine Infos etwas spärlich sind, also, es ist
so:

Es gibt kein "Projekt", daß sich nicht kompilieren läßt, soweit bin
ich ja noch gar nicht gekommen...
Und ich hatte bisher auch noch keine funktionierende
Entwicklungsumgebung auf meinem Rechner. Mein Ziel ist es, erst mal
einen brauchbaren Editor + C-Compiler zu installieren. Dazu habe ich
anfangs die Installationsdateien für AVR-Studio 3.56 und
avrgcc20011121a.exe von einem Bekannten bekommen, der hiermit m.W. ein
lauffähiges System installieren konnte.

Nach der Installation (gemäß Anleitung "Installing and using AVR-GCC
with AVR-Studio" von Eivind A. Sivertsen, stammt wohl von der
AVR-Freaks-Seite) habe ich das Paket GCCtest von Volker Oth verwendet,
um ein Test-Projekt anzulegen und zu kompilieren. Letzteres hat nicht
funktioniert, ein Fehler war, das im makefile der Schalter "MCU =
atmega8" nicht erkannt wurde, es gab aber noch weitere, die - soweit
ich das verstehe - auf fehlende oder falsche Einstellung der
Installation hinwiesen. Später habe ich dann rausgefunden, das sich die
o.g. Anleitung auf avrgcc in der Version vom Dez. 2001 bezieht, in dem
wohl auch der ELF2COFF-Konverter enthalten ist, was bei meiner Version
nicht der Fall ist.

Also habe ich mich auf die Suche nach der neusten Version des AVRGCC
gemacht, alle Links hierzu führen aber auf die Seite vom WINAVR. Dieses
habe ich dann Installiert , allerdings fehlte eine Beschreibung, wie
mit dem Toolpaket zu verfahren sei. Der Versuch, das AVRGcc, daß in
diesem Paket enthalten ist, mit AVR-Studio 3.56 zu verwenden schlug
wiederum fehl.

Dein erster Vorschlag hat mich zum AVR-Studio 4.08 geführt, der aber
nur einen Assembler enthält und meines Wissens nach nicht die
Einbindung eines (externen) C-Compileres ermöglicht.

Schlielich gab es da noch den Hinweis von Toni auf eine erläuternde
Seite zum WinAVR, die ich wiederum haarklein nachvollzogen habe. Auf
dieser Seite gibt es ein kleines Beispielprogramm, der Quellcode im
folgenden:

#include <avr/io.h>

int main(void)
{
  unsigned char i;

  ionint();

  /* Endlosschleife */
  for (;;);

  return 0;
}

und hierauf bezieht sich mein aktuelles Problem, dass nämlich der
Compiler dieses File (natürlich + makefile) nicht in ein Programm
umsetzt, sondern sich über die fehlende Definition beschwert. Da nichts
anderes in der Dokumentation stand, bin ich davon ausgegangen, daß
dieser kurze Code ohne weiteres kompilierbar sein sollte...


Gruß
Bernd

von Jörg Wunsch (Gast)


Lesenswert?

Das wäre nur dann compilierbar, wenn es auch noch jemanden gibt, der
die Funktion ionint() definiert.  Ein Bestandteil der Bibliothek ist
sie jedenfalls nicht.

Warum hast Du nicht mit dem README von WinAVR selbst erstmal
angefangen?

avr-libc kommt mit einem simplen Demo-Programm, das findest Du unter
WinAVR-Verzeichnis => examples => demo (wenn mich nicht alles
täuscht).  Kann sein, daß Du für den ATmega8 noch irgendwelche
IO-Definitionen anpassen mußt (leider unterscheiden diese sich
gelegentlich von AVR zu AVR, aber das liegt nicht am Compiler, sondern
wird von Atmel so vorgegeben), aber ansonsten sollte das den Anspruch
an ein minimales Projekt erfüllen.  Außer dem Takt und der
Stromversorgung muß man nur noch eine LED anlöten (Takt ist beim
ATmega8 ja standardmäßig intern, also mußt Du Dich darum erstmal auch
nicht kümmern).

Zu Windows kann ich Dir nicht viel sagen, da ich selbst keins habe.
Den Erlebnisberichten anderer nach scheint aber AvrSide ganz OK zu
sein:

http://www.avrside.fr.pl/eng/ind_eng.html

Ja, AVR Studio 4.x hat kein API zur Einbindung von 3rd-party
Compilern, so daß es als IDE nur für den mitgelieferten Assembler
taugt.  Betrachte es als Simulationstool.

Ja, die aktuelle Windows-Distribution von AVR-GCC & Co. heißt WinAVR.
Leider seit einem halben Jahr auch noch nicht wieder aktualisiert, was
vor allem an beruflichem Streß Eric Weddingtons mit seinem
Brötchengeber hängt.

von Bernd (Gast)


Lesenswert?

zu ionint(): sehe ich auch so, ich bin nur davon ausgegangen, daß es ich
um irgend eine Standardfunktionfunktion handelt, die aber dann während
des Kompilierens nicht gefunden wird. Wie du schreibst, ist dem aber
wohl nicht so.

Die readme zu WinAVR habe ich natürlich zuerst gelesen, allerdings
erklärt die jemanden wie mir, der mit make noch nicht viel zu tun
hatte, nicht, wie ich make richtig einbinde. Es wird aber erläutert,
wie man das AVR-Studio zusammen mit WinAVR nutzt (wenn auch nicht
empfohlen). Die Anleitung hatte ich dann (erfolglos) versucht
umzusetzen.

Mittlerweile habe ich eine Lösung gefunden:
Ich habe AVR-Studio 3.56 installiert und dazu die avrgcc-Version vom
Nov. 2001 und anschließend das komplette avrgcc-Verzeichnis meines
Kollegen, bei dem alles läuft über mein entsprechendes Verzeichnis
kopiert. Jetzt kompiliert mein System endlich. Was es war, weis ich nun
natürlich immer noch nicht, aber das ist mir mittlerweile auch egal.


Danke trotzdem für alle Hinweise.
gruß
Bernd

von Jörg Wunsch (Gast)


Lesenswert?

Hmm, auf die Dauer wirst Du aber mit AVR Studio 3.x nicht mehr
glücklich werden.  Atmel wird Dir dafür keine Bugreports mehr
entgegennehmen (während von mehreren Seiten berichtet worden ist, daß
sie aktiv Bugs im 4.x beseitigen), und es hat mehr als nur einen Bug.

von Bernd (Gast)


Lesenswert?

OK, das ist natürlich ein gutes Argument, aber ich bin froh, daß ich
überhaupt erstmal loslegen kann. Zudem kann ich mich so noch mit meinem
Kollegen austauschen, der ebenfalls mit dem Studio in der 3.x Version
arbeitet. Ich hoffe halt, daß ich in Bälde vertrauter mit dem System
werde, so daß mir dann ein Umstieg möglich (bzw. leichter) wird. Aufs
erste wird es aber sicherlich reichen, zumindest, solange ich nicht
mehr will, als das mein AVR "Hello World" per LED morst ;-)

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.