存储器件基础:Flash、eMMC、SD卡的特性对比与鸿蒙应用

做文件系统适配,说白了就是跟各种存储器件打交道。你想想看,不同的存储介质,脾气秉性完全不一样。我刚开始接触鸿蒙时,就因为在NAND Flash上用了不适合的擦除策略,导致系统启动慢得像蜗牛。今天咱们就把这些存储器件掰开揉碎了讲清楚。

一、Flash存储器的两大流派:NOR与NAND

Flash存储器是嵌入式设备的标配。它分两种:NOR Flash和NAND Flash。名字听着像,但内部结构天差地别。

1. NOR Flash:随机访问的“老大哥”

NOR Flash最大的特点是什么?支持XIP(就地执行)。也就是说,代码可以直接在Flash上跑,不用先搬到RAM里。我早期做的一个Bootloader项目,就是用NOR Flash直接启动的,省了不少RAM空间。

它的优点很明显:

  • 读取速度快:随机读取性能好,适合存代码
  • 接口简单:跟SRAM接口类似,CPU直接连就能用
  • 可靠性高:坏块率低,基本不用做坏块管理

但缺点也突出:

  • 写入慢:写入前要擦除,擦除单位大(通常64KB-128KB)
  • 容量小:最大也就几十MB,再大成本就上去了
  • 价格贵:每MB成本比NAND高好几倍
我的经验:在鸿蒙设备中,NOR Flash最适合放Bootloader和系统关键配置。比如智能手表的主控芯片,我就用一片8MB的NOR Flash存启动代码,稳定可靠,从来没出过问题。

2. NAND Flash:大容量的“数据仓库”

NAND Flash就不一样了。它容量大、价格低,但操作复杂。我遇到过不少新手,上来就用NAND存代码,结果启动时各种报错——因为NAND不支持XIP,代码必须搬到RAM里才能执行。

NAND的核心特性:

  • 容量大:从几百MB到几TB都有
  • 写入快:页写入速度比NOR快得多
  • 成本低:每GB成本是NOR的十分之一甚至更低

但坑也不少:

  • 有坏块:出厂就有坏块,使用中还会产生新坏块
  • 需要ECC:位翻转是常态,必须做纠错
  • 擦除寿命有限:SLC约10万次,MLC/TLC更少
避坑指南:我曾经在一个IoT项目中,直接用裸NAND存日志文件。结果三个月后,频繁出现数据错误。后来一查,是频繁写入导致坏块激增。从那以后,我坚持在NAND上必须跑FTL(闪存转换层)或使用成熟的文件系统。

二、eMMC:集成管理的“省心方案”

eMMC说白了就是NAND Flash + 控制器 + 固件的打包方案。你不需要操心坏块管理、ECC、磨损均衡这些事,控制器全帮你干了。

我特别喜欢eMMC的一点:接口标准化。不管里面用的是哪家的NAND颗粒,对外都是MMC协议。换料时,驱动基本不用改。

eMMC的关键参数:

参数 典型值 说明
容量 4GB - 256GB 主流设备常用8GB/16GB
接口速度 HS400 (400MB/s) 实际受总线限制
擦写寿命 3K - 5K次 MLC颗粒,控制器做均衡
功耗 待机<0.5mA,读写约100mA 比SD卡略高
鸿蒙中的典型场景:eMMC是鸿蒙设备的主力存储。手机、平板、电视盒子,基本都用eMMC。我参与的一个鸿蒙智能音箱项目,用的就是8GB eMMC,跑鸿蒙系统加应用数据,空间刚刚好。

三、SD卡:可插拔的“移动仓库”

SD卡跟eMMC很像,内部也是NAND+控制器。但多了个可插拔的特性。这个特性带来不少麻烦——热插拔、掉电保护、兼容性,都是坑。

我记得有一次调试鸿蒙的SD卡驱动,发现某些卡在写入时突然拔出,再插回去文件系统就挂了。后来加了掉电检测和日志回滚,才算解决。

SD卡的分级:

  • 速度等级:Class 2/4/6/10,UHS-I/UHS-II
  • 应用等级:A1/A2,针对随机读写优化
  • 视频等级:V6/V10/V30/V60/V90,保证持续写入
选型建议:在鸿蒙设备中,如果SD卡用于存系统数据,建议选A2等级的卡。我测试过,A2卡的随机读写性能比普通Class 10卡高出3-5倍,系统响应明显更流畅。

四、四大存储介质特性对比

咱们用一张表把核心差异说清楚:

特性 NOR Flash NAND Flash eMMC SD卡
容量范围 1MB-512MB 128MB-2TB 4GB-256GB 1GB-1TB
读取速度 快(随机) 快(顺序) 中等
写入速度 中等
XIP支持
坏块管理 不需要 需要 内置 内置
接口复杂度 简单 复杂 中等 简单
单位成本 中等 中等
典型应用 Bootloader 数据存储 系统盘 扩展存储

五、鸿蒙设备中的选型决策

在鸿蒙项目里,怎么选存储介质?我一般按这个思路来:

  1. 先看启动要求:如果代码必须就地执行,选NOR Flash。否则,跳过。
  2. 再看容量需求:系统+应用+数据,算总空间。小于64MB,NOR或小容量NAND;大于64MB,eMMC或SD卡。
  3. 考虑可靠性:关键数据(如系统配置)放NOR或eMMC;用户数据放NAND或SD卡。
  4. 评估成本:批量大时,NAND裸片+软件FTL的方案比eMMC便宜30%-50%。
鸿蒙文件系统适配要点:
  • NOR Flash:用JFFS2或SPI-NOR驱动,注意擦除块对齐
  • NAND Flash:用UBIFS,必须开启坏块管理和ECC
  • eMMC:用ext4或F2FS,注意分区对齐和TRIM支持
  • SD卡:用FAT32或exFAT,注意热插拔处理和写保护

六、知识体系总览

下面这张图,把本章的核心逻辑串起来了:

存储器件选型与鸿蒙适配知识体系 鸿蒙设备存储选型 NOR Flash NAND Flash eMMC SD卡 XIP支持 容量小、成本高 大容量、低成本 需坏块管理+ECC 集成控制器 接口标准化 可插拔 兼容性问题多 鸿蒙文件系统适配方案 NOR: JFFS2/SPI-NOR NAND: UBIFS eMMC: ext4/F2FS SD卡: FAT32/exFAT

这张图把存储选型的决策路径和鸿蒙适配方案串在了一起。你从上往下看,先确定用哪种存储介质,再看它的核心特性,最后找到对应的文件系统方案。

最后说一句:存储选型没有银弹。我见过用NOR Flash存视频的,也见过用SD卡跑系统的——结果都不太美好。理解每种介质的脾气,才能做出靠谱的设计。

公众号:蓝海资料掘金营,微信deep3321