常见的嵌入式 文件系统有那些

常见嵌入式文件系统

按使用场景分为:MCU 裸机 / RTOS 轻量文件系统、Linux 嵌入式 Flash 专用文件系统、只读文件系统、块设备通用文件系统。

一、MCU/RTOS 常用(STM32、ESP32、i.MXRT 等小资源平台,SPI Flash/SD 卡)

  1. FatFS(最普及)
    • 实现 FAT12/FAT16/FAT32/exFAT,开源、跨平台、可移植
    • 适用:SD 卡、U 盘、eMMC(自带 FTL 的块设备);电脑可直接读取卡内文件
    • 缺点:原生不带磨损均衡,掉电容易损坏文件;如果直接跑在裸 SPI NOR 需要额外磨损均衡层
    • 典型场景:记录仪 SD 卡、U 盘读写、需要电脑互传文件的产品Espressif ...
  2. LittleFS(现在 IoT 首选,替代 SPIFFS)
    • 专为 SPI NOR Flash 设计,BSD 开源;自带动态磨损均衡 + 原子写(掉电安全),RAM 占用很小
    • 支持目录,断电恢复能力强
    • 缺点:PC 不能直接读取 flash 镜像;NAND 支持有限
    • 典型场景:ESP32、STM32,存储配置、日志、固件,智能硬件、工业采集器Espressif ...
  3. SPIFFS
    • 早期 ESP 系列常用,NOR Flash;静态磨损均衡,资源占用低
    • 缺点:不支持多级目录,项目基本不再维护,新项目推荐 LittleFS 替代
  4. FileX(Azure RTOS / ThreadX)
    • 微软 RTOS 配套,商用 RTOS 标配 FAT;搭配 LevelX 做 Flash 磨损均衡,工业 / 汽车设备常用,高可靠
  5. NVS(不算完整文件系统,键值存储) ESP-IDF 配套,只存少量参数、校准数据,不适合存大文件

二、嵌入式 Linux Flash 专用(NAND/NOR 裸 Flash,需要坏块管理 + 磨损均衡)

  1. UBIFS(推荐) 取代 JFFS2;运行在 UBI 层之上,NAND Flash 首选,压缩、磨损均衡、掉电安全,挂载速度快,现代 Linux 嵌入式主流。
  2. YAFFS / YAFFS2 老牌 NAND 文件系统,掉电保护强;大量旧手机、工业设备使用;分 GPL / 商业双协议,现在新项目逐步被 UBIFS 替代yaffs.net
  3. JFFS2 早期 NOR Flash 文件系统,压缩、磨损均衡;挂载极慢(全扫描 Flash),新项目不推荐。

三、只读文件系统(固件镜像,不可写入,rootfs)

  1. SquashFS Linux 嵌入式最常用只读文件系统,高压缩,节省 Flash 空间,OpenWrt、路由器、工控机 rootfs 标配。
  2. CramFS / RomFS 极简只读,老设备使用,压缩率一般,现在用得少。

四、块设备通用(eMMC/SD,Linux 系统)

  1. EXT2/EXT3/EXT4 桌面 Linux 移植,EXT4 在嵌入式 eMMC 大量使用;日志功能保障断电安全,适合大容量 eMMC。缺点:对裸 Flash 不友好,必须用带 FTL 的 eMMC。
  2. F2FS 专为闪存类块设备(eMMC/SSD)设计,手机安卓原生文件系统,随机写性能优秀,适合频繁日志写入场景。

选型快速对照表

表格

文件系统 适用存储 掉电安全 磨损均衡 典型平台
FatFS SD/U 盘 /eMMC ❌ 无(需额外层) 单片机、RTOS
LittleFS SPI NOR Flash ✅ ✅ ESP32、STM32 IoT
UBIFS Raw NAND Flash ✅ ✅ Linux 工控、网关
YAFFS2 Raw NAND ✅ ✅ 旧工业 / 消费 Linux
SquashFS NOR/NAND(只读) — — Linux 固件 rootfs
EXT4 eMMC ✅(日志) eMMC 硬件 FTL Linux 单板机
F2FS eMMC ✅ eMMC 硬件 FTL 安卓、大容量记录仪

选型简单口诀

  • SD 卡、需要电脑拷文件 → FatFS
  • 单片机 SPI NOR Flash,存配置日志,怕断电丢数据 → LittleFS
  • Linux 裸 NAND Flash → UBIFS
  • Linux 只读根文件系统 → SquashFS
  • Linux eMMC 大容量系统 → EXT4 / F2FS
posted @ 2026-10-20 10:21  在路上163  阅读(3)  评论(0)    收藏  举报