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

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

3天内不再提示

文件系统FatFS和LittleFS的区别

strongerHuang 来源:strongerHuang 作者:strongerHuang 2022-03-25 19:45 次阅读
对于许多嵌入式电子设备而言,拥有一个小型且具有“弹性”的文件系统至关重要。

MCU上运行的文件系统不多,绝大部分人应该知道FatFS这个文件系统,今天就给大家讲讲FatFS和LittleFS的内容,以及他们之间的一些差异。

文件系统FatFS

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

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

---来自百度百科

特征

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

b.平台无关,容易移植。

c.程序代码和工作区的占用空间非常小。

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

  • ANSI / OEM或Unicode中的长文件名。
  • exFAT文件系统,64位LBA和GPT可存储大量数据。
  • RTOS的线程安全。
  • 多个卷(物理驱动器和分区)。
  • 可变扇区大小。
  • 多个代码页,包括DBCS。
  • 只读,可选API,I / O缓冲区等...

文件系统FatFS和LittleFS的区别
文件系统FatFS和LittleFS的区别

如果你会使用STM32CubeMX,想要使用FatFS非常容易,轻松几步就能将STM32“变成”一个U盘。

文件系统Littlefs

知道Littlefs文件系统的人相对比较少,但是如果使用过Mbed OS系统的人绝大部分都应该知道。

Mbed OS是Arm公司针对Cortex-M系列处理器,面向IoT开发的一套免费、开源开源嵌入式操作系统,专门为物联网中的“things”而设计。

文件系统FatFS和LittleFS的区别

而Littlefs只是Mbed其中的一部分内容,如下框图:

文件系统FatFS和LittleFS的区别

Littlefs特点:

  • 占用资源小:物联网设备受到ROMRAM的限制。

  • 断电恢复能力:要求文件系统保持一致,并将数据刷新到底层存储。

  • 平均磨损:通常情况下,存储支持每块数量有限的擦除,因此使用整个存储设备对于可靠性非常重要。

文件系统FatFS和LittleFS的区别

用法也挺简单,参看官方例程:

#include "LittleFileSystem2.h"#include "SPIFBlockDevice.h"
// Physical block device, can be any device that supports the BlockDevice APISPIFBlockDevice bd(PTE2, PTE4, PTE1, PTE5);
// Storage for the littlefsLittleFileSystem2 fs("fs");
// Entry pointint main() {    // Mount the filesystem    int err = fs.mount(&bd);    if (err) {        // Reformat if we can't mount the filesystem,        // this should only happen on the first boot        LittleFileSystem2::format(&bd);        fs.mount(&bd);    }
    // Read the boot count    uint32_t boot_count = 0;    FILE *f = fopen("/fs/boot_count", "r+");    if (!f) {        // Create the file if it doesn't exist        f = fopen("/fs/boot_count", "w+");    }    fread(&boot_count, sizeof(boot_count), 1, f);
    // Update the boot count    boot_count += 1;    rewind(f);    fwrite(&boot_count, sizeof(boot_count), 1, f);
    // Remember that storage may not be updated until the file    // is closed successfully    fclose(f);
    // Release any resources we were using    fs.unmount();
    // Print the boot count    printf("boot_count: %ld
", boot_count);}

二者对比与区别

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

1.资源RAM / ROM大小

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

文件系统FatFS和LittleFS的区别

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

2.失电恢复能力

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

3.磨损均衡

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

原文标题:嵌入式文件系统FatFS和LittleFS对比

文章出处:【微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

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

    关注

    7

    文章

    2670

    浏览量

    47340
  • 嵌入式
    +关注

    关注

    5068

    文章

    19014

    浏览量

    303234
  • 文件系统
    +关注

    关注

    0

    文章

    284

    浏览量

    19883

原文标题:嵌入式文件系统FatFS和LittleFS对比

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32CubeMx入门教程(10):Fatfs文件系统的应用

    导语"fatfs是一个小型的文件系统,在小型的嵌入式系统中使用非常的广泛,STM32CubeMx自带该文件系统,我们通过简单的配置就能够使用,将前面的SD卡的读写操作进行修改,将
    发表于 07-12 11:39 5048次阅读
    STM32CubeMx入门教程(10):<b class='flag-5'>Fatfs</b><b class='flag-5'>文件系统</b>的应用

    fatFs/LittleFs/RelianceEdge Fs/LwExt4嵌入式文件系统写入速度对比哪个快?

    fatFs/LittleFs/RelianceEdge Fs/LwExt4嵌入式文件系统写入速度对比哪个快?
    发表于 12-27 06:37

    FatFs文件系统使用

    STM系列FatFs文件系统使用文件,希望对大家有帮助。
    发表于 11-06 18:10 8次下载

    基于SD卡的FATFS文件系统的研究与应用_崔鹏伟

    基于SD卡的FATFS文件系统的研究与应用_崔鹏伟。
    发表于 04-14 16:46 40次下载

    SPI FLASH LittleFS文件系统例程资料免费下载

    SPI FLASH LittleFS文件系统例程,基于STM32F103+STM32Cube开发的详细资料免费下载。
    发表于 02-18 08:00 36次下载
    SPI FLASH <b class='flag-5'>LittleFS</b><b class='flag-5'>文件系统</b>例程资料免费下载

    Fatfs文件系统的移植)

    Fatfs文件系统的移植)一、文件系统介绍二、移植条件、说明1、FatFs模块在可移植性方面设定了以下条件:2、数据类型说明3、系统框架三
    发表于 11-15 18:51 22次下载
    <b class='flag-5'>Fatfs</b>(<b class='flag-5'>文件系统</b>的移植)

    FATFS文件系统详解

    采用的独特的文件系统结构CDFS:CDFS是大部分的光盘的文件系统exFATFATFS文件系统FATFS是一个完全免费开源的FAT 文件系统
    发表于 11-29 09:51 29次下载
    <b class='flag-5'>FATFS</b><b class='flag-5'>文件系统</b>详解

    文件系统FatFs文件系统在嵌入式芯片LPC18XX上的移植

    文件系统FatFs文件系统在嵌入式芯片LPC18XX上的移植
    发表于 12-04 10:51 12次下载
    【<b class='flag-5'>文件系统</b>】<b class='flag-5'>FatFs</b><b class='flag-5'>文件系统</b>在嵌入式芯片LPC18XX上的移植

    Esp8266闪存文件系统LIttleFS

    Esp8266闪存文件系统LIttleFS
    发表于 12-06 17:21 17次下载
    Esp8266闪存<b class='flag-5'>文件系统</b><b class='flag-5'>LIttleFS</b>

    FATFS文件系统原版文件下载

    FATFS文件系统原版文件下载
    发表于 06-25 09:02 0次下载

    基于OpenHarmony3.1的LittleFS文件系统hdf驱动实现

         LittleFS是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)文件系统的思想,以日志结构存储元
    的头像 发表于 09-30 18:32 1592次阅读

    基于OpenHarmony3.1的LittleFS文件系统hdf驱动实现

    一、简介LittleFS是一个小型的Flash文件系统,它结合日志结构(log-structured)文件系统和COW(copy-on-write)文件系统的思想,以日志结构存储元数据
    的头像 发表于 06-22 09:42 902次阅读
    基于OpenHarmony3.1的<b class='flag-5'>LittleFS</b><b class='flag-5'>文件系统</b>hdf驱动实现

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

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

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

    和删除文件,实现了数据的持久化存储和分层次的目录结构。文件系统的存在极大地简化了数据管理任务,提升了系统整体的稳定性和便利性,对于系统配置、数据记录、固件升级等多种应用场景来说至关重要
    的头像 发表于 09-29 16:14 961次阅读
    小型<b class='flag-5'>文件系统</b>如何选择?<b class='flag-5'>FatFs</b>和<b class='flag-5'>LittleFs</b>优缺点比较