ESP32学习--SPIFFS文件系统
文件系统SPIFFS学习
本次学习基于 storage/spiffsgen 例程
前言
在嵌入式系统的学习过程中,我们将越来越频繁的需要去和内存打交道,有的是外置存储,有的是内置的存储。当我们需要管理的内存越来越多的时候,再使用简单的地址读取操作就会显得比较麻烦,这个时候就需要文件系统来帮我们进行管理,本次学习也是基于这个需求展开。
基本介绍
SPIFFS 是一个用于 SPI NOR flash 设备的嵌入式文件系统,支持磨损均衡(嵌入式设备使用的大多数存储芯片都支持每个扇区有限的擦除集,如果没有均衡,则嵌入式设备的寿命可能会受到影响)、文件系统一致性检查等功能。该文件系统只需要少量的RAM就可以运行,这对于一些资源不是很充足的单片机来说非常有用。
配置步骤
方法一直接使用spiffsgen.py
生成文件系统的镜像
我们要使用文件系统首先来讲肯定是需要一个文件系统的镜像,这里我们可以使用 spiffsgen.py
这个工具进行制作。这个文件可以在,esp32提供的idf中找到,路径是components/spiffs
- image_size:你所设置分区的大小
- base_dir:想要烧录文件的位置
- output_file:输出文件的名称
使用示例
这样你就可以得到一个可以烧录的bin文件了
然后使用 esptool.py工具烧录进去
可以先擦除我们这个位置的内容 通过下面这个命令
esptool.py --chip esp32s3 --port /dev/ttyACM0 erase_region 0x110000 0x100000
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_region <start_address>
打印发现检测不到 ,然后我们再把镜像下载进去
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 write_flash <your.bin>
方法二在构建系统中使用(推荐)
第二种方法相对于第一种更加简单,只需要在我们的cmake构建工程中添加如下代码即可
spiffs_create_partition_image(my_spiffs_partition my_folder FLASH_IN_PROJECT)
老规矩先使用命令擦除flash上面的程序
esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 115200 erase_flash
使用idf.py build
构建工程
构建完成之后我们可以在build目录下面发现这两个文件,一个是我们的主程序的文件,一个是spiffs镜像文件,这里我们直接使用idf.py flash esp32的脚本会帮我们自动全部烧进去
观察烧录日志 确实把我们的spiffs镜像给烧录进去了
尾声
新年的第一篇文章,祝各位新年快乐,天天进步!