WinAVR Overhead?

Gast #503206
Lesenswert?

Tag zusammen!
Ich beschäftige mich - obwohl bis jetzt c51-Fetischist - neuerdings mit 
einem ATmega16 in Verbindung mit WinAVR. Ich habe da nur ein Problem. 
Wenn ich das Programm compiliere (Make ALL in Programmers notepad) hat 
das .hex schon über 4 KByte, obwohl noch keine einzige Zeile "echter" 
Code im Quelltext enthalten ist. Muss ich da was am Makefile ändern, 
oder woher kommt diese vergleichsweise "riesige" Datenmenge. Oder muss 
das so? Danke schon mal. Hab das Makefile mal angehängt.

Grüsse,

T
Angehängte Dateien:
#503220
Lesenswert?

Zuallererst schaltest du mal den Optimizer ein.
( -O0 ersetzen durch -Os )

da dürfte dann schon mal einiges wegfallen.

Zum zweiten ist ein HEX File immer noch ein stinknormales
Textfile. D.h. die Dateigröße sagt nur bedingt etwas
darüber aus, wie gross denn nun das Programm im AVR
ist. Die tatsächliche Programmgröße liegt bei weit
unter der Hälfte des Hex Files.

Zum dritten: Ja. Natürlich hast du einen kleinen Overhead
druch den C-Compiler. Dein Programm erwartet ja von
der Laufzeitumgebung auch einen Service. Und die Laufzeit-
umgebung muss natürlich mit in den AVR gebrannt werden.
Die gute Nachricht ist: Der Overhead ist nicht wahnsinnig
gross und er ist konstant, sprich du zahlst nur einmal
dafür. Jegliche weitere Programmvergrößerungen gehen
dann auf dein Konto.

Aber schalt erst mal den Optimizer ein.
Gast #503233
Lesenswert?

Was dann? Einfach testweise
_________________________________
#include <avr/io.h>

int main (void){

}
_________________________________
Mit "echtem" Code, meine ich sinnvolle Anweisungen, die den Controller 
irgendwas tun lassen.

Danke KHB,

Thomas
Gast #503502
Lesenswert?

80 der 144 Bytes sind Interrupt-Vektoren. Der Rest löscht Daten die 
implizit mit 0 vorbesetzt sind, kopiert initialisierte Daten aus dem ROM 
und ruft evtl. vorhandene C++-Konstruktoren auf. Auch wenn ein Programm 
nichts davon enthält, der entsprechende Initialiserungscode existiert 
trotzdem.

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