Forum: Compiler & IDEs avr-gcc mit mpc und mpfr support?


von Martin (Gast)


Lesenswert?

http://www.heise.de/ct/projekte/machmit/ctbot/wiki/AVRToolchain#Toolchainselberbauen

welchen Sinn machen mpc und mpfr bei AVR-GCC,
welche Vorteile bringt das konkret?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Diese Pakete werden zum Erzeugen von GCC benötigt, siehe

http://gcc.gnu.org/install/prerequisites.html

Beispiel: In einer Quelle wie
1
float x = 1.0f + 2.0f;
muss für x ein Initializer berechnet werden; diese Berechnung kann nur 
auf dem Host geschehen. Um auf dem Host unabhängig von der vorliegenden 
float/double-Harware zu sein, wird das alles in Software nachgebildet.

von Martin (Gast)


Lesenswert?

gut zu wissen, Danke.
Wenn der Host, also der Arbeitsrechner auf dem AVR Quellen compiliert
werden, Hardwareunterstützung für solche compile-time Berechnungen
besitzt, wäre dieser Schritt (mpc, mpfr) nicht notwendig?
Die meisten Seiten die auf die Toolchain-Installation eingehen,
bauen nur binutils, gcc und libc.

Noch eine kurze Frage: wie geht man am besten beim Bauen vor.
Holt man sich besser grundsätzlich die neuesten Quellen oder
Quellen aus der selben Zeit? Beispielsweise gcc3.4.6 mit binutils 2.18
und libc 1.6.8? Gibt es stabile Kombinationen und nicht empfehlenswerte?

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Martin schrieb:
> gut zu wissen, Danke.
> Wenn der Host, also der Arbeitsrechner auf dem AVR Quellen compiliert
> werden, Hardwareunterstützung für solche compile-time Berechnungen
> besitzt, wäre dieser Schritt (mpc, mpfr) nicht notwendig?

Nein, diese Pakete sind immer notwendig, unabhängig von den Fähigkeiten 
der Host/Build-Plattform. Abhängig sind sie lediglich von der 
GCC-Version. mpc ist AFAIK seit 4.5 erforderlich, gmp und mpfr auch für 
ältere 4-er Versionen.

Selbt wenn der Host double-Berechnungen nativ unterstützt, ist nicht 
sichergestellt, daß diese genauso geschehen wie Target-Code es machen 
würde.

Überigens ist es wie bei heise angegeben nicht notwendig, die Pakete 
gmp/mpfr/mpc ins GCC-Root-Directory zu kopieren. Ein Soft-Link ist 
völlig ausreichend und beim Build mehrerer Toolchain-Varianten 
Platzsparender.

> Die meisten Seiten die auf die Toolchain-Installation eingehen,
> bauen nur binutils, gcc und libc.

Für ältere GCC wie 3.x war das auch ausreichend.

> Noch eine kurze Frage: wie geht man am besten beim Bauen vor.
> Holt man sich besser grundsätzlich die neuesten Quellen oder
> Quellen aus der selben Zeit? Beispielsweise gcc3.4.6 mit binutils 2.18
> und libc 1.6.8? Gibt es stabile Kombinationen und nicht empfehlenswerte?

Bei avrfreaks.net gibt's ein paar sticky-threads, wo's um avr-Tools 
generierung und Build-Scripte geht, die auch automatisch Patches 
runterladen und anwenden. Für eingehendere Info, welche Versionen 
zusammenpassen/empfehlenswert sind, ist das dortige avr-gcc-Forum ein 
Anlaufpunkt, dito die Mainingliste avr-gcc-list von 
http://avr-libc.nongnu.org

Von avr-(gcc/binutils/libc) gibt es so viele 
Kombinationen/Releases/Distributionen/Patches; ich weiß nicht ob da noch 
irgendjemand ausser Eric oder Jörg durchblickt. Meine Interesse an 
avr-gcc geht in Richtung Entwicklung, nicht dessen Verwendung. Und da 
interessieren mich nur ungepatchte Versionen von avr-gcc.

In http://winavr.cvs.sourceforge.net/viewvc/winavr/ gibt es ein 
Verzeichnis "patches", wo man die Patches für unterschiedliche Versionen 
der Tools finden kann. Die Patches sind auch bei den 
WinAVR-Distributionen anbei. Die Patches sind jedoch nicht protierbar, 
d.h. ein Patch gegen 4.3.3 passt ziemlich sicher nicht auf 4.4.2. Zudem 
müssen die Patches in einer bestimmten Reihenfolge angewandt werden.

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.