Gast
#1922025
Hallo Zusammen, ich habe hier auf dem Board in älteren Beiträgen gelesen, dass ich mit den binutils mir die Größe der Sections meines .elf files ausgeben kann. Weiter wurde beschrieben das sich der ROM Speicherverbrauch aus DATA+TEXT Section errechnet. Ich nehme einfach mal an das jedem klar ist das die Symbole etc. sowieso dazu gehören und es deshalb in den Beiträgen nicht expliziert erwähnt wurde. Nun gut... Laut dieser Kalkulation und laut meiner Ausgabe durch "size" (binutils) sollte mein Programm ca. 500 Kb groß sein. Das kommt auch hin, denn ich verwende sehr viele constante Tabellen sowie große Arrays/Structs die eine Menge Speicher schlucken. Die Text Section ist ca. 70 Kb groß, der Rest ist Data. Das passt. Sowie ich es verstehe sollte ich hierfür 500KB ROM/FLASH benötigen. Mein Startup code kopiert dann beim hochlaufen die data section ins RAM um. So jetzt die Preisfrage; Wenn ich mir mit den Binutils (objcopy -O binary ...) ein Binary erzeugen lasse ist dieses ca. 76Kb groß. Und eigentlich sollte das doch quasi ein "laufähiges Image" meines Programmes sein. Zummindest funktioniert alles wenn ich es mit einem Bootloader lade und VectorTable remappe... aber das ist jetzt erstmal egal. Ich frage mich jetzt nur was da los ist. Ich vermute jetzt einfach mal das die text Section 1:1 in dem Binary abgebildet ist die data section aber nicht. Also ein Array der Größe 100x32 Bit belegt nicht 100x32 Bit, sondern befindet sich im Binary nur als Information das ein Array der Größe 100x32 im Ram an Position xyzabc (legt der Linker fest) liegt. Ich hoffe einer kann meine Welt gerade rücken! Denn ich bin gerade etwas verwirrt. Ach und noch am Rande, wenn ich mir ein HEX file aus dem .elf erzeuge ist dieses 200KB groß. Ich will eigentlich nur wissen wieviel ROM/Flash ich auf meinem Target braucht, bzw. wieviel Platz ich noch habe... :)