esp32虚拟内存中的循环缓冲区?

Circular buffer in virtual memory on esp32?

This article描述了使用mmap将两个虚拟内存范围配置到同一个底层缓冲区以避免管理循环缓冲区的内存复制。

esp32硬件能支持吗?我想使用 i2c dma 技术将麦克风音频数据直接读取到循环缓冲区中,并将该缓冲区的窗口范围移交给 tensorflow 以在 esp32 上进行分析,而无需任何可避免的内存副本。

This reddit 线程讨论了它,但我对解释答案的了解还不够。那些 api 调用可以映射到内存吗?是否有替代机制来实现我的效率目标?

没有。 ESP32 没有虚拟内存 - 至少没有 RAM。

reddit 线程讨论了如何从内部 32 位地址 space 中的特定地址获取部分闪存。我想这可以被认为是虚拟内存的一种形式,但它非常有限 - 你只能为 Flash 并且只能在 64 KiB 块中这样做。