Forum: Compiler & IDEs Externe Funktion braucht mehr RAM?


von Markus B. (rusticus)


Angehängte Dateien:

Lesenswert?

Hallo,

ich wollte eine Funktion von mir in eine externe Datei auslagern, da ich 
diese noch in anderen Funktionen brauche.
Das Problem ist dabei nur, das wenn ich über die externe Datei starte, 
mir der Compiler eine Fehlermeldung ausgibt, die durch die Lib von Peter 
Fleury verursacht wird.
Habe ich diese Funktion allerdings 1:1 in der eigentlichen Datei, kommt 
keine Fehlermeldung.

Der Compiler meckert das der SRAM zu klein für die Buffer wäre, dies 
wird überprüft indem ein Wert von ENDRAM abgezogen wird. Setzt man 
diesen Wert allerdings manuell auf den Wert des AT90CAN128, so kommt 
keine Meldung es läuft auch normal.

Im Anhang noch die Datein


Danke schon mal im Vorraus

mfg

von Peter (Gast)


Lesenswert?

>Danke schon mal im Vorraus

Erspare uns doch die Suche:

Welche Funktion hast/willst Du von welcher Datei in welche Datei 
auslagern...?

von Oliver (Gast)


Lesenswert?

Der Fehler sitzt vor dem Computer.

Ich hab mit jtzt tatsächlich die Mühe gemacht, deine zip-Datei 
auszupacken, kann darin aber weder ENDRAM noch buffer finden. Was genau 
ist also jtezt die Frage, und wie genau stellst du dir vor, daß das 
jemand beantworten kann (oder will)?

Oliver

von Markus B. (rusticus)


Lesenswert?

Entschuldigung für die Ungenauigkeit

Also die Funktion "uart_get_line" will ich auslagern, über die Datei 
"uart_get_l"

Diese arbeitet ja eigentlich zu 90% mit der Funktion aus der Lib von 
Peter Fleury
Diese Lib überprüft ob der TX und der TX Buffer auch in den SRAM passen, 
dabei kommt die Fehlermeldung, allerdings nur wenn die Funktion 
ausgelagert ist, wenn ich die Funktion "uart_get_line" in die 
"visuschni.c" schreibe, kompiliert er fehlerfrei.
Ich benutze AVRStudio und der µC ist ein "AT90CAN128"

von Oliver (Gast)


Lesenswert?

Dann nochmal ganz deutlich:

Häng den Code hier an, bei dem der Fehler auftritt. Mit allen Dateien, 
compilierbar, mit Projektdatei. Oder such deinen Fehler selber.

Oliver

von Markus B. (rusticus)


Angehängte Dateien:

Lesenswert?

Naja hier das komplette Projekt, aber compilierbar ist es ja eben nicht

von Oliver (Gast)


Lesenswert?

Nun ja, du solltest dir angewöhnen, JEDES c-File für einen AVR mit der 
kleine Zeile
1
include <avr/io.h>

zu beginnen. Damit erst werden alle Konstanten auf die AVR-Spezifischen 
Werte gesetzt.

Bei dir ist die Reihenfolge der includes falsch.

Oliver

von Markus B. (rusticus)


Lesenswert?

Ok ich hab jetzt ein wenig mit der Reihenfolge der includes rumgespielt, 
aber ich hab ehrlich gesagt keine gefunden, in der der Fehler nicht mehr 
auftritt

Welche Reihenfolge ist denn die richtige? Und was sind die 
"Ranghöchsten" Libs? GIbt es da überhaupt so was wie eine Rangfolge? 
Falls ja, kann man diese einsehen?

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.