LittleFS v2.11.0 版本发布:文件系统收缩与跨平台支持增强

LittleFS v2.11.0 版本发布:文件系统收缩与跨平台支持增强

littlefs littlefs 项目地址: https://gitcode.com/gh_mirrors/lit/littlefs

项目简介

LittleFS 是一款专为嵌入式系统设计的轻量级文件系统,具有强大的掉电安全性和磨损均衡特性。它特别适合资源受限的微控制器环境,广泛应用于物联网设备、嵌入式存储等场景。最新发布的 v2.11.0 版本带来了一些实用的新功能和改进。

文件系统收缩功能

本次版本最值得关注的新特性是由贡献者 sosthene-nitrokey 实现的文件系统收缩能力。通过新增的 LFS_SHRINKNONRELOCATING 编译选项,开发者现在可以使用 lfs_fs_grow 函数来减少文件系统的 block_count

需要注意的是,这个功能有明确的限制条件:

  1. 只能在不涉及块重定位的情况下工作
  2. 主要用于迁移旧版本文件系统镜像(早期版本会忽略磁盘上的 block_count
  3. 由于LittleFS采用伪随机块分配策略,即使在小文件系统中也可能无法成功收缩

这项改进为特定场景下的存储管理提供了更多灵活性,但开发者需要理解其局限性,不应将其视为通用的文件系统收缩解决方案。

跨平台编译改进

yamt 贡献了一系列改进,使得 LittleFS 现在能够更好地支持 macOS 平台:

  1. 解决了测试运行器在 macOS 上的链接问题
  2. 改进了 Makefile 以原生支持 Clang 编译器
  3. 新增了 NO_GCC 环境变量,支持其他非 GCC/Clang 编译器

不过需要注意的是,使用 Clang 编译时目前还无法获取堆栈测量信息,因为缺少 GCC 的 -fcallgraph-info=su 替代方案。社区正在寻找解决方案。

关键错误修复

本次版本包含了多个重要修复:

  1. CRC 相关修复(DvdGiessen 贡献)

    • 解决了用户自定义 LFS_CRC 在多文件包含时的重复定义问题
    • 移除了 LFS_CRC 必须带分号的限制
  2. 16位设备兼容性(selimkeles 贡献)

    • 修复了 lfs_fromle32/lfs_frombe32 在16位设备上可能出现的溢出问题
  3. 目录操作稳定性(Hugh-Baoa 发现)

    • 修复了在删除操作期间目录重定位可能导致的双重孤儿问题
  4. 构建工具改进(DvdGiessen 贡献)

    • 修复了当 /tmp 位于不同文件系统时 changeprefix.py 脚本的兼容性问题

性能与资源占用

从资源占用统计来看,v2.11.0 保持了 LittleFS 一贯的轻量级特性:

  • 默认配置下代码大小约17KB,堆栈使用约1.4KB
  • 只读模式代码大小降至约6KB
  • 线程安全模式增加约0.5KB的额外开销

性能基准测试显示读写性能与前一版本持平,保持了稳定的表现。

总结

LittleFS v2.11.0 虽然是一个小版本更新,但包含了多个对开发者有实际价值的改进。特别是文件系统收缩功能的引入和跨平台支持的增强,使得这个嵌入式文件系统更加灵活和易用。对于正在使用或考虑采用 LittleFS 的开发者来说,这个版本值得关注和升级。

随着开源社区的持续贡献,LittleFS 正在不断完善其功能集和兼容性,为嵌入式存储解决方案提供了一个可靠的选择。

littlefs littlefs 项目地址: https://gitcode.com/gh_mirrors/lit/littlefs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虞冕疆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值