常见的嵌入式 文件系统有那些
常见嵌入式文件系统
按使用场景分为:MCU 裸机 / RTOS 轻量文件系统、Linux 嵌入式 Flash 专用文件系统、只读文件系统、块设备通用文件系统。
一、MCU/RTOS 常用(STM32、ESP32、i.MXRT 等小资源平台,SPI Flash/SD 卡)
- FatFS(最普及)
- 实现 FAT12/FAT16/FAT32/exFAT,开源、跨平台、可移植
- 适用:SD 卡、U 盘、eMMC(自带 FTL 的块设备);电脑可直接读取卡内文件
- 缺点:原生不带磨损均衡,掉电容易损坏文件;如果直接跑在裸 SPI NOR 需要额外磨损均衡层
- 典型场景:记录仪 SD 卡、U 盘读写、需要电脑互传文件的产品Espressif ...
- LittleFS(现在 IoT 首选,替代 SPIFFS)
- 专为 SPI NOR Flash 设计,BSD 开源;自带动态磨损均衡 + 原子写(掉电安全),RAM 占用很小
- 支持目录,断电恢复能力强
- 缺点:PC 不能直接读取 flash 镜像;NAND 支持有限
- 典型场景:ESP32、STM32,存储配置、日志、固件,智能硬件、工业采集器Espressif ...
- SPIFFS
- 早期 ESP 系列常用,NOR Flash;静态磨损均衡,资源占用低
- 缺点:不支持多级目录,项目基本不再维护,新项目推荐 LittleFS 替代
- FileX(Azure RTOS / ThreadX)
- 微软 RTOS 配套,商用 RTOS 标配 FAT;搭配 LevelX 做 Flash 磨损均衡,工业 / 汽车设备常用,高可靠
- NVS(不算完整文件系统,键值存储) ESP-IDF 配套,只存少量参数、校准数据,不适合存大文件
二、嵌入式 Linux Flash 专用(NAND/NOR 裸 Flash,需要坏块管理 + 磨损均衡)
- UBIFS(推荐) 取代 JFFS2;运行在 UBI 层之上,NAND Flash 首选,压缩、磨损均衡、掉电安全,挂载速度快,现代 Linux 嵌入式主流。
- YAFFS / YAFFS2 老牌 NAND 文件系统,掉电保护强;大量旧手机、工业设备使用;分 GPL / 商业双协议,现在新项目逐步被 UBIFS 替代yaffs.net
- JFFS2 早期 NOR Flash 文件系统,压缩、磨损均衡;挂载极慢(全扫描 Flash),新项目不推荐。
三、只读文件系统(固件镜像,不可写入,rootfs)
- SquashFS Linux 嵌入式最常用只读文件系统,高压缩,节省 Flash 空间,OpenWrt、路由器、工控机 rootfs 标配。
- CramFS / RomFS 极简只读,老设备使用,压缩率一般,现在用得少。
四、块设备通用(eMMC/SD,Linux 系统)
- EXT2/EXT3/EXT4 桌面 Linux 移植,EXT4 在嵌入式 eMMC 大量使用;日志功能保障断电安全,适合大容量 eMMC。缺点:对裸 Flash 不友好,必须用带 FTL 的 eMMC。
- 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

浙公网安备 33010602011771号