ESP32 Wi-Fi、BLE 等示例的固件大小及优化 相关组件大小对比

news/2024/11/25 15:45:58/

一. 测试目的

经常会有开发者提出基于 ESP32 Wi-Fi、BLE 等示例的固件大小及优化 & 相关组件大小对比,本文将测试针对相关示例进行修改测试。


二. 测试环境

为了保证测试结果的一致性,采用以下测试环境:

  • esp-idf
    编写本文时,使用的 esp-idf release 版本对应的 commit 为 7d0f1536e。可通过以下命令确认:

    git log --oneline -1
    

    结果为:

    7d0f1536e (HEAD -> release/v4.2, origin/release/v4.2) Merge branch 'bugfix/fix_adc_init_code_setting_for_esp32s2' into 'master'
    
  • toolchain 版本
    gcc version 8.2.0 (crosstool-NG esp-2020r1) ,可通过以下命令确认:

    xtensa-esp32-elf-gcc -v
    

    结果为(log 过长,只需要关注最后的这部分。如下):

    Thread model: posix
    gcc version 8.2.0 (crosstool-NG esp-2020r1) 
    
  • 测试主机
    Linux 环境,Ubuntu 18.04 LTS,可选用其他平台。

  • 开发板
    ESP32-WROOM-32D 开发板,可选用其他基于 ESP32 的开发板。

  • 测试示例
    esp-idf/examples/get-started/hello_world 示例
    esp-idf/examples/wifi/getting_started/station 示例
    esp-idf/examples/protocols/https_mbedtls 示例
    esp-idf/examples/bluetooth/bluedroid/ble/blufi 示例
    esp-idf/examples/bluetooth/nimble/bleprph 示例


三. 测试过程

在正常编译烧录示例的基础上可使用 idf.py menuconfig 来配置优化固件大小,具体如下:

  1. 开启尺寸优化

    idf.py menuconfig 中选择 Compiler option -> Optimize level -> Optimize for size(默认为 Debug)

  2. 降低 log 打印等级

    idf.py menuconfig 中选择 Component config -> Log output -> Default log verbosity -> Error(默认为 Info)

如何使用 esp-idf 创建与编译示例请查看 ESP-IDF 编程指南。

注:在工程下的终端输入 idf.py size-components 查看 component size


四. 测试结果

4.1. hello_world 示例

此部分为编译烧录 hello_world 示例后的 component size 以及 APP Bin 的大小。以下分为优化固件大小前后两部分。

  1. 优化固件大小前
    APP Bin 大小为:

    144K  hello-world.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:    8552 bytes
    DRAM .bss  size:    2048 bytes
    Used static DRAM:   10600 bytes ( 170136 available, 5.9% used)
    Used static IRAM:   39747 bytes (  91325 available, 30.3% used)Flash code:   76803 bytesFlash rodata:   22056 bytes
    Total image size:~ 147158 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibc.a        364      0      0      54820     3833   59017libfreertos.a       4140    776  12787          0     1762   19465libesp32.a       2126    106   6543       5118     3385   17278libsoc.a        184      4   6732       1501     1940   10361libspi_flash.a        783    294   4878       1143     1380    8478libesp_common.a         16    204    559       1077     5345    7201libvfs.a        308     48      0       5579      923    6858libheap.a        305      4   3135        877      729    5050libdriver.a         80     20      0       3053      768    3921libnewlib.a        152    272    820        868       88    2200libefuse.a         16      4      0       1162      720    1902
    libbootloader_support.a          0      0   1020        503        0    1523liblog.a          8    272    580         94      151    1105libesp_ringbuf.a          0      0    858          0      154    1012libapp_update.a          0      4    109        159      474     746libhal.a          0      0    447          0       32     479libmain.a          0      0      0        214      248     462libpthread.a          8     12      0        264        0     284libxtensa.a          0      0    213          0        0     213libgcc.a          0      0      0          0      160     160(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libjson.a          0      0      0          0        0       0libmbedcrypto.a          0      0      0          0        0       0libwpa_supplicant.a          0      0      0          0        0       0
    
  2. 优化固件大小后
    APP Bin 大小为:

    136K  hello-world.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:    8264 bytes
    DRAM .bss  size:    2040 bytes
    Used static DRAM:   10304 bytes ( 170432 available, 5.7% used)
    Used static IRAM:   35035 bytes (  96037 available, 26.7% used)Flash code:   73287 bytesFlash rodata:   19436 bytes
    Total image size:~ 136022 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibc.a        364      0      0      54820     3823   59007libfreertos.a       4140    776  11631          0     1618   18165libesp32.a       1945    106   5570       4540     2687   14848libsoc.a        132      4   5881       1329     1677    9023libspi_flash.a        777    294   4539        964     1083    7657libesp_common.a         16    204    404        980     5081    6685libvfs.a        308     48      0       4368      558    5282libheap.a        298      4   2483        640      568    3993libdriver.a         80     20      0       2479      677    3256libnewlib.a        152    272    800        778       88    2090libefuse.a         16      4      0        917      670    1607
    libbootloader_support.a          0      0    854        470       16    1340liblog.a          8    272    493         84      147    1004libesp_ringbuf.a          0      0    671          0      152     823libapp_update.a          0      4     88        131      471     694libhal.a          0      0    447          0       32     479libmain.a          0      0      0        202      223     425libpthread.a          8     12      0        246        0     266libxtensa.a          0      0    173          0        0     173libgcc.a          0      0      0          0      160     160(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libjson.a          0      0      0          0        0       0libmbedcrypto.a          0      0      0          0        0       0libwpa_supplicant.a          0      0      0          0        0       0
    

4.2. station 示例

此部分为编译烧录 station 示例后的 component size 以及 APP Bin 的大小。以下分为优化固件大小前后两部分。

  1. 优化固件大小前
    APP Bin 大小为:

    663K  wifi_station.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   14488 bytes
    DRAM .bss  size:   22752 bytes
    Used static DRAM:   37240 bytes ( 143496 available, 20.6% used)
    Used static IRAM:   88304 bytes (  42768 available, 67.4% used)Flash code:  478527 bytesFlash rodata:   96696 bytes
    Total image size:~ 678015 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118278    23493  164300liblwip.a         21   3990      0      84682    19072  107765libpp.a       1317   5379  23949      38431     5100   74176libc.a        364      0      0      55303     3833   59500libwpa_supplicant.a          8    796      0      42349     7696   50849libmbedcrypto.a         64     29     30      43986     4207   48316libphy.a       1604    929   6491      30366        0   39390libfreertos.a       4140    776  14440          0     2005   21361libesp32.a       2126    114   7017       5237     3662   18156libnvs_flash.a          0     24      0      13321     3033   16378libsoc.a        184      4   6736       1509     1943   10376libspi_flash.a        783    294   6179       1272     1424    9952libesp_common.a         16    210   1088       1968     6165    9447libesp_wifi.a        400     80    618       4590     2776    8464libvfs.a        308     48      0       5849     1044    7249libesp_netif.a         12     25      0       4788     2200    7025libgcc.a          4     12    104       5387      872    6379libheap.a        305      4   3234        877      729    5149libesp_event.a          0      4      0       2949     1171    4124libdriver.a         80     20      0       3157      768    4025libstdc++.a          8     20      0       2590     1082    3700libcoexist.a       1278     28      0       2227        0    3533libmain.a          0      8      0       1058     1168    2234libnewlib.a        152    272    828        868       88    2208libefuse.a         36      4      0       1068      740    1848libpthread.a         16     12    243        771      509    1551
    libbootloader_support.a          0      0   1016        503        0    1519liblog.a          8    272    628        438      169    1515libcore.a          0     29      0        805      302    1136libesp_ringbuf.a          0      0    858          0      152    1010libapp_update.a          0      4    109        159      474     746librtc.a          0      0    480          0        0     480libhal.a          0      0    447          0       32     479libxtensa.a          0      0    213          0        0     213libtcpip_adapter.a          0     17      0        188        0     205(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    
  2. 优化固件大小后
    APP Bin 大小为:

    618K  wifi_station.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   14200 bytes
    DRAM .bss  size:   22736 bytes
    Used static DRAM:   36936 bytes ( 143800 available, 20.4% used)
    Used static IRAM:   82895 bytes (  48177 available, 63.2% used)Flash code:  445143 bytesFlash rodata:   89740 bytes
    Total image size:~ 631978 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118246    23521  164296liblwip.a         21   3990      0      69148    17784   90943libpp.a       1317   5379  23949      38447     5100   74192libc.a        364      0      0      55299     3827   59490libwpa_supplicant.a          8    796      0      37524     7152   45480libmbedcrypto.a         64     29     30      39762     4196   44081libphy.a       1604    929   6491      30370        0   39394libfreertos.a       4140    776  13111          0     1861   19888libesp32.a       1945    114   5993       4651     2947   15650libnvs_flash.a          0     24      0      10925     3131   14080libsoc.a        132      4   5881       1329     1677    9023libspi_flash.a        777    294   5584       1070     1124    8849libesp_common.a         16    210    863       1729     5706    8524libesp_wifi.a        400     80    527       3822     2117    6946libgcc.a          4     12    104       5387      872    6379libesp_netif.a         12     25      0       3911     2014    5962libvfs.a        308     48      0       4564      673    5593libheap.a        298      4   2531        640      568    4041libstdc++.a          8     20      0       2590     1082    3700libesp_event.a          0      4      0       2631     1028    3663libcoexist.a       1278     28      0       2227        0    3533libdriver.a         80     20      0       2571      677    3348libnewlib.a        152    272    808        778       88    2098libmain.a          0      8      0        808      787    1603libefuse.a         36      4      0        830      683    1553libpthread.a         16     12    228        663      504    1423liblog.a          8    272    537        374      165    1356
    libbootloader_support.a          0      0    850        470       16    1336libcore.a          0     29      0        805      302    1136libesp_ringbuf.a          0      0    671          0      152     823libapp_update.a          0      4     88        131      471     694librtc.a          0      0    480          0        0     480libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        200        0     217libxtensa.a          0      0    173          0        0     173(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    

4.3. https_mbedtls 示例

此部分为编译烧录 https_mbedtls 示例后的 component size 以及 APP Bin 的大小。以下分为优化固件大小前后两部分。

  1. 优化固件大小前
    APP Bin 大小为:

    789K  https-mbedtls.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   15364 bytes
    DRAM .bss  size:   23152 bytes
    Used static DRAM:   38516 bytes (  86064 available, 30.9% used)
    Used static IRAM:   93422 bytes (  37650 available, 71.3% used)Flash code:  570271 bytesFlash rodata:  128604 bytes
    Total image size:~ 807661 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118318    23476  164323liblwip.a         21   3992      0      94867    20360  119240libmbedcrypto.a         64     81     30      77217    21661   99053libpp.a       1317   5379  23949      38399     5100   74144libc.a        364      0      0      55739     3833   59936libwpa_supplicant.a          8    796      0      42074     7696   50574libmbedtls.a         60    320      0      35343     7453   43176libphy.a       1604    929   6483      30354        0   39370libfreertos.a       4140    776  14480          0     2002   21398libesp32.a       2126    114   7041       5257     3662   18200libnvs_flash.a          0     24      0      13326     3033   16383libsoc.a        184      4   6736       1509     1940   10373libcoexist.a       1981     28   3728       3971      303   10011libspi_flash.a        783    294   6179       1179     1380    9815libesp_common.a         16    210   1088       1991     6165    9470libesp_wifi.a        484     80    671       4852     2682    8769libmbedx509.a          0      0      0       7117     1406    8523libesp_netif.a         12     25      0       5215     2268    7520libvfs.a        308     48      0       5915     1041    7312libgcc.a          4     12    104       5407      872    6399libmain.a          0      4      0       1650     3591    5245libheap.a        305      4   3234        897      729    5169libesp_event.a          0      4      0       2960     1163    4127libdriver.a         80     20      0       3213      768    4081libstdc++.a          8     20      0       2618     1082    3728
    libprotocol_examples_com          0     36      0       1555     1629    3220libnewlib.a        152    272    828        868       88    2208libefuse.a         36      4      0       1108      740    1888librtc.a          0      4   1697          0        0    1701libpthread.a         16     12    243        783      509    1563liblog.a          8    272    628        438      169    1515
    libbootloader_support.a          0      0   1016        495        0    1511libcore.a          0     29      0        801      302    1132libesp_ringbuf.a          0      0    877          0      152    1029libapp_update.a          0      4    109        164      474     751libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        196        0     213libxtensa.a          0      0    213          0        0     213(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    
  2. 优化固件大小后
    APP Bin 大小为:

    730K  https-mbedtls.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   15060 bytes
    DRAM .bss  size:   23128 bytes
    Used static DRAM:   38188 bytes (  86392 available, 30.7% used)
    Used static IRAM:   88046 bytes (  43026 available, 67.2% used)Flash code:  524307 bytesFlash rodata:  118996 bytes
    Total image size:~ 746409 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118310    23512  164351libmbedcrypto.a         64     81     30      70202    31164  101541liblwip.a         21   3992      0      77269    18759  100041libpp.a       1317   5379  23949      38395     5100   74140libc.a        364      0      0      55907     3823   60094libwpa_supplicant.a          8    796      0      37372     7152   45328libphy.a       1604    929   6483      30358        0   39374libmbedtls.a         60    320      0      29950     7123   37453libfreertos.a       4140    776  13162          0     1861   19939libesp32.a       1945    114   6021       4659     2959   15698libnvs_flash.a          0     24      0      10896     3131   14051libcoexist.a       1981     28   3728       3971      303   10011libsoc.a        132      4   5881       1329     1677    9023libspi_flash.a        777    294   5584        996     1080    8731libesp_common.a         16    210    863       1736     5706    8531libmbedx509.a          0      0      0       5990     1310    7300libesp_wifi.a        484     80    580       4026     2015    7185libgcc.a          4     12    104       5403      872    6395libesp_netif.a         12     25      0       4099     2082    6218libvfs.a        308     48      0       4560      673    5589libheap.a        298      4   2531        640      568    4041libstdc++.a          8     20      0       2594     1082    3704libmain.a          0      0      0       1072     2616    3688libesp_event.a          0      4      0       2631     1022    3657libdriver.a         80     20      0       2639      677    3416
    libprotocol_examples_com          0     32      0       1100     1195    2327libnewlib.a        152    272    808        778       88    2098librtc.a          0      4   1701          0        0    1705libefuse.a         36      4      0        842      683    1565libpthread.a         16     12    228        663      504    1423liblog.a          8    272    537        382      163    1362
    libbootloader_support.a          0      0    850        470       16    1336libcore.a          0     29      0        801      302    1132libesp_ringbuf.a          0      0    707          0      152     859libapp_update.a          0      4     88        138      471     701libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        200        0     217libxtensa.a          0      0    173          0        0     173(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    

4.4. blufi + https_mbedtls 示例

此部分先合并 blufihttps_mbedtls 示例,然后编译烧录后查看 component size 以及 APP Bin 的大小。以下分为优化固件大小前后两部分。

  1. 优化固件大小前
    APP Bin 大小为:

    1.1M  blufi_demo.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   16316 bytes
    DRAM .bss  size:   43944 bytes
    Used static DRAM:   60260 bytes (  64320 available, 48.4% used)
    Used static IRAM:  115382 bytes (  15690 available, 88.0% used)Flash code:  798883 bytesFlash rodata:  183852 bytes
    Total image size:~1114433 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibbt.a        150  18062    438     158115    47797  224562libnet80211.a        975   9187  12368     119909    23607  166046liblwip.a         21   3996      0      96432    20360  120809libmbedcrypto.a         64     81     30      77194    21661   99030libbtdm_app.a        337   2381  20811      59042     4136   86707libpp.a       1317   5379  23941      38411     5100   74148libc.a        364      0      0      55939     3831   60134libwpa_supplicant.a          8    796      0      42484     7696   50984libmbedtls.a         60    320      0      35371     7453   43204libphy.a       1604    930   6483      30507        0   39524libfreertos.a       4140    776  14440          0     2002   21358libesp32.a       2126    114   7041       5261     3662   18204libnvs_flash.a          0     24      0      13551     3033   16608libmain.a        128    315      0       5223     6194   11860libcoexist.a       2280     28   3842       4642      325   11117libsoc.a        184      4   6736       1501     1946   10371libspi_flash.a        783    294   6179       1279     1424    9959libesp_common.a         16    210   1088       1991     6165    9470libesp_wifi.a        484     80    719       5134     2766    9183libmbedx509.a          0      0      0       7133     1406    8539libesp_netif.a         12     25      0       5219     2268    7524libvfs.a        308     48      0       5915     1047    7318libgcc.a          4     12    104       5403      872    6395libheap.a        313      4   3234       1227      729    5507libesp_event.a          0      4      0       2960     1163    4127libdriver.a         80     20      0       3213      768    4081libstdc++.a          8     20      0       2622     1082    3732
    libprotocol_examples_com          0     36      0       1559     1553    3148librtc.a          0      4   2235          0        0    2239libnewlib.a        152    272    828        868       88    2208liblog.a          8    272    628        764      263    1935libefuse.a         36      4      0       1120      740    1900libpthread.a         16     12    243        783      509    1563
    libbootloader_support.a          0      0   1016        495        0    1511libcore.a          0     29      0        801      302    1132libesp_ringbuf.a          0      0    858          0      152    1010libapp_update.a          0      4    109        164      474     751libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        196        0     213libxtensa.a          0      0    213          0        0     213libmesh.a          1      1      0         43        0      45(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0
    
  2. 优化固件大小后
    APP Bin 大小为:

    996K  blufi_demo.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   16028 bytes
    DRAM .bss  size:   43928 bytes
    Used static DRAM:   59956 bytes (  64624 available, 48.1% used)
    Used static IRAM:  109910 bytes (  21162 available, 83.9% used)Flash code:  726731 bytesFlash rodata:  166308 bytes
    Total image size:~1018977 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibbt.a        150  18062    364     133665    42179  194420libnet80211.a        975   9187  12368     119957    23643  166130libmbedcrypto.a         64     81     30      70448    31164  101787liblwip.a         21   3996      0      78496    18759  101272libbtdm_app.a        337   2381  20811      59062     4136   86727libpp.a       1317   5379  23941      38443     5100   74180libc.a        364      0      0      55715     3806   59885libwpa_supplicant.a          8    796      0      37990     7147   45941libphy.a       1604    930   6483      30519        0   39536libmbedtls.a         60    320      0      30010     7123   37513libfreertos.a       4140    776  13111          0     1861   19888libesp32.a       1945    114   6021       4679     2959   15718libnvs_flash.a          0     24      0      11152     3131   14307libcoexist.a       2280     28   3842       4642      325   11117libsoc.a        132      4   5881       1325     1677    9019libspi_flash.a        777    294   5584       1077     1124    8856libesp_common.a         16    210    863       1748     5706    8543libmain.a        128    311      0       3622     4044    8105libesp_wifi.a        484     80    628       4230     2117    7539libmbedx509.a          0      0      0       5930     1310    7240libgcc.a          4     12    104       5387      872    6379libesp_netif.a         12     25      0       4155     2082    6274libvfs.a        308     48      0       4612      673    5641libheap.a        306      4   2531        920      568    4329libstdc++.a          8     20      0       2614     1082    3724libesp_event.a          0      4      0       2643     1022    3669libdriver.a         80     20      0       2639      677    3416librtc.a          0      4   2239          0        0    2243
    libprotocol_examples_com          0     32      0       1068     1125    2225libnewlib.a        152    272    808        778       88    2098libefuse.a         36      4      0        845      683    1568libpthread.a         16     12    228        671      504    1431liblog.a          8    272    537        374      163    1354
    libbootloader_support.a          0      0    850        470       16    1336libcore.a          0     29      0        801      302    1132libesp_ringbuf.a          0      0    671          0      152     823libapp_update.a          0      4     88        138      471     701libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        208        0     225libxtensa.a          0      0    173          0        0     173libmesh.a          1      1      0         43        0      45(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0
    

4.5. bleprph + https_mbedtls 示例

此部分先合并 bleprphhttps_mbedtls 示例,然后编译烧录后查看 component size 以及 APP Bin 的大小。以下分为优化固件大小前后两部分。

  1. 优化固件大小前
    APP Bin 大小为:

    1007K  bleprph.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   16200 bytes
    DRAM .bss  size:   40864 bytes
    Used static DRAM:   57064 bytes (  67516 available, 45.8% used)
    Used static IRAM:  119022 bytes (  12050 available, 90.8% used)Flash code:  747275 bytesFlash rodata:  148112 bytes
    Total image size:~1030609 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118330    23476  164335liblwip.a         21   3996      0      96312    20360  120689libmbedcrypto.a         64     85     30      80490    21765  102434libbt.a        369  15230    438      72648    11570  100255libbtdm_app.a        337   2381  20811      59118     4136   86783libc.a        364      0      0      82006     4367   86737libpp.a       1317   5379  23941      38447     5100   74184libwpa_supplicant.a          8    796      0      42325     7760   50889libmbedtls.a         60    320      0      35705     7453   43538libphy.a       1604    930   6483      30519        0   39536libfreertos.a       4140    776  14680          0     2067   21663libesp32.a       2126    114   7041       5521     3680   18482libnvs_flash.a          0     24      0      13551     3033   16608libsoc.a        184      4   6736       1968     2164   11056libcoexist.a       2012     28   3842       4350      325   10557libmain.a         92     14      0       4529     5600   10235libdriver.a         80     21      0       8476     1403    9980libspi_flash.a        783    294   6179       1283     1424    9963libesp_common.a         16    210   1088       2012     6165    9491libesp_wifi.a        484     80    719       4980     2682    8945libmbedx509.a          0      0      0       7452     1406    8858libesp_netif.a         12     25      0       5219     2268    7524libvfs.a        308     48      0       5915     1044    7315libgcc.a          4     12    104       5387      872    6379libheap.a        313      4   3234       1227      729    5507libesp_ringbuf.a          0      0   4214          0      532    4746libesp_event.a          0      4      0       2960     1163    4127libstdc++.a          8     20      0       2614     1082    3724
    libprotocol_examples_com          0     36      0       1559     1629    3224librtc.a          0      4   2235          0        0    2239libnewlib.a        152    272    828        868       88    2208libefuse.a         36      4      0       1120      740    1900libconsole.a          0     24      0       1456      269    1749libpthread.a         16     12    243        783      509    1563liblog.a          8    272    628        442      169    1519
    libbootloader_support.a          0      0   1016        495        0    1511libcore.a          0     29      0        801      302    1132libapp_update.a          0      4    109        164      474     751libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        196        0     213libxtensa.a          0      0    213          0        0     213(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    
  2. 优化固件大小后
    APP Bin 大小为:

    932K  bleprph.bin
    

    component size 大小为:

    Total sizes:
    DRAM .data size:   15912 bytes
    DRAM .bss  size:   40832 bytes
    Used static DRAM:   56744 bytes (  67836 available, 45.5% used)
    Used static IRAM:  112718 bytes (  18354 available, 86.0% used)Flash code:  689015 bytesFlash rodata:  136356 bytes
    Total image size:~ 954001 bytes (.bin may be padded larger)
    Per-archive contributions to ELF file:Archive File DRAM .data & .bss   IRAM Flash code & rodata   Totallibnet80211.a        975   9186  12368     118298    23512  164339libmbedcrypto.a         64     85     30      73804    31308  105291liblwip.a         21   3996      0      78227    18759  101003libbt.a        369  15230    364      62707    11091   89761libbtdm_app.a        337   2381  20811      59174     4136   86839libc.a        364      0      0      82006     4351   86721libpp.a       1317   5379  23941      38459     5100   74196libwpa_supplicant.a          8    796      0      37694     7141   45639libphy.a       1604    930   6483      30527        0   39544libmbedtls.a         60    320      0      30235     7123   37738libfreertos.a       4140    776  13264          0     1903   20083libesp32.a       1945    114   6021       4931     2965   15976libnvs_flash.a          0     24      0      11152     3131   14307libcoexist.a       2012     28   3842       4350      325   10557libsoc.a        132      4   5881       1692     1713    9422libspi_flash.a        777    294   5584       1081     1124    8860libesp_common.a         16    210    863       1786     5706    8581libdriver.a         80     21      0       6885     1108    8094libmbedx509.a          0      0      0       6353     1310    7663libmain.a         92     10      0       3356     4086    7544libesp_wifi.a        484     80    628       4154     2015    7361libgcc.a          4     12    104       5391      872    6383libesp_netif.a         12     25      0       4155     2082    6274libvfs.a        308     48      0       4612      673    5641libheap.a        306      4   2531        920      568    4329libesp_ringbuf.a          0      0   3295          0      532    3827libstdc++.a          8     20      0       2614     1082    3724libesp_event.a          0      4      0       2639     1022    3665
    libprotocol_examples_com          0     32      0       1100     1195    2327librtc.a          0      4   2239          0        0    2243libnewlib.a        152    272    808        778       88    2098libconsole.a          0     24      0       1228      334    1586libefuse.a         36      4      0        845      683    1568libpthread.a         16     12    228        671      504    1431liblog.a          8    272    537        374      163    1354
    libbootloader_support.a          0      0    850        470       16    1336libcore.a          0     29      0        801      302    1132libapp_update.a          0      4     88        134      471     697libhal.a          0      0    447          0       32     479libtcpip_adapter.a          0     17      0        208        0     225libxtensa.a          0      0    173          0        0     173(exe)          0      0      3          3       12      18libcxx.a          0      0      0         11        0      11libesp_eth.a          0      0      0          0        0       0libjson.a          0      0      0          0        0       0libmesh.a          0      0      0          0        0       0
    

五. 总结

经过上述测试后,我们可以观察得到:

  • ESP32 只使用基本功能(如 hello_world 示例)时的 APP Bin 大小为 150 k 左右。
  • ESP32 使用基本功能 + Wi-Fi 功能(如 station 示例)时的 APP Bin 大小为 660 k 左右。
  • ESP32 使用基本功能 + Wi-Fi 进阶功能(如 https_mbedtls 示例)时的 APP Bin 大小为 790 k 左右。
  • ESP32 使用基本功能 + Wi-Fi 进阶功能 + BLE 功能(如 blufi + https_mbedtls 示例)时的 APP Bin 大小为 1.1 M 左右。
  • ESP32 使用基本功能 + Wi-Fi 进阶功能 + NIMBLE 功能(如 bleprph + https_mbedtls 示例)时的 APP Bin 大小为 1.0 M 左右。
  • 使用 三. 测试过程 里的固件尺寸优化能优化的尺寸大小与固件自身大小有关,如 hello_world 的 APP 固件在优化后只减少了 10 k 左右,而 blufi + https_mbedtls 的 APP 固件在优化后能减少 100 k 以上。

http://www.ppmy.cn/news/507306.html

相关文章

IEC61850简要介绍

简介 IEC61850标准是电力系统自动化领域唯一的全球通用标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明。此标准参考和吸收了已有的许多相关标准,其中主要有:IEC870-5-101远动通信协议标准; IEC870-5-103…

MQTT之https页面请求问题

网站开启了https,开始总会遇到各种问题,用户登入认证失败,视频请求失败,mqtt连接失败等问题。是不是很不爽,来看看,教你怎么解决这些问题。 1.网站开启https,mqtt连接失败 解决过程,…

HDU - 6165

题目链接:HDU - 6165 显然可以n次bfs,求连通性。但是时间卡得很紧。 这里我们可以 O(nm)的复杂度解决。 先缩点变成DAG,然后缩点的图上跑Top,如果某一时刻,一个点可以让两个及以上的点度为0,那么显然就无…

hdu6155

Subsequence Count 题目链接 ccpc网络赛1006 题意是给一个01字符串,然后有2种操作, 1、把l到r这个区间的字符翻转, 2、查询l到r这个区间有多少个不同的子序列,(注意是子序列,可不连续)&…

IEC61850

IEC 61850是关于变电站自动化系统结构和数据通信的国际标准,目的是使变电站内不同厂家的智能电子设备(IED)之间通过一种标准实现互操作和信息共享,取消多种协议转换环节和转换设备,使系统调试更加便捷,实现“一个世界、一种技术、…

【面经】重庆农商行金融科技面经

【面经】重庆农商行金融科技面经 在脉脉上看重庆农商行貌似钱多事少,好评比较多。 公司介绍 重庆农村商业银行股份有限公司(以下简称“重庆农商行”)前身为重庆市农村信用社,成立于1951年,至今已有70余年历史。2003年…

联发科mt6165芯片原理图mt6165芯片资料

mt6165是在40nm cmos中实现的td-scdma和2g双模rf收发器。闯客网rf收发器函数是完全集成的。这份文件描述了rf的性能目标。在整个产品中嵌入宏 关键特征 -成本低的双模射频解决方案(gge和td-scdma)。8(hspa))四频gge(gsm850/900/dcs/pcs)/三频tdd(b34/b39…

Pyqt5的QThead线程对象实现线程开始、暂停、恢复、结束

前言 最近学习Pyqt5,研究QThead线程对象,因网上这方面资料较少,钻研过后,将感悟理解记录如下。 声明:感悟理解建立在分析其他大佬的博客的基础上,喝水不忘挖井人,大佬们的博客如下&#xff1a…