ESP32外部RAM和内部RAM的使用

很多时候esp32的内部ram不够用,比如涉及音频或者显示图像等处理时,需要更大的内存空间来处理这些数据。这时候怎么办呢?ESP32支持扩展外部RAM,其实乐鑫已经在其ESP32 WROVER系列模组中集成了一个4M大小的外部PSRAM。这时候我们可以使用esp32的外部ram!

乐鑫官网文档对外部RAM作了详解:片外RAM

乐鑫对于ESP32 WROVER的介绍也是:ESP32-WROVER 系列模组基于 ESP32-D0WD 双核芯片设计,其强大的双核性能适用于对内存需求大的应用场景,例如多样的 AIoT 应用和网关应用。如果你的设备需要使用大内存,例如wifi与ble并存,音频处理和图像显示功能,推荐使用这个模组。

快速上手外部RAM

使能外部RAM

首先必须确保你的芯片是有外部RAM的。例如ESP32 WROVER模组。

进入​​idf.py menuconfig->component config->ESP32-specific​​

Support for external,SPI-connected RAM​​选项中按​​y​​选中,这样就使能了外部RAM。

配置外部RAM
进入下一行的​​SPI RAM config​​进行配置更多的细节。这里讲一下比较重要的配置选项。

第二项配置系统的动态内存分配功能

有三个选项,当选择​​Make RAM allocatable using heap_cap

### 静态SPIRAM使用方法与配置 ESP32支持外部连接的PSRAM(通常称为SPIRAM),用于扩展其内存容量。这种外接存储器可以通过静态分配的方式供应用程序使用。以下是关于如何配置使用ESP32上的静态SPIRAM的相关说明。 #### 1. 启用SPIRAM支持 为了启用SPIRAM的支持,在项目的`menuconfig`中需要进行如下设置: - 进入 `Component config -> ESP-IDF specific -> SPI RAM configuration`。 - 将选项 **"Enable PSRAM support"** 设置为开启状态[^4]。 此操作会激活硬件驱动程序以管理外部PSRAM模块,并允许将其作为系统的堆空间的一部分来使用。 #### 2. 使用静态分配模式 默认情况下,ESP-IDF框架中的SPIRAM是以动态方式进行管理的,即通过标准C库函数如`malloc()`自动处理内存请求。然而如果希望采用更精确控制的方法,则可以考虑手动指定某些变量或者数据结构存放在SPIRAM上: 对于全局或静态变量来说,只需简单地加上属性修饰符即可实现特定位置的数据放置。例如下面的例子展示了怎样定义一个位于SPIRAM内的数组: ```c #include "esp_heap_caps.h" uint8_t my_data_in_psram[1024 * 64] __attribute__((section(".psram_bss"))); void init_my_data() { memset(my_data_in_psram, 0xFF, sizeof(my_data_in_psram)); } ``` 上述代码片段利用GCC编译器提供的特殊功能——将变量放入名为`.psram_bss`的部分当中,从而确保这些数据被映射至物理地址范围对应于已安装好的PSRAM芯片之上[^5]。 另外一种常见做法就是调用专门API接口完成类似目的的任务;比如创建一块固定大小且仅限于来自SPIRAM区域的新缓冲区: ```c size_t buffer_size = 1024; void* psram_buffer = heap_caps_malloc(buffer_size , MALLOC_CAP_SPIRAM); if(psram_buffer != NULL){ printf("Allocated %d bytes of PSRAM at address:%p\n",buffer_size,psram_buffer ); }else{ printf("Failed to allocate memory from PSRAM.\n"); } ``` 这里运用到了`heap_caps_malloc()`函数而不是普通的`malloc()`版本,因为它能够接受额外参数用来表明所期望获取资源的具体特性需求。在这里我们传递了标志位`MALLOC_CAP_SPIRAM`表示只寻找那些标记成可用于SPIRAM分配的位置[^6]。 #### 3. 调整链接脚本 当项目涉及到大量预知尺寸的大块连续性读写操作时,可能还需要进一步修改应用层面上面涉及到底层细节部分的内容。这包括但不限于调整目标平台专属定制化后的LD Script文件路径下的相应章节描述信息等等[^7]。 --- ### 总结 综上所述,要成功部署并充分利用好附加型别的随机访问记忆体设备所提供的优势,就需要从软件层面做出相应的适配工作。主要包括正确初始化环境、合理规划布局以及灵活选用工具链所提供的一系列辅助手段等方面的努力成果体现出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shengyin714959

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值