# SPI Flash API ESP-IDF 版本与芯片 ROM 版本的对比

[English]

芯片 ROM 中有一组 SPI flash 驱动程序，可以通过启用 CONFIG_SPI_FLASH_ROM_IMPL 来使用。大多数 ESP-IDF SPI flash 驱动程序的代码都在内部 RAM 中，因此启用此选项可以释放一些内部 RAM 的占用量。请注意，如果启用此选项，一些 ESP-IDF 中的 SPI flash 驱动程序功能和错误修复可能不会体现在芯片 ROM 版本中。

## ESP-IDF 支持但不包含在芯片 ROM 中的功能

- 八线 flash 芯片。详情请参阅 OPI flash 支持。

- Flash 的 32 位地址。请注意，此功能为可选功能，详情请参阅 QSPI flash 芯片的 32 位地址支持。

- TH flash 芯片。

- Kconfig 选项 CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED。

- CONFIG_SPI_FLASH_VERIFY_WRITE，启用此选项可检测错误写入。

- CONFIG_SPI_FLASH_LOG_FAILED_WRITE，启用此选项会打印错误写入。

- CONFIG_SPI_FLASH_WARN_SETTING_ZERO_TO_ONE，启用此选项会检查是否将 0 写入为 1。

- CONFIG_SPI_FLASH_DANGEROUS_WRITE，启用此选项会检查是否对某些受保护的区域（如引导加载程序、分区表或应用程序本身）进行了 flash 编程。

- CONFIG_SPI_FLASH_ENABLE_COUNTERS，启用此选项以收集 ESP-IDF SPI flash 驱动程序 API 的性能数据。

- CONFIG_SPI_FLASH_AUTO_SUSPEND，启用此选项可在 flash 短时操作时自动挂起或恢复 flash 长时操作。请注意，此功能为可选功能，详情请参阅 自动挂起和恢复。

- 启用 CONFIG_SPIRAM_FETCH_INSTRUCTIONS 和 CONFIG_SPIRAM_RODATA 后，可将外部 PSRAM 用作指令 cache 和只读数据 cache。但请注意，ROM 中的某些函数不支持此用法，而 ESP-IDF 提供了这些 ROM 函数的替代版本。

## 在 ESP-IDF 中引入，但不包含在芯片 ROM 中的错误修复

- 正确检测到大于 256 MBit 的 flash 芯片的物理大小。（提交 ID: b4964279d44f73cce7cfd5cf684567fbdfd6fd9e）

- 修复了当启用 8 线 PSRAM 时 4 线 flash 加密无法正常运行的问题。（提交 ID: 683d92bc884e0f2a7eebea40a551cf05f0c28256）

- 修复了只能将 128 KB 虚拟地址范围映射到 flash 指令中的问题。

- 修复了只能将 16 MB 虚拟地址范围映射到 flash 只读数据中的问题。

- 修复了擦除和写入函数在地址与长度相加超出 32 位边界时，可能绕过边界检查的问题。

此文档对您有帮助吗？

- 反馈已收到，谢谢！
- 如果您有其他意见，欢迎填写乐鑫文档反馈表。

- 我们重视您的反馈。
- 您可以填写乐鑫文档反馈表告诉我们如何改进该文档。