Forum: Mikrocontroller und Digitale Elektronik Interruptvektoren


von Martin (Gast)


Lesenswert?

Ist es möglich die Generierung durch den GCC von Interruptvektoren zu 
unterbinden, um eine paar Bytes an Platz zu sparen?

von Stefan E. (sternst)


Lesenswert?

Zwei Möglichkeiten:

1) Modifiziertes Linkerscript verwenden.

2) Option -nostartfiles für den Linker.
Aber Vorsicht, dies entfernt noch mehr: Nullen von R1, Initialisierung 
des Stackpointers und Initialisierung der globalen Variablen ungleich 
Null (*). Das musst du dann ggf. selbst mit eigenem Code in einer 
.init-Section erledigen.

(*) Und diese Liste erhebt keinen Anspruch auf Vollständigkeit. Möglich, 
dass es da noch mehr gibt, an das ich gerade nicht denke.

von Martin (Gast)


Lesenswert?

Vielen Dank für deinen Tipp, das Linkerscript werde ich mir ansehen. 
Interessant ist, daß ich bei der Initialisierung von Variablen eventuell 
auch noch etwas sparen kann.

Viele Grüße

Martin

von Falk B. (falk)


Lesenswert?

@  Martin (Gast)

>Ist es möglich die Generierung durch den GCC von Interruptvektoren zu
>unterbinden, um eine paar Bytes an Platz zu sparen?

Solche Tricks würde ich lassen. Bringt sehr wenig, kostet sehr viel. Die 
paar Bytes kann man leichter sparen, indem man sienen Code noch etwas 
aufräumt oder optimiert. Also viele Funktionsaufrufe, möglichst viele 
Funktionen mehrfach verwenden, Schleifen statt inlining etc. Hab ich mal 
in einem Projekt mit AVR 8515 gemacht, 4Bytes waren dann noch frei ;-)

MfG
Falk

von Martin (Gast)


Lesenswert?

Es siehr so aus, daß es nicht möglich ist die Generierung der Vektoren 
am Anfang eines Files zu unterdrücken.

Wo kann man dies einstelle? Leider gibt es beim GCC kein Startupfile wie 
beim KEIL-Compiler. wo man z. B. auch diverse Adressen einstellen kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.