mikrocontroller.net

Forum: Compiler & IDEs Externe Funktion braucht mehr RAM?


Autor: Markus B. (rusticus)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Danke schon mal im Vorraus

Erspare uns doch die Suche:

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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus B. (rusticus)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus B. (rusticus)
Datum:
Angehängte Dateien:

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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ja, du solltest dir angewöhnen, JEDES c-File für einen AVR mit der 
kleine Zeile
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

Autor: Markus B. (rusticus)
Datum:

Bewertung
0 lesenswert
nicht 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?

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.