ESP32显示图片动画问题

前言

我有20个动画要显示,但是ESP32资源可能不够

硬件

使用ESP32-S3-WROOM-1 N16R8 模组
-内置ESP32-S3 系列芯片,Xtensa® 双核 32 位LX7 微处理器(支持单精度浮点运算单元),支持高达240MHz的时钟频率

  • 384 KBROM
  • 512 KB SRAM
  • 16 KB RTCSRAM
  • 16M Flash
  • 8M SPI RAM

当前程序编译信息

我的程序分区表

# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,    0x4000,
otadata,  data, ota,     0xd000,    0x2000,
phy_init, data, phy,     0xf000,    0x1000,
model,    data, spiffs,  0x10000,   0xF0000,
ota_0,    app,  ota_0,   0x100000,  6M,
ota_1,    app,  ota_1,   0x700000,  6M,

使用idf.py size查看内存使用

                            Memory Type Usage Summary
+--------------------------------------------------------------------------------+
| Memory Type/Section | Used [bytes] | Used [%] | Remain [bytes] | Total [bytes] |
|---------------------+--------------+----------+----------------+---------------|
Total image size: 4745384 bytes (.bin may be padded larger)
| Flash Data          |      2809184 |     8.37 |       30745216 |      33554400 |
|    .rodata          |      2808928 |     8.37 |                |               |
|    .appdesc         |          256 |      0.0 |                |               |
| Flash Code          |      1801010 |    21.47 |        6587566 |       8388576 |
|    .text            |      1801010 |    21.47 |                |               |
| DIRAM               |       164015 |    47.99 |         177745 |        341760 |
|    .text            |       100243 |    29.33 |                |               |
|    .data            |        33632 |     9.84 |                |               |
|    .bss             |        29008 |     8.49 |                |               |
|    .vectors         |         1027 |      0.3 |                |               |
| RTC FAST            |          328 |      4.0 |           7864 |          8192 |
|    .text            |          256 |     3.12 |                |               |
|    .rtc_reserved    |           40 |     0.49 |                |               |
|    .force_fast      |           32 |     0.39 |                |               |
+--------------------------------------------------------------------------------+

看不懂,total flahs怎么这么大,超出了16MB

0x1796e0 bytes (25%) free
Total image size: 4745384 bytes (.bin may be padded larger)

细致需求

依据这两句话,app flash还剩下1M多点。
但是,我有20个动画要显示,目前想了几种方式
1,显示lottie格式动画,一个lottie动画只有几十K,但是现在一使用就崩溃,因为别的应用也占用了很多RAM
2,显示图片动画,一张图片十几K,一个动画估计1M,所以只能把图片放到SD卡里面,显示的时候加载,但不知道RAM能否满足,完全一无所知

运行现象

我写了一个程序检测程序运行过程中的RAM

  size_t ram_left = heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
  ESP_LOGW(TAG, "Internal ram left = %.2f KB, before init", (float)ram_left / 1024);
  ram_left = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
  ESP_LOGW(TAG, "SPI ram left = %.2f KB, before init", (float)ram_left / 1024);

vTaskDelay(pdMS_TO_TICKS(5000)); // 每 5 秒打印一次

image

posted @ 2025-04-30 17:16  njit-sam  阅读(103)  评论(0)    收藏  举报