PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR: Memory Usage: Was ist Data?



Bumbum
08.07.2009, 08:48
Hallo,

ich schreibe gerade an einem Programm in C und bekomme beim compilieren folgende Meldung:



AVR Memory Usage
----------------
Device: atmega162

Program: 7124 bytes (43.5% Full)
(.text + .data + .bootloader)

Data: 1180 bytes (115.2% Full)
(.data + .bss + .noinit)


Seit dem der Wert für Data über 100% gestiegen ist, stürzt das Programm auf dem Controller ab. Auf was bezieht sich Data? Wo muss ich einsparen?

Viele Grüße
Andreas

oberallgeier
08.07.2009, 09:07
... Seit dem der Wert für Data über 100% gestiegen ist, stürzt das Programm auf dem Controller ab ...der Wert "Data" im [Build]-Fenster gibt an, wieviel Bytes aus dem SRAM vom übersetzten Programm zugewiesen werden:

Data: 294 bytes (28.7% Full)

Wenn bei Dir die Angabe: "1xx.x% Full" steht, so heßt das, Du benutzt - nein - Du benötigtst mehr RAM als Dein Controller verfügbar hat. Ein ziemlicher Ram-Fresser sind UART-Ausgaben: einfach weniger Kommentar ausgeben hilft zumindest bei mir öfters. Auch grössere Datenfelder brauchen Speicherplatz: z.B. messwert[1025] wird Deinen m162 mit 1024 Bytes SRAM in JEDEM Fall überlasten . . . . Und denke bitte dran: 2-Bytes-Variablen brauchen doppelt so viel Speicheplatz wie die platzsparenden uint8_t, char etc.

Die aktuelle Belegung u.a. des RAM kannst Du Dir im Unterordner "default" Deines aktuellen Projekts in der Datei "irgendwasstehthier.map" ansehen. Den kannst Du z.B. mit notepad öffnen.

Bumbum
08.07.2009, 10:21
Hallo Oberallgeier,

ich hatte auch erst den Ram im Verdacht und habe meine (angeblich) größte Variable (tatsächlich ein UART-Empfangs-Buffer) geändert, aber die Prozentzahl der Belegung von Data hat sich dadurch nur nach dem Komma verändert.

Aber durch deinen Tipp habe ich etwas weiter geforscht und tatsächlich bei einer anderen Variable einen Tippfehler gefunden, der das ganze dann verursacht hat. Jetzt bin ich wieder schön bei 56% Auslastung. Perfekt.

Viele Dank und viele Grüße
Andreas