小型文件系统如何选择?FatFs和LittleFs优缺点比较

电子说

1.3w人已加入

描述

01 

概述

文件系统在嵌入式系统中的作用不可或缺,它提供了对非易失性存储设备(如闪存、SD卡等)上的数据进行有效组织和管理的能力。通过文件系统,嵌入式系统可以像在传统计算机上一样创建、读取、写入和删除文件,实现了数据的持久化存储和分层次的目录结构。文件系统的存在极大地简化了数据管理任务,提升了系统整体的稳定性和便利性,对于系统配置、数据记录、固件升级等多种应用场景来说至关重要。

FatFS 是一个流行的开源、轻量级、通用型的FAT文件系统模块,专为小型嵌入式系统设计,兼容FAT12、FAT16和FAT32格式。它能够在多种类型的存储介质上实现文件系统的挂载和操作,常用于消费电子产品、工业控制设备以及其他资源有限的嵌入式环境中,特别是需要与个人电脑或其他设备之间进行数据交换的应用场景。

LittleFS 则是一个专门为资源有限且不稳定环境设计的嵌入式文件系统,相较于传统的FAT文件系统,LittleFS专注于在小容量存储设备(如SPI Flash、EEPROM等)上提供更好的耐久性和容错能力。LittleFS主要解决嵌入式系统中因电源突然断电或者硬件故障导致的数据丢失问题,它通过元数据的日志记录和恢复机制确保文件系统的完整性。这种文件系统在物联网(IoT)设备、智能传感器节点和其它长期运行、无人值守的嵌入式系统中有着广阔的应用前景。

02 

文件系统FatFS

FatFs是一个通用的文件系统(FAT/exFAT)模块,用于在小型嵌入式系统中实现FAT文件系统。

官方网址:

http://elm-chan.org/fsw/ff/00index_e.html

FatFs组件的编写遵循ANSI C(C89),完全分离于磁盘 I/O 层,因此不依赖于硬件平台。它可以嵌入到资源有限的微控制器中,如 8051, PIC, AVR, ARM, Z80, RX等等,不需要做任何修改。

特征

a.兼容性强:DOS/ Windows兼容的FAT/exFAT文件系统。

b.资源消耗低:代码体积小巧,对RAM和ROM资源需求较少,平台无关,容易移植。

c.移植性好:几乎可以运行在任何带有文件系统功能的嵌入式系统上。

d.支持以下各种配置选项:

ANSI / OEM或Unicode中的长文件名。

exFAT文件系统,64位LBA和GPT可存储大量数据。

RTOS的线程安全。

多个卷(物理驱动器和分区)。

可变扇区大小。

多个代码页,包括DBCS。

只读,可选API,I / O缓冲区等...

03 

文件系统Littlefs

市场上有许多商业和开源嵌入式文件系统,但没有一个能够完全满足我们的设计代码大小、功能或可靠性要求,而这些对于成功部署 IoT 设备至关重要。LittleFs是一款专为嵌入式系统设计的小型故障安全文件系统。

源码地址:

https://github.com/armmbed/mbed-littlefs

Littlefs特点:

嵌入式

占用资源小:LittleFS针对小容量存储如SPI Flash进行了优化,支持小至几KB的存储空间。

断电恢复能力:LittleFS通过日志记录和恢复机制,减少了文件系统损坏的可能性,尤其在突然断电情况下,能够保持数据完整性。

平均磨损:LittleFS在写入操作上进行了优化,减少因小文件写入引起的磨损均衡问题。

文件系统对比

每一种产物都有它存在的价值,文件系统也同样如此,各有各的优缺点,下面简单罗列几点它们的区别。

1.资源RAM / ROM大小

Littlefs是Mbed OS中的高完整性嵌入式文件系统,经过优化可与RAM和ROM有限的MCU一起使用。

Littlefs高度集成的嵌入式文件系统使用比FAT少的13K ROM和少于4K的RAM。

嵌入式

2.失电恢复能力

littlefs具有强大的copy-on-write保证,并且磁盘上的存储总是保持有效状态,可能有随机电源故障的系统适合该文件系统。

嵌入式

嵌入式

3.磨损均衡

嵌入式设备使用的大多数存储芯片都支持每个扇区有限的擦除集,如果没有均衡,则嵌入式设备的寿命可能会受到影响

嵌入式

04 

结论

FatFs,如果存储设备,例如SD卡,需要接入windows中查看存储的内容,需要选择FatFs。

LittleFs,如果需要更小的资源占用,磨损平衡,掉电保护功能,需要选择LittleFs。

本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)

欢迎同学们走进AmazIOT知识库的世界!

这里是为物联网人构建的技术应用百科,以便帮助你更快更简单的开发物联网产品。

Cellular IoT Wiki初心:

在我们长期投身于蜂窝物联网 ODM/OEM 解决方案的实践过程中,一直被物联网技术碎片化与产业资源碎片化的问题所困扰。从产品定义、芯片选型,到软硬件研发和测试,物联网技术的碎片化以及产业资源的碎片化,始终对团队的产品开发交付质量和效率形成制约。为了减少因物联网碎片化而带来的重复开发工作,我们着手对物联网开发中高频应用的技术知识进行沉淀管理,并基于 Bloom OS 搭建了不同平台的 RTOS 应用生态。后来我们发现,很多物联网产品开发团队都面临着相似的困扰,于是,我们决定向全体物联网行业开发者开放奇迹物联内部沉淀的应用技术知识库 Wiki,期望能为更多物联网产品开发者减轻一些重复造轮子的负担。

Cellular IoT Wiki沉淀的技术内容方向如下:

嵌入式

奇迹物联的业务服务范围:基于自研的NB-IoT、Cat1、Cat4等物联网模组,为客户物联网ODM/OEM解决方案服务。我们的研发技术中心在石家庄,PCBA生产基地分布在深圳、石家庄、北京三个工厂,满足不同区域&不同量产规模&不同产品开发阶段的生产制造任务。跟传统PCBA工厂最大的区别是我们只服务物联网行业客户。

连接我们,和10000+物联网开发者一起降低技术和成本门槛

让蜂窝物联网应用更简单~~

哈哈你终于滑到最重要的模块了,

千万不!要!划!走!忍住冲动!~

欢迎加入飞书“开源技术交流群”,随时找到我们哦~

点击链接如何加入奇迹物联技术话题群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以获取加入技术话题群攻略

Hey 物联网从业者,

你是否有了解过奇迹物联的官方公众号“eSIM物联工场”呢?

这里是奇迹物联的物联网应用技术开源wiki主阵地,欢迎关注公众号,不迷路~

及时获得最新物联网应用技术沉淀发布

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分