设备内存不足,如何优化?
如果遇到内存问题:
-
降低量产固件的日志详细程度:
CONFIG_LOG_DEFAULT_LEVEL_WARN=y -
如果芯片支持,启用 PSRAM:
CONFIG_SPIRAM_SUPPORT=y -
禁用未使用的功能:关闭不需要的 RainMaker 功能:
/* 不要启用不需要的功能 */
/* esp_rmaker_schedule_enable();
* esp_rmaker_scenes_enable(); */ -
监控内存使用:
ESP_LOGI(TAG, "Free heap: %d", esp_get_free_heap_size());或在启用控制台时,使用 mem-dump 串口控制台命令:
>> mem-dump
Description Internal SPIRAM
Current Free Memory 136572 0
Largest Free Block 114688 0
Min. Ever Free Size 110896 0
更全面的内存优化(静态 RAM、堆、lwIP、Wi-Fi 缓冲区、Mbed TLS、PSRAM、IRAM)请参见 ESP-IDF Minimizing RAM Usage 指南。使用 idf.py size 和 idf.py size-components 分析内存,使用 esp_get_free_heap_size() / esp_get_minimum_free_heap_size() 进行运行时堆监控。

