[MEM] Reduce ESP32 BLE firmware RAM usage (#2294)
- Fix addLog buffer overflow; reduce LOG_BUFFER_SIZE 6096→3072, ROW_LENGTH 1024→512 - Lazy-allocate web console log buffer (saves ~3.5KB when console not active) - Stream WebUI responses in chunks to eliminate String heap allocations - NimBLE buffer tuning: ACL bufs 20→12, HCI hi bufs 30→15, MSYS1 blocks 12→8, MTU 256→185 - BLE adv report flow control 100→50, LWIP sockets 16→10 - BLE scan duplicate cache 200→100 (align with sdkconfig) - procBLETask stack 9500→8000 (788B headroom over measured peak) - Cap BLE device vector at 80 with LRU eviction of non-listed devices - Disable unused LWIP components: PPP, IPv6 autoconfig/DHCPv6 - Disable unused Arduino libs: SD, SD_MMC, FFat, LittleFS, NetBIOS Measured over 30 min A/B test vs development: freemem: 58,805 → 68,755 avg (+10KB) minmem: 5,988 → 15,780 (+9.8KB) msgprc/scnct: identical (656 msgs, 26 scans) msgblck: 0 on both branches No crashes or errors Co-authored-by: Florian <1technophile@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
4 files changed
+335
-388
No files matched your search
+14
-18
@@ -45,7 +45,7 @@ CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE=100
|
||||
# CONFIG_BTDM_BLE_MESH_SCAN_DUPL_EN is not set
|
||||
CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=y
|
||||
CONFIG_BTDM_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
|
||||
CONFIG_BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
|
||||
CONFIG_BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM=50
|
||||
CONFIG_BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
|
||||
CONFIG_BTDM_RESERVE_DRAM=0xdb5c
|
||||
CONFIG_BTDM_CTRL_HLI=y
|
||||
@@ -85,14 +85,14 @@ CONFIG_BT_NIMBLE_SM_SC=y
|
||||
# CONFIG_BT_NIMBLE_SM_SC_DEBUG_KEYS is not set
|
||||
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble"
|
||||
CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31
|
||||
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256
|
||||
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=185
|
||||
CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0
|
||||
CONFIG_BT_NIMBLE_ACL_BUF_COUNT=20
|
||||
CONFIG_BT_NIMBLE_ACL_BUF_COUNT=12
|
||||
CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255
|
||||
CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70
|
||||
CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30
|
||||
CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=15
|
||||
CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8
|
||||
CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=12
|
||||
CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=8
|
||||
CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y
|
||||
CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000
|
||||
CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2
|
||||
@@ -187,11 +187,11 @@ CONFIG_ARDUINO_SELECTIVE_Ticker=y
|
||||
CONFIG_ARDUINO_SELECTIVE_Update=y
|
||||
# CONFIG_ARDUINO_SELECTIVE_Zigbee is not set
|
||||
CONFIG_ARDUINO_SELECTIVE_FS=y
|
||||
CONFIG_ARDUINO_SELECTIVE_SD=y
|
||||
CONFIG_ARDUINO_SELECTIVE_SD_MMC=y
|
||||
# CONFIG_ARDUINO_SELECTIVE_SD is not set
|
||||
# CONFIG_ARDUINO_SELECTIVE_SD_MMC is not set
|
||||
CONFIG_ARDUINO_SELECTIVE_SPIFFS=y
|
||||
CONFIG_ARDUINO_SELECTIVE_FFat=y
|
||||
CONFIG_ARDUINO_SELECTIVE_LittleFS=y
|
||||
# CONFIG_ARDUINO_SELECTIVE_FFat is not set
|
||||
# CONFIG_ARDUINO_SELECTIVE_LittleFS is not set
|
||||
CONFIG_ARDUINO_SELECTIVE_Network=y
|
||||
CONFIG_ARDUINO_SELECTIVE_Ethernet=y
|
||||
CONFIG_ARDUINO_SELECTIVE_PPP=y
|
||||
@@ -201,7 +201,7 @@ CONFIG_ARDUINO_SELECTIVE_DNSServer=y
|
||||
CONFIG_ARDUINO_SELECTIVE_ESPmDNS=y
|
||||
CONFIG_ARDUINO_SELECTIVE_HTTPClient=y
|
||||
# CONFIG_ARDUINO_SELECTIVE_Matter is not set
|
||||
CONFIG_ARDUINO_SELECTIVE_NetBIOS=y
|
||||
# CONFIG_ARDUINO_SELECTIVE_NetBIOS is not set
|
||||
CONFIG_ARDUINO_SELECTIVE_WebServer=y
|
||||
CONFIG_ARDUINO_SELECTIVE_WiFi=y
|
||||
CONFIG_ARDUINO_SELECTIVE_NetworkClientSecure=y
|
||||
@@ -247,7 +247,7 @@ CONFIG_LWIP_TCP_MSS=1436
|
||||
CONFIG_LWIP_TCP_RTO_TIME=3000
|
||||
CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=4096
|
||||
CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0=y
|
||||
CONFIG_LWIP_MAX_SOCKETS=16
|
||||
CONFIG_LWIP_MAX_SOCKETS=10
|
||||
CONFIG_LWIP_IP_FORWARD=y
|
||||
CONFIG_LWIP_IPV4_NAPT=y
|
||||
CONFIG_LWIP_DHCP_RESTORE_LAST_IP=n
|
||||
@@ -255,13 +255,9 @@ CONFIG_LWIP_DHCP_OPTIONS_LEN=128
|
||||
CONFIG_LWIP_SNTP_MAX_SERVERS=3
|
||||
CONFIG_LWIP_SNTP_UPDATE_DELAY=10800000
|
||||
CONFIG_LWIP_DHCP_GET_NTP_SRV=y
|
||||
CONFIG_LWIP_IPV6_AUTOCONFIG=y
|
||||
CONFIG_LWIP_IPV6_DHCP6=y
|
||||
CONFIG_LWIP_IPV6_RDNSS_MAX_DNS_SERVERS=2
|
||||
CONFIG_LWIP_PPP_SUPPORT=y
|
||||
CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT=y
|
||||
CONFIG_LWIP_PPP_PAP_SUPPORT=y
|
||||
CONFIG_LWIP_PPP_ENABLE_IPV6=n
|
||||
# CONFIG_LWIP_IPV6_AUTOCONFIG is not set
|
||||
# CONFIG_LWIP_IPV6_DHCP6 is not set
|
||||
# CONFIG_LWIP_PPP_SUPPORT is not set
|
||||
CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT=y
|
||||
CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT=y
|
||||
CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT=y
|
||||
|
||||
Reference in new issue
Block a user