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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.