Forum: Mikrocontroller und Digitale Elektronik Arduino: Compiler Fehler?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Frank E. (Firma: Q3) (qualidat)


Bewertung
0 lesenswert
nicht lesenswert
Ich möchte das Projekt "sipringer" von

http://forum.arduino.cc/index.php?topic=234204.0 (aktuellste Version 
ganz unten auf der Seite)

compilieren und fliege immer wieder mit der Meldung (gekürzt):

"... error: unable to find a register to spill in class 'NO_REGS'"

raus. Nach eigenen Recherchen ist das ein GCC-Bug und man soll man IDE 
updaten, hilft aber nix. Ich benutze bereits die 1.6.13 Houry Build vom 
3.11.2016 (unter Mac OSX).

Der Fehler tritt bei allen AVR-basierten Arduinos auf (Nano, Uno, Mega 
...), nicht jedoch beim DUE. Der ist mir aber zu groß für das Projekt, 
der Code soll auch auf eine, Nano laufen. Ich konnte die auslösende 
Position eingrenzen, hat irgendwas mit "sprintf" zu tun. Wenn ich die 
drei Zeilen auskommentiere, läuft ddie Compilation durch.

Was macht eigentlich "sprintf" genau? Kann man das evtl. mit einer 
eigenen Funktion ersetzen? In der Arduino-Doku kommt das garnicht vor. 
:-(

Hat jemand eine Idee, wo das Problem steckt oder wie man es umgehen 
kann? Danke!

Bei Interesse kann ich auch die ganze Fehlermeldung posten, die ist aber 
ziemlich lang ...

: Bearbeitet durch User
von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Frank E. schrieb:
> Nach eigenen Recherchen ist das ein GCC-Bug und man soll man die
> IDE updaten

Was hilft es, die IDE zu aktualisieren, wenn der Compiler schuld ist.

Welche Compilerversion benutzt du?

Welcher Prozessor ist in der IDE eingestellt und auf welchem soll der 
Code laufen?

von Kaj G. (Firma: RUB) (bloody)


Bewertung
0 lesenswert
nicht lesenswert

von Frank E. (Firma: Q3) (qualidat)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Frank E. schrieb:
>> Nach eigenen Recherchen ist das ein GCC-Bug und man soll man die
>> IDE updaten
>
> Was hilft es, die IDE zu aktualisieren, wenn der Compiler schuld ist.
>
> Welche Compilerversion benutzt du?
>
> Welcher Prozessor ist in der IDE eingestellt und auf welchem soll der
> Code laufen?

In der Mac-Version ist der Compiler quasi in die IDE eingebettet - 
Mac-Apps sind eigentlich Ordner mit allerlei "Content". Ich habe es zwar 
nicht im EInzelnen geprüft, aber ich gehe davon aus, dass da immer der 
jeweils aktuellste Compiler drin ist.

Wenn ich mir "Paketinhalt anzeigen" lasse, finde ich dort einen Ordner 
"gcc" mit der Version 4.9.2 ...

von Frank E. (Firma: Q3) (qualidat)


Bewertung
0 lesenswert
nicht lesenswert
Kaj G. schrieb:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60040#c13Fixed in
> trunk (7.0)

Hmm ... und wie bekomme ich das in meine Arduino-IDE für OSX hinein?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
> Was macht eigentlich "sprintf" genau?

Sprintf fügt Variablen in eine Zeichenkette ein und schreibt das 
Ergebnis in einen Buffer (Array von chars).
1
char puffer[30];
2
char* name="Stefan";
3
int alter=42;
4
sprintf(puffer, "Hallo %s, du bist %d Jahre alt", name, alter);

Befüllt den Puffer mit dem Text "Hallo Stefan, du bist 42 Jahre alt".

: Bearbeitet durch User

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]
  • [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.