Jag tänkte knåpa ihop ett litet "Hello world"-program till en ATtiny2313 och en gammal LCD från en Ericsson GA628 som hamnat under släggan. Eftersom jag inte är så säker på hur LCDn fungerar tänkte jag använda beprövad kod så långt som möjligt och då tog jag till i2c-bit-bangar-varianten från avrlib för att utesluta kodfel i protokollet.
Efter det obligatoriska nybörjarstrulet med Makefilen (länge sen sist) fick jag hela härligheten att kompilera. Hexfilen blev mastiga 9 k! Ingen risk att det går att klämma in i min tiny ens med skohorn. Så nu undrar jag om det helt enkelt är så att jag måste gå igenom hela trädet med inkluderade filer och kommentera bort alla onödiga definitioner? Eller finns det något annat smart sätt att utesluta all oanvänd kodmassa?
/Micke
LCD-program med avrlib - storleken HAR betydelse!
Avrlib är inte så optimerat, man kan spara 160byte genom att byta ut delay rutinerna i i2csw.c mot:
Nu är det här ingen super optimering... man skulle säkert kunna spara 100byte till genom ytligare optimeringar bara på delay rutinen.
Vilken Optimerar använder du på gcc? (om du använder gcc)
Jag skulle rekommendera att du använder -Os, Halverar storleken på den generade koden som kompilatorn ger ut jämfört med -O0 ^^
Anledningen till jag fundera är att i2csw.c vid kompilering blir ca 600byte...
Att ange Hex- filens storlek är lite miss visande (inte helt), hex filens storlek kan multipliceras med 0.372.
Det är bättre att använda ett skript som visar storleken på "programet" den visar även hur mycket ram som har används oxå ^^
Om du använder AVRStudio så kör skriptet automatiskt när man kompilerar ^^
Kod: Markera allt
#define QDEL asm volatile("rjmp .+0"); asm volatile("rjmp .+0"); asm volatile("nop");
#define HDEL asm volatile("rjmp .+0"); asm volatile("rjmp .+0"); asm volatile("rjmp .+0"); asm volatile("rjmp .+0"); asm volatile("rjmp .+0");
Vilken Optimerar använder du på gcc? (om du använder gcc)
Jag skulle rekommendera att du använder -Os, Halverar storleken på den generade koden som kompilatorn ger ut jämfört med -O0 ^^
Anledningen till jag fundera är att i2csw.c vid kompilering blir ca 600byte...
Att ange Hex- filens storlek är lite miss visande (inte helt), hex filens storlek kan multipliceras med 0.372.
Det är bättre att använda ett skript som visar storleken på "programet" den visar även hur mycket ram som har används oxå ^^
Om du använder AVRStudio så kör skriptet automatiskt när man kompilerar ^^