Forum: Compiler & IDEs Startup Code ohne Interruptvektoren


von Harry (Gast)


Lesenswert?

Moin,

ich arbeite mit dem ATtiny13, und der ist randvoll. Ich möchte ein paar
Bytes sparen, indem ich mir die verschiedenen Interruptvektoren
herausnehme.

Hier im Forum habe ich gefunden, dass ich eine crttn13.o ändern müsste.
Nur habe ich keinen Quelltext dazu in meinem WINAVR Verzeichnis
gefunden. Und die .o Datei ist mit einem Texteditor nicht lesbar.

Ebenso ist mir noch nicht klar, an welcher Stelle die Datei vom Linker
eingebunden wird. Das Studium des Make- und der Linkfiles haben mich
noch nicht schlau gemacht.

Meine Fragen:
Wo finde ich den Quelltext zur crttn13.o?
Wo muss ich etwas ändern, wenn ich die Datei gar nicht einbinden
möchte.

Vielen Dank schon jetzt
Harry

von Sebastian (Gast)


Lesenswert?

wie viele bytes brauchst du denn noch damit sich das lohnt...??

von peter dannegger (Gast)


Lesenswert?

Bei Spoerle ist für Ende 2005 der ATTiny85 angekündigt:

http://www.spoerle.de/cda/semiconproductnews/0,5036,1735,00.html


Peter

von Harry (Gast)


Lesenswert?

Ich beantworte Dir Deine Frage, wenn Du mir meine beantwortest... ;-)

von Jörg Wunsch (Gast)


Lesenswert?

Die Datei wird aus gcrt1.S compiliert.  Allerdings brauchst du dafür
schon eine komplette build-Umgebung für die gesamte avr-libc, damit du
das gebacken bekommst.  Ist keine schwarze Magie, aber ist auch nicht
mit dreimal Mausklick getan.

Mit einem alternativen Linkerscript könntest du die section .vectors
ganz ausblenden, allerdings musst du dich dann irgendwie um eine
Alternative für den reset-Vektor kümmern -- den brauchst du auf alle
Fälle.

Du würdest 18 Byte sparen können, bist du dir ganz sicher, dass du
wirklich alle anderen Optimierungsmöglichkeiten ausgereizt hast?  Eine
derartige non-standard-Lösung würde ich persönlich nicht bevorzugen,
da sie aus Sicht der Softwarewartung ein Albtraum ist.

von Harry (Gast)


Lesenswert?

Vielen Dank für die Informationen. Als ich gestern im Forum ein wenig
gestöbert hatte, klang es so, als ob die Sache nicht besonders
schwierig ist. So wie sich die Sache jetzt darstellt, stehen Aufwand
und Ergebnis in keinem Verhältnis zueinander.

Meine Software läuft schon gut, ich hätte nur noch gern ein paar Bytes,
um sie etwas robuster zu gestalten. Zum Beispiel das Erkennen der
Resetquelle, Schalten die Diagnose LED usw.

Na ja, und was die Optimierung angeht: alle globalen Variablen sind in
Registern gehalten, ich habe alle Optimierungsstufen des Compilers
ausprobiert, der Code ist einfach geschrieben, damit der Compiler ihn
gut versteht und optimieren kann, ich probiere verschiedene Lösungen
usw.

Also lebe ich erstmal damit, wie es ist und warte geduldig auf die
ATtiny 25/45/85.

Viele Grüsse
Harry

von Malte (Gast)


Lesenswert?

Also wenn ich
http://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/AVR-Options.html#AVR-Options
richtig verstehe würde -mno-interrupts dafür sorgen dass keine
Interrupt Tabelle generiert wird.

von A.K. (Gast)


Lesenswert?

> würde -mno-interrupts dafür sorgen dass keine
> Interrupt Tabelle generiert wird.

Soweit ich das überblicke werden lediglich die CLI/SEI-Klammern um
stack pointer updates weggelassen. Und ist beim Tiny13 mit -mtiny-stack
völlig funktionslos.

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.