www.mikrocontroller.net

Forum: Compiler & IDEs Größe von Programmteilen


Autor: floGzmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus zusammen

Ich habe bei den Peripheral Tests, eines Systems mit Xilinx MicroBlaze, 
herumgebastelt und nach meinen Wünschen verbogen. Über "Generate Linker 
Script" kann ich mir die Größe der diversen Data/Code Sections (.text, 
.data, .bss ...) ansehen. Jetzt möchte ich wissen welche Programmteile 
(welche Funktion oder welche Variable) wieviel in den jeweiligen 
Sections belegen. Zumal ich auch noch nicht so sicher weiss was er denn 
nun alles aus den .h files mit rein packt in das Programm.

Oder geht es nur rekursiv. Ich schreibe mir den Speicherbedarf vorher 
auf, kommentiere eine Funktion aus. Vergleiche den Speicherbedarf unter 
Generate Linker Script nachher.

Gruß Flo

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
floGzmo schrieb:
> Zumal ich auch noch nicht so sicher weiss was er denn
> nun alles aus den .h files mit rein packt in das Programm.

Aus .h-Files sollte eigentlich fast gar nichts im Programm landen, was 
Speicher verbraucht. So etwas hat da drin, bis auf wenige Ausnahmen, 
nichts zu suchen.

Die Info, die du suchst, steht üblicherweise in einem Map-File. Wie du 
das erzeugst, sollte die Doku zu deinem System verraten. Falls das ein 
gcc ist, lautet die option -Map.

Oliver

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nm --print-size --size-sort <name of your ELF file>

Das Kommando "nm" kann dabei auch noch irgendeinen Präfix haben in
deiner Toolchain.  Wenn dein Compiler beispielsweise "foo-gcc"
heißt, wird das zugehörige nm-Kommando "foo-nm" heißen.

Autor: floGzmo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antworten.

Die Entwicklungsumgebung bei Xilinx nennt sich SDK und basiert auf 
Eclipse und hat damit den gcc. Die Option -Map hab ich dabei nicht 
gefunden. Es ist zwar die Rede von "mb-gcc -Wl,-M ...
Signal the linker to produce a map file with
the -M option.", jedoch hab ich das nicht zum laufen gebracht.

Die Sache mit mb-nm --print-size... hat funktioniert. Dort konnte ich 
nun die Größen von Funktionen und Daten des .elf Files sehen.

Gibt es noch die Möglichkeit zu sehen in welche Section die jeweilige 
Funktion bzw. die Daten geschrieben werden?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
t, T - text (Programmtext)
d, D - initialisierte Daten
b, B - nichtinitialisierte Daten ("bss")

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.