Chapter 4. API Guides
tcp_in.c.o
1282
10084
→
trc.o
1108
9831
→
tasks.c.o
1475
9781
→
ecp_curves.c.o
2325
9737
→
ecp.c.o
286
9214
→
ieee80211_hostap.o
585
9205
→
wdev.o
580
9009
→
tcp_out.c.o
2161
7847
→
tcp.c.o
1617
7806
→
ieee80211_input.o
973
7770
→
wpa.c.o
55
7539
→
[... additional lines removed
After the summary of total sizes, a table of "Per-file contributions to ELF file"is printed.
The columns are the same as shown above for idy.py size-components, but this time the granularity is the
contribution of each individual object file to the binary size.
For example, we can see that the file x509_crt_bundle.S.o contributed 64212 bytes to the total firmware size,
all as .rodata in flash. Therefore we can guess that this application is using the
and not using this feature would save at last this many bytes from the firmware size.
Some of the object files are linked from binary libraries and therefore you won't find a corresponding source file.
To locate which component a source file belongs to, it's generally possible to search in the ESP-IDF source tree or
look in the
Linker Map File
Comparing Two Binaries
to break down the exact differences in size.
This operation isn't part of idf.py, it's necessary to run the idf-size.py Python tool directly.
To do so, first locate the linker map file in the build directory. It will have the name PROJECTNAME.map. The
idf-size.py tool performs its analysis based on the output of the linker map file.
To compare with another binary, you will also need its corresponding .map file saved from the build directory.
For example, to compare two builds: one with the default
(-Og)"configuration and one with "Optimize for size (-Os)":
$ $IDF_PATH/tools/idf_size.py --diff build_Og/https_request.map build_Os/https_
request.map
→
<CURRENT> MAP file: build_Os/https_request.map
<REFERENCE> MAP file: build_Og/https_request.map
Difference is counted as <CURRENT> - <REFERENCE>, i.e. a positive number
that <CURRENT> is larger.
→
Total sizes of <CURRENT>:
<REFERENCE>
Difference
→
DRAM .data size:
14956
-440
→
DRAM .bss
size:
15808
-16
→
Espressif Systems
0
664
8
704
28
0
1
121
125
0
2
0
0
656
...]
for the full path.
If making some changes that affect binary size, it's possible to use an ESP-IDF tool
14516
bytes
15792
bytes
Submit Document Feedback
52
0
0
88
0
1726
0
7594
0
0
0
64
0
0
41
0
0
0
4499
0
0
0
26
0
0
0
0
0
0
0
ESP x509 Certificate Bundle
CONFIG_COMPILER_OPTIMIZATION
1447
(continued from previous page)
0
8750
␣
0
6245
␣
0
0
␣
0
7384
␣
0
8864
␣
0
8578
␣
0
3684
␣
0
5686
␣
0
6161
␣
0
6797
␣
0
6828
␣
feature
setting "Debug
means␣
␣
␣
(continues on next page)
Release v4.4
Need help?
Do you have a question about the ESP32-S2 and is the answer not in the manual?