SPI Flash

[English]


ESP32 flash 空间与使用要求是什么?

外部 flash 可以同时映射到 CPU 指令和只读数据空间。ESP32 外部 flash 最大可支持 16 MB。

  • 当映射到 CPU 指令空间时,一次最多可映射 11 MB + 248 KB。如果一次映射超过 3 MB + 248 KB, 则 Cache 性能可能由于 CPU 的推测性读取而降低。

  • 当映射到只读数据空间时,一次最多可以映射 4 MB。支持 8-bit、16-bit 和 32-bit 读取。

  • 需要在编写代码时指定 flash 分区表,即将 flash 划分为不同的分区,如 app 分区、data 分区、OTA 分区等,并指定每个分区的大小和偏移地址

  • 在使用 flash 时,需要注意 flash 的使用寿命问题。由于 flash 的擦写次数有限,需要合理规划和管理 flash 的使用,例如使用 wear leveling 等技术来延长 flash 的寿命。

  • 在使用 flash 时,需要注意 flash 写操作会占用 CPU 时间,可能会影响系统的响应速度,因此需要尽量减少 flash 写操作的频率。


ESP8266 的模组,有哪些扇区可以自主使用?

  • SDK rel3.0 之前的版本,除 bootloader 与 app bin 外还会在设置的 flash 大小的尾部会保留扇区如下:1 个存放系统信息,1 个存储 OTA 信息,1 个存放 RF 校准信息。

  • SDK rel3.0 及其以后的版本使用 partition_table 来管理 flash,除该文件自身与 bootloader 外,其余 bin 文件均在 partition_table 标注。


ESP8266 如何读取 flash 数据?

  • 可使用 ESP8266-RTOS-SDK 下的脚本工具读 flash ,读 flash 方式如下:

    • 安装 python 环境以及工具依赖的包文件;

    • 进入 ESP8266_RTOS_SDK/components/esptool_py/esptool 路径下;

    • 执行 python esptool.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 read_flash 0x0 0x400000 esp8266.bin。该命令中 “esp8266.bin” 为自定义名称,读取到的 flash 数据将会生成名为 “esp8266.bin” 的文件,命令中 “/dev/ttyUSB0” 为 linux 环境中的串口号,其他环境以及系统中会有不同。


不同的 ESP32 模组为何出现 flash 擦除时间不一致?

  • 不同的 ESP32 模组可能具有不同的 flash 芯片或 flash 控制器,这些硬件组件可能会对擦除时间产生影响,部分型号的 flash 进行擦除时没有空块跳过的机制,所以耗时较长。具体而言,不同的 flash 芯片可能具有不同的擦除时间,例如 SPI flash 和 QSPI flash 具有不同的擦除时间,即使是同一类型的 flash 芯片也可能存在不同的擦除时间,这取决于其封装和生产批次等因素。此外,不同的 flash 控制器的设计和性能也可能对擦除时间产生影响。因此,不同的 ESP32 模组可能会使用不同的 flash 芯片或 flash 控制器,从而导致擦除时间的不一致。


使用 ESP32-S3-WROOM-2-32R8V 模组,设置 flash SPI mode 为 QIO 模式,固件运行时打印如下错误是什么原因?

E (47) qio_mode: Failed to set QIE bit, not enabling QIO mode

ESP32-S3-WROOM-2-32R8V 模组使用的是 32 MB Octal SPI flash 和 8 MB Octal SPI RAM。请在配置选项中开启 Octal SPI flash 和 Octal PSRAM 的设置:

  • (Top) > Serial flasher config > [*] Enable Octal Flash > Flash SPI mode (OPI)

  • (Top) > Component config > ESP PSRAM > Support for external, SPI-connected RAM > SPI RAM config > Mode (QUAD/OCT) of SPI RAM chip in use


如何判断 ESP-IDF 是否已经支持某款 flash?

  • 可以参考 Optional features for flash 来进一步了解 ESP-IDF 支持的 flash 信息,需要注意的是,此文档仅说明 ESP-IDF 代码已支持这些 flash 的特性,并不是乐鑫认证的稳定 flash 列表。

  • 如需要 flash 选型的进一步支持,可以联系 乐鑫商务


基于 ESP32-S3 芯片外接 SPI flash,支持单次写入的数据量是多大?

  • ESP32-S3 硬件限制外接 SPI flash 只允许单次写入最大 64 字节数据。