-         

Ergebnis 1 bis 3 von 3

Thema: WinAVR: Memory Usage: Was ist Data?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    672

    WinAVR: Memory Usage: Was ist Data?

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    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.
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    672
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •