如果 IRAM 内存已满会怎样?

问题描述 投票:0回答:1

我为 ESP32-S3 创建了一个几乎空的 ESP-IDF C 项目。 我添加了以下组件:

idf_component_register(SRCS ${SOURCES}
                    INCLUDE_DIRS .
                    REQUIRES 
                        esp_driver_gpio 
                        esp_driver_uart 
                        esp_timer 
                        esp_event
                        esp_wifi
                        nvs_flash
                        driver 
                        fatfs
                        FT800-FT813-5.x)

我只写了几行代码。 编译后我看到IRAM内存已经满了:

Memory Type Usage Summary                             
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Memory Type/Section ┃ Used [bytes] ┃ Used [%] ┃ Remain [bytes] ┃ Total [bytes] ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Flash Code          │       149695 │     1.78 │        8238881 │       8388576 │
│    .text            │       149695 │     1.78 │                │               │
│ DIRAM               │        74112 │    21.43 │         271744 │        345856 │
│    .text            │        55651 │    16.09 │                │               │
│    .data            │        11296 │     3.27 │                │               │
│    .bss             │         7008 │     2.03 │                │               │
│ Flash Data          │        67180 │      0.2 │       33487220 │      33554400 │
│    .rodata          │        66924 │      0.2 │                │               │
│    .appdesc         │          256 │      0.0 │                │               │
│ IRAM                │        16383 │    99.99 │              1 │         16384 │
│    .text            │        15356 │    93.73 │                │               │
│    .vectors         │         1027 │     6.27 │                │               │
│ RTC FAST            │           40 │     0.49 │           8152 │          8192 │
│    .rtc_reserved    │           24 │     0.29 │                │               │
└─────────────────────┴──────────────┴──────────┴────────────────┴───────────────┘
Total image size: 300205 bytes (.bin may be padded larger)

我正在阅读这里什么是 IRAM 以及这里如何最大限度地减少其使用。 从项目配置中,我删除了所有 IRAM 选项(我仅启用了主 SPI)。

据我所知,ESP32 有

CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM
参数可以更改 IRAM 大小,但 ESP32-S3 没有。

IRAM 已满而几乎没有编写代码会产生什么后果?还有其他方法可以减少其使用量(或增加其大小)吗?

esp32 ram esp-idf
1个回答
0
投票

与 ESP32 不同,ESP32-S3 没有专用的“指令 RAM”(IRAM)。如果需要,所有 RAM 均可用于指令/代码。这就是为什么对于 S3,显示的“IRAM”的“大小”只是应用程序中所有“IRAM”代码分配的 RAM 量,并且这将始终是“已满”/“几乎已满”。

© www.soinside.com 2019 - 2024. All rights reserved.