警告

This document is not updated for ESP32C5 yet, so some of the content may not be correct.

This warning was automatically inserted due to the source file being in the add_warnings_pages list.

# 存储 API

[English]

本节提供高层次的存储 API 的参考文档。这些 API 基于如 SPI flash、SD/MMC 等低层次驱动。

- 分区表 API 基于 分区表 ，允许以块为单位访问 SPI flash。

- 非易失性存储库 (NVS) 在 SPI NOR flash 上实现了一个有容错性，和磨损均衡功能的键值对存储。

- 虚拟文件系统 (VFS) 库提供了一个用于注册文件系统驱动的接口。SPIFFS、FAT 以及多种其他的文件系统库都基于 VFS。

- SPIFFS 是一个专为 SPI NOR flash 优化的磨损均衡的文件系统，非常适用于小分区和低吞吐率的应用。

- FAT 是一个可用于 SPI flash 或者 SD/MMC 存储卡的标准文件系统。

- 磨损均衡 库实现了一个适用于 SPI NOR flash 的 flash 翻译层 (FTL)，用于 flash 中 FAT 分区的容器。

与存储安全相关的信息，请参考 存储安全。

备注

建议使用高层次的 API（`esp_partition` 或者文件系统）而非低层次驱动 API 去访问 SPI NOR flash。

由于 NOR flash 和乐鑫硬件的一些限制，访问主 flash 会影响各个系统的性能。关于这些限制的更多信息，参见 SPI flash API。

- FAT 文件系统
- 在主机上生成和解析 FATFS
- 量产程序
- 非易失性存储库
- 在引导程序中使用 NVS
- NVS 加密
- NVS 分区生成程序
- NVS 分区解析程序
- SD/SDIO/MMC 驱动程序
- 分区 API
- SPIFFS 文件系统
- 虚拟文件系统组件
- 磨损均衡 API
- Storage Security

## 示例

存储 API 相关例程
例程 | 描述
nvs_rw_blob | 演示了如何在 NVS flash 中使用 C 语言 API 读写 blob 数据类型。
nvs_rw_value | 演示了如何在 NVS flash 中使用 C 语言 API 读写整数数据类型。
nvs_rw_value | 演示了如何在 NVS flash 中使用 C++ 语言 API 读写整数数据类型。
nvs_statistics | 演示了如何使用 C 风格 API 获取 NVS 使用情况统计信息，包括指定 NVS 分区中的空闲、已用、可用、总条目数、以及命名空间数量。
nvs_iteration | 演示了如何使用 C 风格 API 遍历特定（或任意）NVS 数据类型的条目，以及如何获取这些条目的相关信息。
nvs_bootloader | 演示了如何使用引导加载程序代码中可用的 API 来读取 NVS 数据。
nvsgen | 演示了如何使用基于 Python 的 NVS 镜像生成工具，根据 CSV 文件内容创建 NVS 分区镜像。

常用文件系统 API
代码示例 | 描述
fatfs/getting_started | 演示了如何使用 FATFS 库在内部 flash 上应用标准文件 API (stdio.h)。
fatfs/fs_operations | 演示了如何使用 POSIX API 进行文件系统操作，如移动、删除和重命名文件等。

FATFS API 示例
代码示例 | 描述
fatfsgen | 演示了在主机上使用 Python 工具生成 FATFS 镜像的相关功能。
ext_flash_fatfs | 演示了在外部 flash 上使用带有磨损均衡功能的 FATFS。
wear_leveling | 演示了在内部 flash 上使用带有磨损均衡功能的 FATFS。

SPIFFS API 示例
代码示例 | 描述
spiffs | 演示了如何使用 SPIFFS API 初始化文件系统，并使用 POSIX 函数处理文件。
spiffsgen | 演示了在主机计算机上使用 Python 工具生成 SPIFFS 镜像的功能。

分区 API 示例
代码示例 | 描述
partition_api | 介绍了用于查找特定分区、执行基本 I/O 操作以及通过 CPU 内存映射使用分区的 API 函数。
parttool | 演示了在主机计算机上使用 Python 工具生成分区镜像的功能。

VFS 相关示例
代码示例 | 描述
littlefs | 演示了如何使用 LittleFS 组件初始化文件系统，并使用 POSIX 函数处理文件。
semihost_vfs | 演示了如何使用 VFS API，利用 POSIX 函数使 ESP 设备访问通过 JTAG 连接的主机上的文件。

此文档对您有帮助吗？

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

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