关注、星标公众,不错过精彩内容

素材来源:网络

编辑整理:strongerHuang

对于许多物联网设备而言,拥有一个小型且具有弹性的文件系统至关重要。

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

一、文件系统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.平台无关,容易移植。

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

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

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

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

  • RTOS的线程安全。

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

  • 可变扇区大小。

  • 多个代码页,包括DBCS。

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

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

二、文件系统Littlefs

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

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

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

源码地址:

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

Littlefs特点:

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

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

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

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

#include "LittleFileSystem2.h"
#include "SPIFBlockDevice.h"// Physical block device, can be any device that supports the BlockDevice API
SPIFBlockDevice bd(PTE2, PTE4, PTE1, PTE5);// Storage for the littlefs
LittleFileSystem2 fs("fs");// Entry point
int main() {// Mount the filesystemint err = fs.mount(&bd);if (err) {// Reformat if we can't mount the filesystem,// this should only happen on the first bootLittleFileSystem2::format(&bd);fs.mount(&bd);}// Read the boot countuint32_t boot_count = 0;FILE *f = fopen("/fs/boot_count", "r+");if (!f) {// Create the file if it doesn't existf = fopen("/fs/boot_count", "w+");}fread(&boot_count, sizeof(boot_count), 1, f);// Update the boot countboot_count += 1;rewind(f);fwrite(&boot_count, sizeof(boot_count), 1, f);// Remember that storage may not be updated until the file// is closed successfullyfclose(f);// Release any resources we were usingfs.unmount();// Print the boot countprintf("boot_count: %ld\n", boot_count);
}

三、文件系统对比

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

1.资源RAM / ROM大小

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

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

2.失电恢复能力

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

3.磨损均衡

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

参考来源:

https://os.mbed.com/blog/entry/littlefs-high-integrity-embedded-fs/

免责声明:本文来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
推荐阅读:精选汇总 | 目录 | 搜索
为什么CPU流水线会提高代码执行效率?
假冒芯片的套路,如何鉴别仿冒料件?关注微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。长按前往图中包含的公众号关注

小型文件系统FatFS和LittleFS对比和区别相关推荐

  1. stm32 fatfs fopen err_disk__小型文件系统FatFS和LittleFS对比和区别

    关注.星标公众号,不错过精彩内容 素材来源:网络编辑整理:strongerHuang 对于许多物联网设备而言,拥有一个小型且具有弹性的文件系统至关重要. 在MCU上运行的文件系统不多,绝大部分人应该知 ...

  2. 嵌入式文件系统FatFS和LittleFS对比

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 对于许多嵌入式电子设备而言,拥有一个小型且具有"弹性"的文件系统 ...

  3. STM32-串行FLASH文件系统FatFs

    串行FLASH文件系统FatFs FatFs官方链接 FatFs文件系统的源码可以从FatFs官方下载:官方链接http://elm-chan.org/fsw/ff/00index_e.html Fa ...

  4. 文件系统FATFS的移植教程

    最新FatFs:http://elm-chan.org/fsw/ff/00index_e.html 一.FATFS文件系统简介 FATFS是面向小型嵌入式系统的一种通用的FAT文件系统.它完全是由C语 ...

  5. Stm32文件系统FATFS(开始于2021-09-09)

    Stm32文件系统FATFS 参考资料主要是原子和野火两家的讲解. 1.FATFS简介: 适合嵌入式小型单片机,是一个 独立 的软件层文件系统,我们只需要将底层硬件的读取函数移植到FATFS提供的向下 ...

  6. STM32CUBEIDE之SPI读写FLASH进阶串行FLASH文件系统FatFs

    预备知识 >>W25Q128是16M spi flash,一共有256个block ,每个Block 64KB. >>一个Block可以分割为16个扇区(small secto ...

  7. readyboost提升明显吗_iphone12promax参数对比11ProMax区别 性能提升多少

    iphone12promax参数对比11ProMax区别 性能提升多少 iPhone12ProMax是苹果今年推出的最为顶尖的旗舰,那么这款手机的跑分怎么样?综合性能强悍吗?小编为大家带来最新的跑分信 ...

  8. 文件的逻辑结构与物理结构的对比与区别

    文件的逻辑结构与物理结构的对比与区别 本文截图均来自王道考研操作系统 用户关心只关心文件的逻辑结构 逻辑结构:在用户看来,文件内部的数据是如何组织起来的 操作系统只关心文件的物理结构 物理结构:在OS ...

  9. STM32 串行FLASH文件系统FatFs

    目录 一.Windows系统为例 二.文件系统的结构与特性 为什么要应用文件分配表? 三.FatFs文件系统 1- FatFs 文件系统源码介绍 2- FatFs在程序中的关系网 四.配置FatFs移 ...

最新文章

  1. groupadd - 建 立 新 群 组
  2. 212页PPT详解MEMS微传感器的工作原理(深入全面!)
  3. 我与 美国作家 21天精通C++ 作者 Rao的对话:
  4. windows 命令行
  5. KubeVela 正式开源:一个高可扩展的云原生应用平台与核心引擎
  6. 高通驱动9008安装_小米10/Redmi K30 Pro系列已支持GPU驱动独立更新,还能双版本切换...
  7. 经典网页设计:20个与众不同的国外 HTML5 网站
  8. linux b权限开头的文件夹,linux文件权限与目录配置
  9. 视频播功能及画面协同操作注意事项
  10. 明解c语言实践篇翻译_《明解C语言》PDF版本下载
  11. MyBatis 自定义插件
  12. 读书、学习、工作和生活中收集的20条经典语录:21-40
  13. 计算机网络里ping是什么意思,Ping命令有什么作用,Ping通后显示的数据是什么意思?...
  14. 商务个人邮箱、VIP邮箱哪个最好用?外贸安全邮箱又怎么选?
  15. android10及以上通话录音
  16. linux执行startx进入桌面黑屏,linux下误操作startx命令后,在登录界面进不去解决办法...
  17. mysql模糊查找表名
  18. 向下取整符号_22. 为什么 Python 中的整除是向下取整?
  19. 20190325 Django自定义过滤器和自定义模板标签
  20. deepsort : 牧游 网友提供的思路,用mgn替换reid 的特征检测部分

热门文章

  1. 武汉大学计算机学院招博士目录
  2. 使用Excel自定义单元格,隐藏、替换、增加前后缀等格式设置
  3. 为何选计算机应用专业,计算机应用专业的为什么要还学电工电子技术啊?
  4. linux7系统改成中文,centos7修改系统语言为简体中文
  5. python是一个免费开源的软件吗_Python是开源的吗?使用Python的软件开发领域
  6. MBA-day9 逻辑学-直言初识
  7. Android基础之BroadCastReceiver短信拦截器
  8. 宝塔面板安装完成后无法访问_宝塔面板安装WordPress(超详细)
  9. python操作word填表_#如何将现有的数据利用python 填入word的表格中?#
  10. target和currentTarget的区别