ESP32 测试(十一):ESP32 Wi-Fi、BLE 等示例的固件大小及优化 & 相关组件大小对比

一. 测试目的

经常会有开发者提出基于 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 bytes
       Flash 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   Total
                      libc.a        364      0      0      54820     3833   59017
             libfreertos.a       4140    776  12787          0     1762   19465
                libesp32.a       2126    106   6543       5118     3385   17278
                   libsoc.a        184      4   6732       1501     1940   10361
             libspi_flash.a        783    294   4878       1143     1380    8478
             libesp_common.a         16    204    559       1077     5345    7201
                   libvfs.a        308     48      0       5579      923    6858
                   libheap.a        305      4   3135        877      729    5050
                libdriver.a         80     20      0       3053      768    3921
                libnewlib.a        152    272    820        868       88    2200
                libefuse.a         16      4      0       1162      720    1902
    libbootloader_support.a          0      0   1020        503        0    1523
                   liblog.a          8    272    580         94      151    1105
          libesp_ringbuf.a          0      0    858          0      154    1012
             libapp_update.a          0      4    109        159      474     746
                   libhal.a          0      0    447          0       32     479
                   libmain.a          0      0      0        214      248     462
                libpthread.a          8     12      0        264        0     284
                libxtensa.a          0      0    213          0        0     213
                   libgcc.a          0      0      0          0      160     160
                      (exe)          0      0      3          3       12      18
                   libcxx.a          0      0      0         11        0      11
                   libjson.a          0      0      0          0        0       0
             libmbedcrypto.a          0      0      0          0        0       0
       libwpa_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 bytes
       Flash 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   Total
                      libc.a        364      0      0      54820     3823   59007
             libfreertos.a       4140    776  11631          0     1618   18165
                libesp32.a       1945    106   5570       4540     2687   14848
                   libsoc.a        132      4   5881       1329     1677    9023
             libspi_flash.a        777    294   4539        964     1083    7657
             libesp_common.a         16    204    404        980     5081    6685
                   libvfs.a        308     48      0       4368      558    5282
                   libheap.a        298      4   2483        640      568    3993
                libdriver.a         80     20      0       2479      677    3256
                libnewlib.a        152    272    800        778       88    2090
                libefuse.a         16      4      0        917      670    1607
    libbootloader_support.a          0      0    854        470       16    1340
                   liblog.a          8    272    493         84      147    1004
          libesp_ringbuf.a          0      0    671          0      152     823
             libapp_update.a          0      4     88        131      471     694
                   libhal.a          0      0    447          0       32     479
                   libmain.a          0      0      0        202      223     425
                libpthread.a          8     12      0        246        0     266
                libxtensa.a          0      0    173          0        0     173
                   libgcc.a          0      0      0          0      160     160
                      (exe)          0      0      3          3       12      18
                   libcxx.a          0      0      0         11        0      11
                   libjson.a          0      0      0          0        0       0
             libmbedcrypto.a          0      0      0          0        0       0
       libwpa_supplicant.a          0      0      0          0        0       0
    

4.2. station 示例

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

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

    663K  wifi_station.bin
    

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值