乐鑫技术交流
直播中

杜喜喜

7年用户 1492经验值
私信 关注
[问答]

ESP32 Rev3内存分配之间是否存在差异?

我看到了一些奇怪的东西,想知道新旧 ESP32 Rev 3 芯片(WROVER-E 模块)之间是否存在差异。

我有一个围绕 ESP32 设计的产品。最近我们在上一次构建大约一年后进行了新的制造运行。同时,我实施了一些固件更改,使用更多内部堆内存并移至 IDF v4.4.2。我的更改在新板上运行良好,但无法在旧板上运行。事实证明,由 main() 启动的最终任务的 xTaskCreate 失败了。我能够修改我的代码以不使用太多内存并且问题消失了但是我在电路板上做了一些进一步的实验并且留下了关于旧 ESP32 设备和新设备之间差异的问题。

我使用 heap_caps_print_heap_info(MALLOC_CAP_INTERNAL) 检测代码,并在系统启动并达到稳定状态后运行它。除了 WiFi(配置为更喜欢 SPIRAM)之外,大多数缓冲区和数据结构都是在启动期间静态定义或分配的,因此当系统在启动(空闲)后处于稳定状态时应该不会有太大变化。对于我的测试,WiFi 已启用并连接到接入点,但没有发生明显的流量。

我一直看到,较旧的 ESP32 Rev 3 芯片系统显示的可用内存比新的 ESP32 Rev 3 系统略少约 400 字节。在具有同一代 ESP32 的板上有一些变化(+/- 50-60 字节),我将其归因于采样时的 WiFi 状态。

所以我想问那些知情人士,随着时间的推移制造的 rev 3 ESP32 芯片是否存在差异,这会导致不同的内存使用?或者有人有其他解释吗?很明显,新旧板之间存在差异(硬件在其他方面相同并且运行相同的 IDF v4.4.2 构建代码)。

更多回帖

发帖
×
20
完善资料,
赚取积分