什么是SPIFFS

从名字我们其实可以简单猜一猜:SPI ,接口嘛,FFS,文件系统!

是的,这是一个面向SPIFLASH的文件系统。目前网络上资料不是很多,我个人也只是在ESP8266和ESP32上面见过它。从网络上显示的资料来看,它是github上一位叫pellepl的工程师在2013年编写的一个文件系统,链接如下:
https://github.com/pellepl/spiffs

当前系统版本为0.3.7.有很多特点,考虑到大部分童鞋英语一般,我直接用工具翻译成中文吧:
1.jpg
介绍:

Spiffs是一个用于嵌入式目标上的SPI NOR flash设备的文件系统。

Spiffs有以下几个特点:

1、小(嵌入式)目标,没有堆的少量RAM
2、只有大范围的数据(块)才能被删除
3、擦除将把所有块中的位重置为1
4、写操作把1变成0
5、0只能被擦除成1
6、磨损均衡

划重点:可以像操作SD卡一样操作SPI FLASH(创建文件、读写文件),磨损均衡(最大化的利用了SPI FLASH的寿命)

我大致看了下文档,感觉还不错,貌似是我想要的。。。。。于是花了点时间把它移植到了设备系统里。

现在说说个人的使用感受。我们设备使用的SPI FLASH存储器是W25X64,使用SPIFS文件系统读写600多组电压数据,500多组内阻数据,300多条告警信息,使用半年多时间,没有出现任何问题,设备经常开关机,也没有出现文件系统崩溃的问题。最后我要感谢SPIFS的作者。

下载源码


下载SPIFS源代码,把他加入到自己的工程里(这句貌似废话。。。。请无视)。源码里有些是例程,有兴趣可以看看,没兴趣直接删掉,真正有用的是这些文件:

2.jpg

配置SPI FLASH的相关信息

此配置要根据自己的SPI FLASH硬件信息做相应的修改,下面是我的配置:
3.jpg

配置FLASH的读写接口函数

(这里我就认为你的SPI FLASH已经驱动成功,读、写、擦出都没问题,OK,把这些函数赋给SPIFS文件系统调用就行了)
4.jpg

收工。。。。测试

5.jpg

补充说明


SPIFS文件系统在创建文件或目录的时候只支持Flat(平坦)模式,也就是说它不支持建立多级目录。

本文作者:天马行空
链接:https://www.amobbs.com/thread-3740617-1-1.html
整理:MCU起航