- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 4 von 4

Thema: Speicherverbrauch: Neue Compiler-Versionen 'schlechter' ??

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.05.2007
    Beiträge
    18

    Speicherverbrauch: Neue Compiler-Versionen 'schlechter' ??

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    nach der Installation der neuen Version des gcc-Compiler (avr-gcc 4.3.0) stellte ich fest, dass im Vergleich mit meiner alten Version (4.1.2) der Speicherverbrauch für dasselbe Programm deutlich gestiegen ist:

    Neu: 11218 bytes (68,5% Full) ___ -> Alt: 62,9% !!!!

    Programmiert habe ich mit 'Programmer's Notepad (pn), im Makefile steht in beiden Fällen:


    # Optimization level, can be [0, 1, 2, 3, s].
    # 0 = turn off optimization. s = optimize for size.
    # (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
    OPT = s


    Wie das????


    Gruß
    Ali_Baba

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Wie das????
    Code-Optimierung ist eine diffizile Sache. Es ist nicht selten so, dass eine Veränderung eine Verbesserung in Umgebung A bringt, dafür aber eine Verschlechterung in Umgebung B. Und die Umgebung "Mikrocontroller" ist nicht gerade die, für die der GCC entwickelt und in der er getestet wird.

    Du kannst mal folgende Options versuchen:
    -fno-inline-small-functions
    -fno-split-wide-types
    -fno-tree-scev-cprop

    PS: Und falls du die EEPROM-Block-Funktionen nutzt, geht ein Teil des Mehr-Codes zu Lasten der Tatsache, dass diese Funktionen anscheinend in der aktuellen AVR-Libc mit der Option -mcall-prologues übersetzt wurden.
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.05.2007
    Beiträge
    18
    Danke!

    Dieser Eintrag in das Makefile:

    CFLAGS += -fno-inline-small-functions

    verkleinert das programm von 68,5% Full auf 62.0%

    Die anderen beiden Einträge bewirken keine Verkleinerung des Hex-Codes.

    ... ich werde mich nun 'mal im Internet schlau machen, was diese Einträge eigentlich bewirken .... oder könnte mir dies hier 'mal kurz jemand beantworten?

    Danke
    Ali_Baba

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Zu den Optionen sollte GCC was erzählen via

    avr-gcc -v --help

    Das Thema Codegröße wird auch hier behandelt:

    http://www.mikrocontroller.net/topic/100923
    Disclaimer: none. Sue me.

Berechtigungen

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

Labornetzteil AliExpress