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
wie viele bytes brauchst du denn noch damit sich das lohnt...??
Bei Spoerle ist für Ende 2005 der ATTiny85 angekündigt: http://www.spoerle.de/cda/semiconproductnews/0,5036,1735,00.html Peter
Ich beantworte Dir Deine Frage, wenn Du mir meine beantwortest... ;-)
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.
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
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.