SPIFFS是什么_SPIFFS简介

大家好,我是单片机爱好者MCU起航,最近在研究ESP32。用过ESP8266或ESP32的童鞋可能会在官方的SDK中看到这样一个东西:

SPIFFS,这是啥?

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

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

https://github.com/pellepl/spiffs

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

介绍:

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

Spiffs有以下几个特点:

1、小(嵌入式)目标,没有堆的少量RAM

2、只有大范围的数据(块)才能被删除

3、擦除将把所有块中的位重置为1

4、写操作把1变成0

5、0只能被擦除成1

6、磨损均衡

然后是特性:

SPIFFS能做什么:

1、专门为低ram使用而设计

2、使用静态大小的ram缓冲区,与文件的数量无关

3、类可移植操作系统接口:打开、关闭、读、写、查找、统计等

4、它可以在任何NOR闪存上运行,不仅是SPI闪存——理论上也可以在微处理器的嵌入式闪存上运行

5、多个spiffs配置可以在相同的目标上运行—甚至可以在相同的SPI闪存设备上运行

6、实现静态磨损调平(也就是flash的寿命维护)

7、内置文件系统一致性检查

8、高度可配置的

SPIFFS不能做什么:

1、目前,spiffs不支持目录。它产生一个平面结构。使用路径tmp/myfile.txt创建文件将创建一个名为tmp/myfile.txt的文件,而不是在tmp目录下创建一个名为myfile.txt的文件。

2、它不是一个实时堆栈。一个写操作的持续时间可能比另一个长得多。

3、可怜的可伸缩性。Spiffs适用于小型内存设备——SPI flash的正常大小。超过~128Mbyte就不推荐了。由于设计目标是用尽可能少的ram,所以这是设计目标的一个副作用。

4、目前,它不能检测或处理坏块。

5、一个配置,一个二进制。没有通用的spiffs二进制可以处理所有类型的配置。

所以,简单来说,这是一个简易的文件系统,可以面向任何闪存。最初考虑到大部分处理器的RAM资源有限,于是使用少量RAM设计了这样一个文件系统。同时,由于用的RAM比较少,导致它不能处理大于128MB的flash。

扁平化结构,不支持目录。举例,在电脑中,假设我在C盘某路径有一个文件:C:\flexIm\hello.txt,而使用SPIFFS的话,只能创建一个名字为C:\flexIm\hello的txt格式的文件。它还有一个优点,就是考虑到了flash的寿命问题,因此做了算法均匀使用flash中的每一个block。

这次先写到这里,后面我们通过一个例程来看一下SPIFFS的效果。

更多精彩内容,欢迎关注公众号:单片机爱好者。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据