Sono un po 'confuso dai risultati che ottengo quando utilizzo la utility della mia toolchain (Yagarto e codesourcery). sta segnalando che sto usando 0 byte nella sezione di dati. vedi sottoPerché la dimensione di arm-none-eabi indica che la sezione .data è 0 anche se sto utilizzando la RAM inizializzata?
$ arm-none-eabi-size.exe rest-server-example.crazy-horse.elf
text data bss dec hex filename
79364 0 34288 113652 1bbf4 rest-server-example.crazy-horse.elf
So che il mio codice usa e inizializzazione delle variabili RAM statiche per valori diversi da 0.
abbastanza interessante quando passo lo strumento formato direttamente alcuni dei file oggetto che sono sempre linkato vedo sezione .data stati segnalati
esempio:
text data bss dec hex filename
1648 0 20 1668 684 obj_crazy-horse/uip-nd6.o
200 12 2652 2864 b30 obj_crazy-horse/uip-packetqueue.o
12 0 0 12 c obj_crazy-horse/uip-split.o
1816 24 48 1888 760 obj_crazy-horse/usb-core.o
284 0 0 284 11c obj_crazy-horse/usb-interrupt.o
2064 20 188 2272 8e0 obj_crazy-horse/xmac.o
Perché il rapporto di file Elf 0 per la sezione .data quando i file oggetto che m ake sta riportando valori diversi da zero?
FYI Sto lavorando su software embedded per un AT91SAM7x256 Micro
edit:
aggiungendo CFLAGS e LDFLAGS
CFLAGS += -O -DRUN_AS_SYSTEM -DROM_RUN -ffunction-sections
LDFLAGS += -L $(CPU_DIRECTORY) -T $(LINKERSCRIPT) -nostartfiles -Wl,-Map,$(TARGET).map
Edit # 2: dalla discarica oggetto possiamo vedere chiaramente che la sezione .data ha i dati assegnati ma l'utilità di dimensione non la raccoglie per qualche motivo objdump link
Tutto quello che sto cercando è ottenere un uso esatto della mia RAM. Non sto cercando di capire se una delle mie variabili è stata ottimizzata.
Edit 3: maggiori informazioni da cui risulti che l'utilità taglia non vede qualcosa nella sezione .data
$ arm-none-eabi-size.exe -A -t -x rest-server-example.crazy-horse.elf
rest-server-example.crazy-horse.elf :
section size addr
.vectrom 0x34 0x100000
.text 0x10fc8 0x100038
.rodata 0x149c 0x111000
.ARM.extab 0x30 0x11249c
.ARM.exidx 0xe0 0x1124cc
.data 0x1028 0x200000
.bss 0x7bec 0x201028
.stack 0xa08 0x20f5f8
.ARM.attributes 0x32 0x0
.comment 0x11 0x0
.debug_aranges 0xc68 0x0
.debug_info 0x2b87e 0x0
.debug_abbrev 0x960b 0x0
.debug_line 0x9bcb 0x0
.debug_frame 0x4918 0x0
.debug_str 0x831d 0x0
.debug_loc 0x13fad 0x0
.debug_ranges 0x620 0x0
Total 0x7c4c5
Ho anche controllato il file di mappa e mostra i dati allocati nelle regioni .data della memoria – maguirre
La mia prima ipotesi sarebbe che le sezioni vengano ottimizzate. Stai compilando/linkando con '--gc-sections' e/o' --function-sections'? –
Ho modificato il post originale per maggiore visibilità ma sto usando --function-section. Tuttavia rimuoverlo non cambia nulla per me – maguirre