Hallo, aus akt. Anlass habe ich nach einem Tool gesucht, welches mir aufzeigt wieviel Programmspeicher die einzelnen Funktionen meines Programms auf einem AVR MEGA 8 belegen. Ich wollte damit schauen wo ich noch etwas optimieren kann. Fazit - ich habe hier erst einmal nix gefunden, was mir hier hätte helfen können. Es gibt zwar ältere Beiträge zur Belegung im Gesamtspeicher, wie z.B. Beitrag "avr-gcc Speicherbelegung anzeigen lassen" aber anscheinend Nichts für einzelne Funktionen. Grundsätzlich sollte diese Information doch im MAP-File zu finden sein. Zumindest habe ich da so eine Tabelle gesehen: ..... .text 0x0000005e 0x15c main.o 0x0000005e init_ports 0x0000009c __vector_11 0x0000006c command_1 0x00000084 command_0 0x000000ea main 0x000001b2 stdout_usart .text 0x000001ba 0x6e AVR_USART.o 0x000001f4 avr_usart_putc 0x00000210 avr_usart_getc_wait 0x000001ba avr_usart_init_9600_8_1_N_Asyn 0x00000224 avr_usart_getc_isr 0x00000218 avr_usart_getc 0x000001fc avr_usart_puts ..... Nun zu meinen Fragen: Gibt es da wirklich kein Tool für - oder hab ich das einfach nicht gefunden? Wären das die richtigen Einträge für die Feststellung der Größe der Funktionen? Gruss, Gary
Zur Ermittlung der größe einzelner Funktionen gibt es im Win-AVR einige Kommandozeilen tools. Hier genaueres nachzulesen: http://www.rn-wissen.de/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc Das wichtige für dich wird die Funktion
1 | |
Das gibt dir die größe jeder einzelnen Funktion in dem angegebenen elf-File aus. Sieht dann Beispielsweise so aus
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
cool - danke erst einmal
@Albert Okay habs gefunden und auch gleich ausprobiert, allerdings verstehe ich noch nicht wie ich die Zahlen zu interpretieren habe. Aus deinem Beispiel heraus hätte ich vermutet: erste Zahl = Speicheradresse zweite Zahl = Größe in Byte Aber das haut bei meinem Beispiel nicht hin, ich sehe im Debugger ganz andere Adressen, wenn ich in das Disassebly umschalte - aus AVR-Studio. Wo liegt mein Fehler?
Sry für die späte Antwort. Also bei mir stimmt es überein. Hast du vl. ausversehen das .hex file angegeben statt dem elf File? Erste Spalte ist wie du dachtest die Adresse und die zweite die größe in Hex. Kannst du mal den Output von avr-nm hier reinposten und ein beispiel wo es nicht übereinstimmt aus dem AVR studio? P.S. Kopieren aus der Konsole geht über einen klick auf das Console-Symbol oben links, dann bearbeiten->markieren. Mit gedrückter Maustaste gwünschten Bereich markieren und über bearbeiten->kopieren in die Zwischenablage.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.