0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_94171069 来源:jf_94171069 作者:jf_94171069 2024-09-29 16:14 次阅读

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特点:

wKgaomb5DGSAF-VfAAC7k0BnFXQ574.jpg

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

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

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

文件系统对比

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

1.资源RAM / ROM大小

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

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

wKgZomb5DGiAEt-kAAAgb7aCYuQ672.jpg

2.失电恢复能力

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

wKgaomb5DGmAGlpjAH5fQ0Um_PM637.jpg

wKgZomb5DGqAQXzbAI0oVdOpN9Y213.jpg

3.磨损均衡

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

wKgaomb5DGyARRZlAEB-joplU3k543.jpg

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沉淀的技术内容方向如下:

wKgaombqoM2AYL2RAAQrZ8e-uz8392.jpg

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

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

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

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

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

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

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

Hey 物联网从业者,

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

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

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

审核编辑 黄宇

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

    关注

    5092

    文章

    19176

    浏览量

    307454
  • FATFS
    +关注

    关注

    0

    文章

    44

    浏览量

    18380
收藏 人收藏

    评论

    相关推荐

    【S32K146 RT-thread】基于内部PFLASH的littlefs适配

    LittleFS是一个应用于单片机内部flash和外挂NORflash的文件系统。由于它相比传统的FAT文件系统更适合于小型嵌入式系统,具有
    的头像 发表于 01-14 18:32 301次阅读
    【S32K146 RT-thread】基于内部PFLASH的<b class='flag-5'>littlefs</b>适配

    stm32单片机基于rt-thread 的 littlefs 文件系统 的使用

    简介littlefs是ARM官方推出的,专为嵌入式系统设计的文件系统,相比传统的文件系统littlefs具有以下优点:1、自带擦写均衡2、
    的头像 发表于 11-06 08:04 1097次阅读
    stm32单片机基于rt-thread 的 <b class='flag-5'>littlefs</b> <b class='flag-5'>文件系统</b> 的使用

    FPGA与ASIC的优缺点比较

    FPGA(现场可编程门阵列)与ASIC(专用集成电路)是两种不同的硬件实现方式,各自具有独特的优缺点。以下是对两者优缺点比较: FPGA的优点 可编程性强 :FPGA具有高度的可编程性,可以灵活
    的头像 发表于 10-25 09:24 663次阅读

    Linux根文件系统的挂载过程

    Linux根文件系统(rootfs)是Linux系统中所有其他文件系统和目录的起点,它是内核启动时挂载的第一个文件系统
    的头像 发表于 10-05 16:50 509次阅读

    rtthread支持nandflash挂载fatfs文件系统吗?

    rtthread支持nandflash挂载fatfs文件系统
    发表于 09-27 09:45

    如何修改buildroot和debian文件系统

    本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian
    的头像 发表于 07-22 17:46 542次阅读
    如何修改buildroot和debian<b class='flag-5'>文件系统</b>

    esp32s2写文件系统时io外部中断触发不及时,怎么解决?

    芯片esp32s2,idf release v4.4,目前问题,io配置为边沿触发,需要采集上升沿下降沿之间的脉冲宽度,假如一个40ms的脉冲,在写文件系统时脉冲采集到的宽度为10-20ms,不写文件系统没问题,文件系统使用
    发表于 06-12 08:29

    esp32s3 fatfs文件系统,fprintf不能保存数据,只能fclose后才能保存,怎么解决这个问题?

    esp32s3,fatfs文件系统,fprintf不能保存数据,只能fclose后才能保存。尝试过fclose之前使用fflush函数保存数据,但是还是不行,不能成功。这样每次保存数据都要fclose,很麻烦啊。
    发表于 06-07 08:23

    如何将Littlefs安装到通过qspi连接到电路板的外部串行闪存上?

    我正试图在 XMC7100 V1.1 中的 qspi 外部串行闪存上闪存 littlefs 文件系统。 我看到库中的 mtb-littlefs 不包括在 XMC7100 套件中。 如果我下载任何
    发表于 05-27 06:03

    请问FATFS文件系统可靠性如何?

    ST官方固件库中使用了FATFS文件系统,想问下,这个文件系统可靠么? 我想了解一下,有哪位朋友真正产品上使用FATFS文件系统,可靠性有什
    发表于 05-16 06:35

    通用FAT文件系统模块

     FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs模块按照ANSI C(C89)编写,与磁盘I/O层完全
    发表于 05-03 10:28 242次阅读
    通用FAT<b class='flag-5'>文件系统</b>模块

    FatFS文件系统写入的文件在PC上看不到内容是怎么回事?

    使用DiskGenius可以查看到内容。 2、写入完成后使用该文件系统读取文件长度为0. 3、使用DiskGenius查看文件的目录,发现0x1C开始的值没有变(为0)。 4、如果使用PC将
    发表于 04-17 07:09

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录 【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现 1. 概述 2. 设计概要 3. 设计实现 3.1 初始化 `init` 3.2 日志写入 `write` 3.3 日志
    的头像 发表于 03-14 18:13 1115次阅读
    【嵌入式SD NAND】基于<b class='flag-5'>FATFS</b>/<b class='flag-5'>Littlefs</b><b class='flag-5'>文件系统</b>的日志框架实现

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录 【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现 概述 设计概要 设计实现 3.1 初始化 init 3.2 日志写入 write 3.3 日志读取 read 3.4 注销
    发表于 03-14 18:12

    【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现

    文章目录【嵌入式】基于FATFS/Littlefs文件系统的日志框架实现1.概述2.设计概要3.设计实现3.1初始化`init`3.2日志写入`write`3.3日志读取`read`3.4注销
    的头像 发表于 03-14 18:12 1221次阅读
    【嵌入式SD NAND】基于<b class='flag-5'>FATFS</b>/<b class='flag-5'>Littlefs</b><b class='flag-5'>文件系统</b>的日志框架实现