Startup Code ohne Interruptvektoren

Gast #181326
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
Gast #181330
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.
Gast #181331
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
Gast #181333
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.

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