在我的ARM STM32项目(Eclipse和Gcc)中,命令arm-none-eabi-size
的输出是
text data bss dec hex filename
103784 232 75064 179080 2bb88 project.elf
为了检查代码大小,我尝试了不同的方法。我打开了output.map
,对其进行了分析,并对.text部分,.bss部分,.data部分等进行了调整。令人惊讶的是,我收到了不同的代码摘要
# Sections :
-----------------------
comment : 8323 bytes.
igot : 0 bytes.
debug_ranges : 17208 bytes.
text : 277702 bytes.
rodata : 6048 bytes.
eh_frame : 4 bytes.
fini : 12 bytes.
iplt : 0 bytes.
debug_frame : 76068 bytes.
group : 29528 bytes.
jcr : 4 bytes.
debug_line : 518087 bytes.
debug_macro : 4878468 bytes.
init : 12 bytes.
rel : 0 bytes.
fini_array : 8 bytes.
debug_str : 13228775 bytes.
debug_info : 334376 bytes.
preinit_array : 0 bytes.
bss : 143413 bytes.
debug_abbrev : 52355 bytes.
isr_vector : 912 bytes.
data : 451 bytes.
init_array : 8 bytes.
debug_aranges : 8248 bytes.
所以我的第三种方法是根据arm-none-eabi-eabi-nm -S --size-sort --radix=d project.elf
输出检查代码大小。我已经对每一个'' dD'' wW'部分和结果是第三次与arm-none-eabi-size
和output.map
不同。
谁相信?如何阅读这些文件(project.elf,output.map)以获得真正的代码大小,内存使用量等。也许还有另一种方法可以实现这一点。我的意思是例如分析二进制文件project.bin?
P.S。也许你认为我想要实现的目标。我的公司想要为项目添加新的库。我必须检查这些库有多大的二进制文件,并检查内存使用情况,静态和动态分配。我需要有可靠的代码段大小结果来检查它。