WinAVR 20090313 Released

Gast #1195484
Wenn Du die EEprom Funktionen benutzest, so werden die Programme seit 
den 2 letzten 2 Releases massiv aufgeblaeht. Wenn Du sie dann durch 
eigene ersetzest, schrumpft die Grösse auf das Normalmass zurück.
Persönliche Seite #1195610
Ja. Früher war alles besser ;-)

Das Problem scheint nur bei den Block-Funktionen für den EEPROM aus der 
avr-libc zu bestehen, also für eeprom_read_block und eeprom_write_block.

Die eeprom_read_block ruft im Endeffekt indirekt die __eerd_block auf, 
deren Implementierung ganz unschuldig aussieht:
   http://cvs.savannah.gnu.org/viewvc/avr-libc/libc/misc/eerd_block.c?revision=1.2&root=avr-libc&view=markup

Wenn man allerdings nen Dump macht und sieht, was da alles hinzugelinkt 
wird, dann sieht es nicht mehr ganz so prickelnd aus (siehe Anhang).

Und das kostet nicht nur mächtig Flash, sondern knabbert auch merklich 
am  RAM! Es werden sehr viele Register gesichert.

Das Problem sollte sich auf avr-libc-Ebene beheben lassen, indem das 
Makefile für die genannten Funktionen -mcall-prologues vermeidet.

Aus Applikationsebene sollte man die Funktionen vermeiden, wenn man sich 
nicht ohnehin über andere avr-libc Funktionen die 
Prolog/Epilog-Funktionen zieht. In dem Falls könnte man selbst ne 
Schleife um die read/write Byte Funktionen bauen, und muss bei dem 
EEPROM-Zeug zumindest nicht bei Null anfangen...

Johann
Angehängte Dateien:
Persönliche Seite #1195730
Hab eben mal mein aktuelles Projekt mit verschiedenen Versionen von 
avr-gcc übersetzt und die Codegröße anzeigen lassen
1
avr-gcc  |  WinAVR  | Code
2
---------+----------+------
3
 3.4.6   | 20060421 | 11656
4
 4.2.2   | 20071221 | 12244
5
 4.3.0   | 20080610 | 12068
6
 4.3.2   | 20081205 | 12152
7
 4.3.2   | 20090309 | 12122

Sei der Dezember-Release gab es also eine minimale Verbesserung, und in 
der 4-er Linie lässt sich eine Tendenz zu kleinerem Code hin erkennen.

Der 4-er Compiler schliesst weiter zur letzten 3-er Release auf und 
liegt nur noch 4% hinter ihr.

Simon K. wrote:
> Trotzdem sollte man prinzipiell nicht auf ältere Versionen
> zurückgreifen, sondern versuchen die Bugs in den neuen Versionen zu
> reparieren.

Klaro, aber bis dahin wird noch ein Weilchen vergehen. Ich seh das nicht 
so dogmatisch, daß man prinzipiell immer das Allerneueste haben bzw. 
einsetzen muss.

Johann

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.