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

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

c17fd90e9c8127e46dcea252510daf41.png

素材来源:网络 编辑整理: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缓冲区等...

06ad3a298b6f1bf2ec9f3532f177c47f.png48ac66726673f13f27ee7633214737cb.png

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

二、文件系统Littlefs

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

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

298c4084e3da41383dd255b4319cc0e8.png

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

fc1e07c23e26175604cbe3af4062a82f.png

源码地址:

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

Littlefs特点:

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

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

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

a054b66e23d498ade6da7567a137c49d.png

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

#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\n", boot_count);}

三、文件系统对比

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

1.资源RAM / ROM大小

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

f7e6103a5d63bd165b6b23d326216660.png

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”查看更多内容,回复“加群”按规则加入技术交流群。

aa5fc2c57831e8e6ba3e3b4b09f691e4.png

长按前往图中包含的公众号关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值