为什么我在arm-none-eabi-size,output.map文件和arm-none-eabi-nm中的代码大小之间存在差异?

时间:2017-05-24 19:15:54

标签: c gcc embedded elf stm32

在我的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-sizeoutput.map不同。

谁相信?如何阅读这些文件(project.elf,output.map)以获得真正的代码大小,内存使用量等。也许还有另一种方法可以实现这一点。我的意思是例如分析二进制文件project.bin?

P.S。也许你认为我想要实现的目标。我的公司想要为项目添加新的库。我必须检查这些库有多大的二进制文件,并检查内存使用情况,静态和动态分配。我需要有可靠的代码段大小结果来检查它。

0 个答案:

没有答案