Forum: Mikrocontroller und Digitale Elektronik Build Failed with 1 error, error wird aber nicht angezeigt, AVR Studio 4


von Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe eine Fehlermeldung beim compilieren (siehe Anhang). Der fehler wird 
allerdings nicht angezeigt. Hatte jemand eventuell schon mal ein 
ähnliches Problem oder weiß woran es heben könnte?

Beste Grüße Sven

BTW: kann mir einer sagen warum die memcpy-Befehle warnings werfen?

von ... (Gast)


Lesenswert?

Sven schrieb:
> ... Der fehler wird allerdings nicht angezeigt. ...

Dann schau nochmal hin, insbesondere ab der 5. Zeile von unten.
Ist ein Linker Fehler. Du hantierst scheinbar mit float-Typen rum und 
hast vergessen die libm zu linken

Sven schrieb:
> BTW: kann mir einer sagen warum die memcpy-Befehle warnings werfen?

Wenn Du den Source posten würdest, vielleicht. Meine Glaskugel meint, 
einer der übergebenen Pointer ist volatile.

von Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hallo.
Danke mal für die Infos.

Nur leider kann ich in der 5ten Zeile von unten nichts erkennen was auf 
eine libm hindeutet. Zumal ich nicht mal weiß für was die libm sein 
soll, google liefert da nicht wirklich ne Antwort.

Ich hab jetzt mal fürs bessere Verständniss den Source-Code in den 
Anhang gepackt.

Der error wird erst geworfen seidem ich ein Abfrage ergänzt hab. Sie 
schaut folgendermaßen aus und befindet sich in der datei "DataInput" und 
dort in der gleichnamigen Funktion.
1
if((XYZ[2] >= -130.00) || (XYZ[2] <= -250.00 ))
2
        {
3
            BListEnd = true;
4
        }

XYZ[] ist ein float array mit drei elementen.

Die beiden memcpy warnings werden in der Datei "angletopwm" in den 
Funktionen "PositionWrite" und "PositionSave" geworfen.

Wäre nett wenn sch das mal einer anschauen könnte. Wenn generell noch 
was auffällt zwecks programmierstiel, bin ich gern für Kritik offen.

Besten Dank im voraus!
Gruß Sven

von ... (Gast)


Lesenswert?

Sag ich doch, Du hantierst mit Gleitkommazahlen (Typ 'float' bzw. 
'double'), auch an den obigen Messages zu erkennen ('__lesf2', 'fplib', 
...). Genau deshalb solltest Du dann unbedingt auch die entsprechende 
Floatingpointlibrary zu Deinem Programm dazu linken. Der Dateiname der 
Library ist libm.a. Das die bei Dir fehlt sieht man an der 6. Zeile von 
unten (die letzte mit dem grünen Punkt davor), das ist der Aufruf des 
Linkers. Solange dort kein '-lm' mit auftaucht, fehlt die Lib.

Geh mal im AVRStudio auf "Project"->"Configuration Options", dann auf 
der linken Seite auf "Libraries". Dann markierst Du in der Liste links 
unten 'libm.a' und klickst auf den Button "Add Library ->", jetzt sollte 
'libm.a' auch in der rechten Liste stehen, dann noch mit "OK" 
bestätigen.

CU

PS: Ich hoffe Du bist Dir bewußt, daß Floatingpointarithmetik auf einem 
AVR eine ziemlich lahme Sache ist.

von Sven (Gast)


Lesenswert?

Danke für die ausführliche Info!
Ja darüber bin ich mir bewusst.

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.