저는 툴 체인 (Yagarto 및 codesourcery) 크기 유틸리티를 사용할 때 얻는 결과에 대해 다소 혼란 스럽습니다. 그것은 데이터 섹션에서 0 바이트를 사용하고 있다고보고하고 있습니다. 내가 직접 내가 볼 연결지고 오브젝트 파일의 일부를 크기 도구를 통과 할 때 내 코드를 사용하고 흥미롭게 0초기화 된 RAM을 사용하고 있는데도 arm-none-eabi-size가 .data 섹션을 0으로보고하는 이유는 무엇입니까?
이외의 값으로 정적 RAM 변수를 초기화 알고
$ 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
아래 참조
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
왜 오브젝트 파일은 데이터 섹션의 ELF 파일 보고서 0을 해요 것이라고 할 때 :
예를
데이터 섹션은보고되지 ake 그것은 0이 아닌 값을보고하고 있습니까? 참고로나는 AT91SAM7X256 마이크로
편집을위한 임베디드 소프트웨어 작업입니다 : 우리가 명확하게 볼 수있는 오브젝트 덤프에서 다음 CFLAGS와 LDFLAGS
CFLAGS += -O -DRUN_AS_SYSTEM -DROM_RUN -ffunction-sections
LDFLAGS += -L $(CPU_DIRECTORY) -T $(LINKERSCRIPT) -nostartfiles -Wl,-Map,$(TARGET).map
편집 # 2를 추가
.data 섹션에 데이터가 할당되었지만 크기 유틸리티가 어떤 이유로 든 데이터를 가져 오지 않습니다. objdump link
내가 찾고있는 것은 내 RAM의 정확한 사용법을 얻는 것입니다. 내 변수 중 하나가 최적화되었는지 여부를 파악하려고하지 않습니다.
편집 3 : 크기 유틸리티가 데이터 섹션에서 무언가를보고 않음을 보여주는 자세한 내용
$ 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
지도 파일도 확인했으며 메모리의 .data 영역에 할당 된 데이터를 표시합니다. – maguirre
내 첫 번째 추측은 섹션이 최적화되고 있다는 것입니다. '--gc-sections' 및/또는'--function-sections'을 사용하여 컴파일하거나 링크하고 있습니까? –
나는 더 많은 시야를 위해 원래의 포스트를 편집했지만 --function-sections을 사용하고 있습니다. 그러나 그것을 제거해도 아무 것도 변하지 않습니다 – maguirre