banner
NEWS LETTER

嵌入式 Linux 系列 29:MTD、UBI、eMMC 和文件系统选择

Scroll down

嵌入式设备的存储介质差异很大。NOR、NAND、eMMC、SD 卡的特性不同,适合的文件系统和升级方式也不同。选错存储方案,后面会在断电、坏块、寿命和性能上不断补坑。

一、MTD 是什么

MTD 面向原始 Flash 设备,常见于 NOR/NAND。

查看:

1
cat /proc/mtd

输出示例:

1
2
3
mtd0: 00100000 "boot"
mtd1: 00800000 "kernel"
mtd2: 04000000 "rootfs"

MTD 设备通常需要考虑擦除块、坏块和写入对齐。

二、UBI/UBIFS

NAND Flash 常用 UBI/UBIFS。

UBI 负责:

  • 坏块管理。
  • 磨损均衡。
  • 卷管理。

UBIFS 是运行在 UBI 上的文件系统。

常见命令:

1
2
3
4
ubiattach
ubinfo
ubimkvol
mount -t ubifs

NAND 上不要直接套用 eMMC 的思路。

三、eMMC 和 ext4

eMMC 更像块设备:

1
ls /dev/mmcblk*

常用 ext4:

1
2
mkfs.ext4 /dev/mmcblk0p2
mount /dev/mmcblk0p2 /data

eMMC 内部有磨损均衡,但异常断电仍可能造成文件系统问题,所以配置写入仍要原子化。

四、squashfs

只读 rootfs 常用 squashfs:

  • 只读。
  • 压缩率高。
  • 不怕运行时写坏。
  • 适合系统分区。

搭配 data 分区保存运行时数据。

五、文件系统选择

简单建议:

1
2
3
NOR:      squashfs + jffs2
NAND: squashfs + ubifs
eMMC/SD: squashfs/ext4 + ext4 data

最终要根据芯片、Bootloader、内核支持和产品需求决定。

六、验收测试

必须测:

  • 反复断电。
  • data 写满。
  • OTA 中断。
  • 日志持续写入。
  • 长时间运行。
  • 恢复出厂。

存储问题往往不是当天暴露,而是在现场运行一段时间后暴露。

其他文章
目录导航 置顶
  1. 1. 一、MTD 是什么
  2. 2. 二、UBI/UBIFS
  3. 3. 三、eMMC 和 ext4
  4. 4. 四、squashfs
  5. 5. 五、文件系统选择
  6. 6. 六、验收测试
请输入关键词进行搜索