Speicherplatz ausreichend?

Gast #3571773
Lesenswert?
• ▲
▼
Hallo,
ich verwende einen AT90CAN128, und bekomme seltsame Fehler beim 
verhalten des Programms, kann es sein das mein Speicher schon zu voll 
ist?
Folgende Info bekomme ich beim kompilieren:

text     data      bss      dec      hex
24436      538     1762    26736     6870


Über einen Tip wie ich dies zu interpretieren habe, wäre ich dankbar... 
:-)
Gast #3571817
Lesenswert?
• ▲
▼
Hallo,

> Folgende Info bekomme ich beim kompilieren:
>
> text     data      bss      dec      hex
> 24436      538     1762    26736     6870
  |          |       |
  |          |       +-- uninitialisierte Variablen
  |          +--- initialisierte Variablen
  +--- Code, PROGMEM und __flash

Dein Programm belegt also derzeit 24436 Bytes Flash, sowie statisch 2300 
Bytes (538+1762) im RAM. Das ergibt 26736 Bytes insgesamt, oder 0x6870 
Bytes in hexadezimaler Schreibweise.

Die Zahl für den Flash ist vertrauenswürdig.
Beim RAM kommt noch der dynamische Verbrauch (Stack und Heap) dazu. 
Lokale Variablen und Rücksprungadressen landen auf dem Stack, der Heap 
wird mit Funktionen wie malloc() oder brk() verwaltet.

Wieviel RAM hat der Controller?

Gruß,
Svenska
#3571882
Lesenswert?
• ▲
▼
Hallo Daniela

Was die Compiler- oder viel mehr die Linker-Information bedeutet hat 
Svenska bereits erklärt.

Die Grösse Deines Programmes ist kein Problem, sonst würdest du es schon 
gar nicht auf den uC rauf bringen.

Ob Dir zur Laufzeit der Speicher (RAM) ausgeht, lässt sich anhand dieser 
Informationen nicht sagen. Dazu müsste man das Laufzeitverhalten anhand 
des Codes analysieren. Nur so lässt sich sagen, wieviel Speicher nebst 
dem statisch allozieren Memory während der Ausführung dynamisch 
alloziert wird.

Das folgende Beispiel würde schon mehr als Deinen gesamten Speicher 
aufbrauchen - egal wie gross der ist (dass das Programm niemals 
terminiert ist da noch das kleinere Problem).
1
void bad_code() {
2
   bad_code();
3
}
4

5
void main() {
6
   bad_code();
7
}


Gruss
Claude
#3572054
Lesenswert?
• ▲
▼
Daniela schrieb:
> Hallo,
> ich verwende einen AT90CAN128, und bekomme seltsame Fehler beim
> verhalten des Programms, kann es sein das mein Speicher schon zu voll
> ist?
> Folgende Info bekomme ich beim kompilieren:
>
> text     data      bss      dec      hex
> 24436      538     1762    26736     6870
>
>
> Über einen Tip wie ich dies zu interpretieren habe, wäre ich dankbar...
> :-)

Speicher hat dein Controller genug. Viel interessanter wäre es zu 
wissen, ob am Ende "Build succeeded with 0 Warnings..." zu lesen ist.

mfg.
Gast #3572195
Lesenswert?
• ▲
▼
Pete K. schrieb:
> Wie äußern sich diese Fehler?

Ich sende zyklisch eine CAN-Nachricht, außerdem warte Ich auf eine 
bestimmte CAN-Nachricht um eine LED einzuschalten. Obwohl diese 
Nachricht auf dem Bus liegt, geht die LED nicht an. Die zyklische 
Nachricht kommt zwar, aber mit dem falschen Inhalt.
Wenn ich dann etwas ändere geht es plötzlich wieder.
Wie gesagt, ein sehr komisches verhalten... :-(

Vielleicht ist es der nicht ausrreichende bzw. überlaufende RAM? :-/
Wie kann ich da denn ansetzen???

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.