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

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.