WinAVR: Memory Usage: Was ist Data?
Hallo,
ich schreibe gerade an einem Programm in C und bekomme beim compilieren folgende Meldung:
Code:
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
Re: WinAVR: Memory Usage: Was ist Data?
Zitat:
Zitat von Bumbum
... 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.