Forum: Mikrocontroller und Digitale Elektronik Arduino: Compiler Fehler?


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


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)


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)


Lesenswert?


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


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)


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. (Gast)


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".

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.