ESP-IDF 例程——存储
14. storage 目录
14.1 nvs/nvs_rw_value 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_rw_value |
| 所在文件夹路径 | examples\storage\nvs\nvs_rw_value |
| 核心功能说明 | 演示如何使用ESP-IDF的NVS(Non-Volatile Storage)组件读写键值对数据。实现了整数和字符串类型的读写操作,以及键的查找和删除功能。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- nvs_flash_init():初始化NVS- nvs_open():打开NVS命名空间- nvs_set_i32():写入整数- nvs_get_i32():读取整数- nvs_set_str():写入字符串- nvs_get_str():读取字符串- nvs_erase_key():删除键- nvs_commit():提交更改- nvs_close():关闭NVS句柄 |
| 输入输出参数说明 | 输入: - 要写入的整数和字符串值(硬编码在程序中) 输出: - 读取到的整数和字符串值 - 操作结果状态信息 |
| 适用场景及典型应用案例 | 适用于: - 学习NVS的基本使用方法 - 开发需要存储配置信息的应用 - 保存设备状态和计数器 - 存储简单的键值对数据 - 作为NVS应用的参考模板 |
14.2 fatfs/getting_started 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | fatfs/getting_started |
| 所在文件夹路径 | examples\storage\fatfs\getting_started |
| 核心功能说明 | 演示如何使用FATFS组件在SPI Flash上实现FAT文件系统。实现了文件系统的挂载、文件的打开、写入、读取和关闭,以及文件系统的卸载。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_fat_spiflash_mount():挂载FAT文件系统- fopen():打开文件- fwrite():写入文件- fread():读取文件- fclose():关闭文件- esp_vfs_fat_spiflash_unmount():卸载FAT文件系统 |
| 输入输出参数说明 | 输入: - 要写入的字符串”Hello World!”(硬编码在程序中) 输出: - 写入成功的状态 - 读取到的字符串 - 文件系统操作的日志信息 |
| 适用场景及典型应用案例 | 适用于: - 学习FATFS的基本使用方法 - 开发需要文件系统支持的应用 - 存储大量数据和文件 - 实现可与电脑兼容的文件系统 - 作为FATFS应用的参考模板 |
14.3 littlefs 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | littlefs |
| 所在文件夹路径 | examples\storage\littlefs |
| 核心功能说明 | 演示如何使用LittleFS文件系统在SPI Flash上存储数据。实现了LittleFS的初始化、挂载、文件读写、目录操作和卸载功能。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_littlefs_register():注册LittleFS- esp_vfs_littlefs_unregister():注销LittleFS- littlefs_info():获取LittleFS信息- 标准C文件操作函数(fopen, fwrite, fread, fclose等) |
| 输入输出参数说明 | 输入: - 要写入的文件内容 输出: - 文件读写结果 - LittleFS使用情况 - 目录列表 |
| 适用场景及典型应用案例 | 适用于: - 学习LittleFS文件系统的使用 - 开发需要高效文件系统的应用 - 存储配置文件和资源文件 - 物联网设备的本地数据存储 - 作为LittleFS应用的参考模板 |
14.4 spiffs 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | spiffs |
| 所在文件夹路径 | examples\storage\spiffs |
| 核心功能说明 | 演示如何使用SPIFFS(SPI Flash File System)在SPI Flash上实现文件系统。实现了SPIFFS的挂载、文件读写、目录操作和卸载功能。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_spiffs_register():注册SPIFFS- esp_vfs_spiffs_unregister():注销SPIFFS- esp_spiffs_info():获取SPIFFS信息- 标准C文件操作函数(fopen, fwrite, fread, fclose等) |
| 输入输出参数说明 | 输入: - 要写入的文件内容 输出: - 文件读写结果 - SPIFFS使用情况 - 目录列表 |
| 适用场景及典型应用案例 | 适用于: - 学习SPIFFS文件系统的使用 - 开发需要轻量级文件系统的应用 - 存储Web服务器的静态文件 - 物联网设备的本地数据存储 - 作为SPIFFS应用的参考模板 |
14.5 wear_levelling 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | wear_levelling |
| 所在文件夹路径 | examples\storage\wear_levelling |
| 核心功能说明 | 演示如何使用ESP-IDF的wear_levelling组件实现Flash的磨损均衡。实现了基于磨损均衡的NVS-like键值存储,包括数据的写入、读取和删除。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- wl_mount():挂载磨损均衡分区- wl_unmount():卸载磨损均衡分区- nvs_open_from_partition():从磨损均衡分区打开NVS- 标准NVS操作函数(nvs_set_i32, nvs_get_i32等) |
| 输入输出参数说明 | 输入: - 要写入的键值对数据 输出: - 读取到的数据 - 磨损均衡状态信息 |
| 适用场景及典型应用案例 | 适用于: - 学习Flash磨损均衡的原理和使用 - 开发需要频繁写入Flash的应用 - 延长Flash寿命的设备 - 物联网设备的长期数据存储 - 作为磨损均衡应用的参考模板 |
14.6 custom_flash_driver 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | custom_flash_driver |
| 所在文件夹路径 | examples\storage\custom_flash_driver |
| 核心功能说明 | 演示如何实现自定义Flash驱动,用于支持非标准Flash芯片或特殊的Flash操作。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- 自定义Flash驱动实现 - 引导加载程序组件 - 芯片驱动组件 |
| 输入输出参数说明 | 输入: - Flash操作参数 输出: - Flash操作结果 - 驱动初始化状态 |
| 适用场景及典型应用案例 | 适用于: - 学习自定义Flash驱动的实现 - 支持特殊Flash芯片 - 开发需要特殊Flash操作的应用 - 作为Flash驱动开发的参考模板 |
14.7 emmc 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | emmc |
| 所在文件夹路径 | examples\storage\emmc |
| 核心功能说明 | 演示如何使用eMMC(嵌入式多媒体卡)存储设备,支持不同总线宽度的eMMC操作。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- eMMC初始化和配置函数 - eMMC读写操作函数 - 支持1线、4线和8线eMMC模式 |
| 输入输出参数说明 | 输入: - eMMC配置参数 输出: - eMMC初始化状态 - 读写操作结果 - 设备信息 |
| 适用场景及典型应用案例 | 适用于: - 学习eMMC存储设备的使用 - 开发需要大容量存储的应用 - 多媒体设备的存储解决方案 - 作为eMMC应用的参考模板 |
14.8 fatfs/ext_flash 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | fatfs/ext_flash |
| 所在文件夹路径 | examples\storage\fatfs\ext_flash |
| 核心功能说明 | 演示如何在外部Flash上使用FATFS文件系统,实现外部存储的文件管理。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_fat_spiflash_mount():挂载FAT文件系统- 标准C文件操作函数 - 外部Flash驱动 |
| 输入输出参数说明 | 输入: - 外部Flash配置 输出: - 文件系统挂载状态 - 文件操作结果 |
| 适用场景及典型应用案例 | 适用于: - 学习在外部Flash上使用FATFS - 开发需要扩展存储的应用 - 多媒体文件存储 - 作为外部Flash存储的参考模板 |
14.9 fatfs/fatfsgen 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | fatfs/fatfsgen |
| 所在文件夹路径 | examples\storage\fatfs\fatfsgen |
| 核心功能说明 | 演示如何使用fatfsgen工具生成FAT文件系统镜像,并在运行时挂载和使用。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_fat_spiflash_mount():挂载FAT文件系统- 标准C文件操作函数 |
| 输入输出参数说明 | 输入: - 预生成的FAT文件系统镜像 输出: - 文件系统挂载状态 - 文件操作结果 |
| 适用场景及典型应用案例 | 适用于: - 学习fatfsgen工具的使用 - 开发需要预加载文件的应用 - 嵌入式系统的资源文件存储 - 作为文件系统镜像生成的参考模板 |
14.10 fatfs/fs_operations 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | fatfs/fs_operations |
| 所在文件夹路径 | examples\storage\fatfs\fs_operations |
| 核心功能说明 | 演示FATFS文件系统的各种操作,包括文件读写、目录操作、文件属性管理等。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_fat_spiflash_mount():挂载FAT文件系统- 标准C文件操作函数(fopen, fwrite, fread, fclose等) - 目录操作函数(opendir, readdir, closedir等) |
| 输入输出参数说明 | 输入: - 文件操作参数 输出: - 文件操作结果 - 目录列表 - 文件属性信息 |
| 适用场景及典型应用案例 | 适用于: - 学习FATFS文件系统的高级操作 - 开发需要复杂文件操作的应用 - 文件管理系统 - 作为文件系统操作的参考模板 |
14.11 nvs/nvs_bootloader 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_bootloader |
| 所在文件夹路径 | examples\storage\nvs\nvs_bootloader |
| 核心功能说明 | 演示如何在引导加载程序中使用NVS,实现引导加载程序配置和数据存储。 |
| 主要调用的内部/外部函数或模块 | - 引导加载程序钩子函数 - NVS操作函数 - 加密相关函数 |
| 输入输出参数说明 | 输入: - 引导加载程序配置 输出: - NVS操作结果 - 引导加载状态 |
| 适用场景及典型应用案例 | 适用于: - 学习在引导加载程序中使用NVS - 开发需要引导加载程序配置的应用 - 安全启动和加密应用 - 作为引导加载程序NVS使用的参考模板 |
14.12 nvs/nvs_console 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_console |
| 所在文件夹路径 | examples\storage\nvs\nvs_console |
| 核心功能说明 | 提供NVS命令行界面,允许用户通过控制台命令管理NVS数据,包括读写、删除和列出键值对。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- 控制台命令注册和处理 - NVS操作函数 |
| 输入输出参数说明 | 输入: - 控制台命令和参数 输出: - 命令执行结果 - NVS数据信息 |
| 适用场景及典型应用案例 | 适用于: - 学习NVS的命令行管理 - 开发调试工具 - 现场配置和维护 - 作为NVS调试工具的参考模板 |
14.13 nvs/nvs_iteration 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_iteration |
| 所在文件夹路径 | examples\storage\nvs\nvs_iteration |
| 核心功能说明 | 演示如何遍历NVS中的所有键值对,实现NVS数据的枚举和管理。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- nvs_open():打开NVS命名空间- nvs_get_blob():读取blob数据- nvs_entry_find():查找NVS条目- nvs_entry_next():获取下一个NVS条目 |
| 输入输出参数说明 | 输入: - NVS命名空间 输出: - 遍历到的键值对 - NVS条目信息 |
| 适用场景及典型应用案例 | 适用于: - 学习NVS条目的遍历 - 开发NVS数据管理工具 - 数据备份和恢复 - 作为NVS遍历操作的参考模板 |
14.14 nvs/nvs_rw_blob 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_rw_blob |
| 所在文件夹路径 | examples\storage\nvs\nvs_rw_blob |
| 核心功能说明 | 演示如何使用NVS存储和读取二进制大对象(blob)数据,如结构体、数组等。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- nvs_flash_init():初始化NVS- nvs_open():打开NVS命名空间- nvs_set_blob():写入blob数据- nvs_get_blob():读取blob数据- nvs_commit():提交更改- nvs_close():关闭NVS句柄 |
| 输入输出参数说明 | 输入: - 要写入的blob数据(结构体、数组等) 输出: - 读取到的blob数据 - 操作结果状态信息 |
| 适用场景及典型应用案例 | 适用于: - 学习NVS存储blob数据 - 开发需要存储复杂数据结构的应用 - 配置信息存储 - 传感器数据缓存 - 作为NVS blob操作的参考模板 |
14.15 nvs/nvs_rw_value_cxx 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_rw_value_cxx |
| 所在文件夹路径 | examples\storage\nvs\nvs_rw_value_cxx |
| 核心功能说明 | 演示如何在C++代码中使用NVS读写键值对数据,展示C++接口的使用方法。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- C++版NVS操作函数 - 标准C++库 |
| 输入输出参数说明 | 输入: - 要写入的整数和字符串值 输出: - 读取到的整数和字符串值 - 操作结果状态信息 |
| 适用场景及典型应用案例 | 适用于: - 学习C++中使用NVS - 开发C++应用 - 现代C++项目的配置存储 - 作为C++ NVS使用的参考模板 |
14.16 nvs/nvs_statistics 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvs_statistics |
| 所在文件夹路径 | examples\storage\nvs\nvs_statistics |
| 核心功能说明 | 演示如何获取NVS的统计信息,包括使用情况、条目数量、碎片率等。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- nvs_flash_init():初始化NVS- nvs_open():打开NVS命名空间- nvs_get_stats():获取NVS统计信息 |
| 输入输出参数说明 | 输入: - NVS命名空间 输出: - NVS使用情况 - 条目数量 - 碎片率 - 存储容量 |
| 适用场景及典型应用案例 | 适用于: - 学习NVS统计信息的获取 - 开发NVS监控工具 - 系统诊断和调试 - 作为NVS统计的参考模板 |
14.17 nvs/nvsgen 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | nvs/nvsgen |
| 所在文件夹路径 | examples\storage\nvs\nvsgen |
| 核心功能说明 | 演示如何使用nvsgen工具生成NVS分区镜像,并在运行时读取预加载的NVS数据。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- nvs_flash_init():初始化NVS- nvs_open():打开NVS命名空间- 标准NVS操作函数 |
| 输入输出参数说明 | 输入: - 预生成的NVS分区镜像 输出: - 读取到的NVS数据 - 操作结果状态信息 |
| 适用场景及典型应用案例 | 适用于: - 学习nvsgen工具的使用 - 开发需要预加载配置的应用 - 批量设备配置 - 作为NVS镜像生成的参考模板 |
14.18 partition_api/partition_find 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | partition_api/partition_find |
| 所在文件夹路径 | examples\storage\partition_api\partition_find |
| 核心功能说明 | 演示如何使用分区API查找和识别Flash分区,包括按名称、类型和子类型查找分区。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_partition_find_first():查找第一个匹配的分区- esp_partition_find():查找所有匹配的分区- esp_partition_get_info():获取分区信息 |
| 输入输出参数说明 | 输入: - 分区查找参数(类型、子类型、名称) 输出: - 找到的分区信息 - 分区数量 |
| 适用场景及典型应用案例 | 适用于: - 学习分区API的使用 - 开发需要动态分区管理的应用 - 系统诊断工具 - 作为分区查找的参考模板 |
14.19 partition_api/partition_mmap 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | partition_api/partition_mmap |
| 所在文件夹路径 | examples\storage\partition_api\partition_mmap |
| 核心功能说明 | 演示如何使用分区API将Flash分区映射到内存,实现直接内存访问。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_partition_find_first():查找分区- esp_partition_mmap():映射分区到内存- esp_partition_munmap():解除内存映射 |
| 输入输出参数说明 | 输入: - 分区名称或类型 输出: - 映射的内存地址 - 映射状态 - 读取的数据 |
| 适用场景及典型应用案例 | 适用于: - 学习分区内存映射 - 开发需要快速访问Flash数据的应用 - 资源文件加载 - 作为内存映射的参考模板 |
14.20 partition_api/partition_ops 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | partition_api/partition_ops |
| 所在文件夹路径 | examples\storage\partition_api\partition_ops |
| 核心功能说明 | 演示如何使用分区API对Flash分区进行读写操作,包括扇区擦除、数据写入和读取。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_partition_find_first():查找分区- esp_partition_erase_range():擦除分区范围- esp_partition_write():写入数据- esp_partition_read():读取数据 |
| 输入输出参数说明 | 输入: - 要写入的数据 输出: - 操作结果状态 - 读取到的数据 |
| 适用场景及典型应用案例 | 适用于: - 学习分区API的基本操作 - 开发直接操作Flash的应用 - 自定义文件系统 - 作为分区操作的参考模板 |
14.21 parttool 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | parttool |
| 所在文件夹路径 | examples\storage\parttool |
| 核心功能说明 | 演示如何使用parttool工具管理Flash分区,包括分区表读取、修改和验证。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- parttool Python脚本 - 分区表操作函数 |
| 输入输出参数说明 | 输入: - 分区操作命令 输出: - 分区表信息 - 操作结果状态 |
| 适用场景及典型应用案例 | 适用于: - 学习parttool工具的使用 - 开发分区管理工具 - 系统维护和调试 - 作为分区管理的参考模板 |
14.22 perf_benchmark 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | perf_benchmark |
| 所在文件夹路径 | examples\storage\perf_benchmark |
| 核心功能说明 | 提供存储性能基准测试,包括SPI Flash、SD卡等存储设备的读写速度测试。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- 性能测试函数 - 存储设备操作函数 - 时间测量函数 |
| 输入输出参数说明 | 输入: - 测试配置参数 输出: - 读写速度测试结果 - 延迟统计 - 性能分析报告 |
| 适用场景及典型应用案例 | 适用于: - 学习存储性能测试方法 - 评估存储设备性能 - 优化存储相关应用 - 作为性能测试的参考模板 |
14.23 sd_card/sdmmc 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | sd_card/sdmmc |
| 所在文件夹路径 | examples\storage\sd_card\sdmmc |
| 核心功能说明 | 演示如何使用SDMMC(安全数字多媒体卡)接口操作SD卡,支持不同总线宽度的SD卡操作。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- SDMMC初始化和配置函数 - SD卡读写操作函数 - 支持1线和4线SDMMC模式 |
| 输入输出参数说明 | 输入: - SDMMC配置参数 输出: - SD卡初始化状态 - 读写操作结果 - 设备信息 |
| 适用场景及典型应用案例 | 适用于: - 学习SDMMC接口的使用 - 开发需要大容量存储的应用 - 多媒体文件存储 - 数据备份和日志记录 - 作为SD卡应用的参考模板 |
14.24 sd_card/sdspi 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | sd_card/sdspi |
| 所在文件夹路径 | examples\storage\sd_card\sdspi |
| 核心功能说明 | 演示如何使用SPI接口操作SD卡,提供一种更灵活的SD卡连接方式。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- SDSPI初始化和配置函数 - SD卡读写操作函数 - SPI总线配置 |
| 输入输出参数说明 | 输入: - SDSPI配置参数 输出: - SD卡初始化状态 - 读写操作结果 - 设备信息 |
| 适用场景及典型应用案例 | 适用于: - 学习SDSPI接口的使用 - 开发需要SD卡但没有SDMMC接口的应用 - 灵活的硬件设计 - 作为SDSPI应用的参考模板 |
14.25 semihost_vfs 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | semihost_vfs |
| 所在文件夹路径 | examples\storage\semihost_vfs |
| 核心功能说明 | 演示如何使用半主机(semihosting)功能,实现目标设备与主机之间的文件系统共享。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_semihost_register():注册半主机VFS- 标准C文件操作函数 |
| 输入输出参数说明 | 输入: - 主机文件路径 输出: - 文件操作结果 - 读取到的文件内容 |
| 适用场景及典型应用案例 | 适用于: - 学习半主机功能的使用 - 开发和调试阶段的文件访问 - 主机与目标设备的文件共享 - 作为半主机VFS的参考模板 |
14.26 spiffsgen 例程
| 字段 | 描述 |
|---|---|
| 例程名称 | spiffsgen |
| 所在文件夹路径 | examples\storage\spiffsgen |
| 核心功能说明 | 演示如何使用spiffsgen工具生成SPIFFS文件系统镜像,并在运行时挂载和使用。 |
| 主要调用的内部/外部函数或模块 | - app_main():程序入口函数- esp_vfs_spiffs_register():注册SPIFFS- 标准C文件操作函数 |
| 输入输出参数说明 | 输入: - 预生成的SPIFFS文件系统镜像 输出: - 文件系统挂载状态 - 文件操作结果 |
| 适用场景及典型应用案例 | 适用于: - 学习spiffsgen工具的使用 - 开发需要预加载文件的应用 - 嵌入式系统的资源文件存储 - 作为SPIFFS镜像生成的参考模板 |
ESP-IDF 例程——存储
https://blog.zhaosn.top/ESP32-examples/14.storage/