ESP32c3 内存占用测试报告
SDK CONFIG DEFAULT
# CPU
CONFIG_PM_ENABLE=y
CONFIG_PM_DFS_INIT_AUTO=y
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
CONFIG_ESPNOW_LIGHT_SLEEP=y
# ESP
#CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
#CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
#CONFIG_COMPILER_OPTIMIZATION_PERF=y
CONFIG_FREERTOS_HZ=1000
# CSV
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_4mb_ota.csv"
# USER CONFIG
CONFIG_PRODUCT_NAME="jlcboard"
CONFIG_WLS_LVGL=n
CONFIG_WLS_ESP_NOW=n
# other
CONFIG_CAPTIVE_PORTAL_ENABLE_DHCP_OPTION_114=n
CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=10
CONFIG_BT_ENABLED=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n
APSTA WITHOUT BT
| 任务 | 计算 | 占用(B) | 占用(KiB) |
|---|---|---|---|
| wls_evt_task | 266420 − 255620 | 10800 B | 10.55 KiB |
| wls_poll_task | 255620 − 251180 | 4440 B | 4.34 KiB |
| ap_sta_netif_init_without_ap | 251180 − 203644 | 47536 B | 46.42 KiB |
| littlefs | 203644 − 201888 | 1756 B | 1.71 KiB |
| start_sta | 201888 − 196620 | 5268 B | 5.14 KiB |
| webserver | 196620 − 192876 | 3744 B | 3.66 KiB |
| tcp | 192876 − 187724 | 5152 B | 5.03 KiB |
APSTA WITH BT
| 阶段 | free_size(B) | 变化(B) | 占用(KiB) | 说明 |
|---|---|---|---|---|
| 初始启动 | 235088 | — | — | GPIO/init 后 |
| WiFi STA init 前 | 224288 | -10800 | 10.55 KiB | wls_evt_task |
| WiFi init 中 | 219848 | -4440 | 4.34 KiB | wls_poll_task |
esp_wifi_start() | 171852 | -47996 | 46.87 KiB | ap_sta_netif_init + WiFi driver |
| littlefs mount | 170024 | -1828 | 1.79 KiB | littlefs |
| AP + DHCP | 163528 | -6496 | 6.34 KiB | start_sta |
| HTTP Server | 154804 | -8724 | 8.52 KiB | webserver |
| TCP socket(502) | 149876 | -4928 | 4.81 KiB | tcp |
| BLE/NimBLE init | 90696 | -59180 | 57.79 KiB | BLE controller + host + GATT |
| 稳定后 | 95396 | +4700 | +4.59 KiB | 回收部分临时内存 |
APSTA WITH BT(优化BT占用)
| 阶段 | free(B) | 变化(B) | KiB |
|---|---|---|---|
| 初始 | 256340 | — | — |
| wls_evt_task | 245540 | -10800 | 10.55 |
| wls_poll_task | 241100 | -4440 | 4.34 |
| WiFi STA | 193104 | -47996 | 46.87 |
| littlefs | 191276 | -1828 | 1.79 |
| AP + DHCP | 184780 | -6496 | 6.34 |
| webserver | 176056 | -8724 | 8.52 |
| tcp socket | 171128 | -4928 | 4.81 |
| BLE init + NimBLE | 126016 | -45112 | 44.05 |
APSTA WITH BT(优化BT WIFI 占用)
| 阶段 | free(B) | 差值(B) | KiB |
|---|---|---|---|
| 初始 | 257844 | — | — |
| wls_evt_task | 247044 | -10800 | 10.55 |
| wls_poll_task | 242604 | -4440 | 4.34 |
| WiFi STA start | 201480 | -41124 | 40.16 |
| littlefs | 199652 | -1828 | 1.79 |
| AP + DHCP | 193196 | -6456 | 6.30 |
| webserver | 184620 | -8576 | 8.38 |
| tcp socket | 179732 | -4888 | 4.77 |
| BLE + NimBLE | 134628 | -45104 | 44.05 |
优化 TLS
优化 TLS 前
I (111119) wls_memory: get_free_size = 87292
I (111120) wls_memory: get_minimum_free_size = 38080
I (111124) wls_memory: get_largest_free_block = 36864
I (111129) wls_memory: ------------------------------
I (111135) mem_task: top 8 free blocks:
I (111140) mem_task: #1: 37036 B
I (111144) mem_task: #2: 25172 B
I (111148) mem_task: #3: 10148 B
I (111152) mem_task: #4: 7776 B
I (111156) mem_task: #5: 2216 B
I (111160) mem_task: #6: 1764 B
I (111164) mem_task: #7: 1092 B
I (111168) mem_task: #8: 688 B
TLS 动态分配 不常驻
I (136212) wls_memory: get_free_size = 92528
I (136212) wls_memory: get_minimum_free_size = 81360
I (136216) wls_memory: get_largest_free_block = 65536
I (136222) wls_memory: ------------------------------
I (136228) mem_task: top 8 free blocks:
I (136232) mem_task: #1: 69100 B
I (136237) mem_task: #2: 10148 B
I (136242) mem_task: #3: 7776 B
I (136246) mem_task: #4: 2864 B
I (136249) mem_task: #5: 1700 B
I (136254) mem_task: #6: 732 B
I (136256) mem_task: #7: 36 B
I (136260) mem_task: #8: 32 B
相同代码 ESP32s3 的占用情况,多了 50kb
但奇怪的是,ESP32s3 明明比 c3 多了 112kb sram
I (392276) wls_memory: get_free_size = 151032
I (392276) wls_memory: get_minimum_free_size = 137704
I (392280) wls_memory: get_largest_free_block = 88064
I (392286) wls_memory: ------------------------------
I (392292) mem_task: top 8 free blocks:
I (392296) mem_task: #1: 89172 B
I (392300) mem_task: #2: 32024 B
I (392305) mem_task: #3: 21564 B
I (392309) mem_task: #4: 7688 B
I (392313) mem_task: #5: 252 B
I (392317) mem_task: #6: 224 B
I (392320) mem_task: #7: 32 B
I (392324) mem_task: #8: 12 B
最终优化 SDKCONFIG
# CPU
CONFIG_PM_ENABLE=y
CONFIG_PM_DFS_INIT_AUTO=y
CONFIG_FREERTOS_USE_TICKLESS_IDLE=y
CONFIG_ESPNOW_LIGHT_SLEEP=y
# ESP
#CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
#CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
#CONFIG_COMPILER_OPTIMIZATION_PERF=y
CONFIG_FREERTOS_HZ=1000
# CSV
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_4mb_ota.csv"
# USER CONFIG
CONFIG_PRODUCT_NAME="jlcboard"
CONFIG_WLS_LVGL=n
CONFIG_WLS_ESP_NOW=n
# other
CONFIG_CAPTIVE_PORTAL_ENABLE_DHCP_OPTION_114=n
CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=10
# BT config
CONFIG_BT_ENABLED=y
CONFIG_BT_NIMBLE_ENABLED=y
CONFIG_BT_BLE_42_FEATURES_SUPPORTED=y
CONFIG_BT_BLE_50_FEATURES_SUPPORTED=n
CONFIG_SPI_FLASH_AUTO_SUSPEND=y
CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY=y
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
CONFIG_BT_NIMBLE_MAX_BONDS=1
CONFIG_BT_NIMBLE_MAX_CCCDS=1
CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y
CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y
CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
CONFIG_BT_NIMBLE_SECURITY_ENABLE=n
CONFIG_BT_NIMBLE_SM_LEGACY=n
CONFIG_BT_NIMBLE_SM_SC=n
CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION=n
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT=10
CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE=100
CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT=4
CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE=320
CONFIG_BT_NIMBLE_TRANSPORT_EVT_COUNT=15
# WIFI
#CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=6
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=20
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=20
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=16
CONFIG_LWIP_MAX_ACTIVE_TCP=6
CONFIG_LWIP_MAX_LISTENING_TCP=4
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=4320
CONFIG_LWIP_TCP_WND_DEFAULT=4320
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=16
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=16
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=12
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=384
CONFIG_LWIP_IPV6=n
CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=n
# TLS
CONFIG_MBEDTLS_DYNAMIC_BUFFER=y
CONFIG_MBEDTLS_DYNAMIC_FREE_CONFIG_DATA=y
CONFIG_MBEDTLS_DYNAMIC_FREE_CA_CERT=y
最终内存占用
AP + STA + NIMBLE + MQTT + HTTPS
ESP32c3
free_size = 92528
minimum_free_size = 81360
largest_free_block = 65536
------------------------------
#1: 69100 B
#2: 10148 B
#3: 7776 B
#4: 2864 B
#5: 1700 B
#6: 732 B
ESP32s3
free_size = 151032
minimum_free_size = 137704
largest_free_block = 88064
------------------------------
#1: 89172 B
#2: 32024 B
#3: 21564 B
#4: 7688 B
#5: 1700 B
#6: 252 B
License:
CC BY 4.0