跳到主要内容

设备内存不足,如何优化?

如果遇到内存问题:

  1. 降低量产固件的日志详细程度:

    CONFIG_LOG_DEFAULT_LEVEL_WARN=y
  2. 如果芯片支持,启用 PSRAM:

    CONFIG_SPIRAM_SUPPORT=y
  3. 禁用未使用的功能:关闭不需要的 RainMaker 功能:

    /* 不要启用不需要的功能 */
    /* esp_rmaker_schedule_enable();
    * esp_rmaker_scenes_enable(); */
  4. 监控内存使用:

    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() 进行运行时堆监控。