WinAVR 20090313 Released

Gast #1195484
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren