存储器件基础: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高好几倍
2. NAND Flash:大容量的“数据仓库”
NAND Flash就不一样了。它容量大、价格低,但操作复杂。我遇到过不少新手,上来就用NAND存代码,结果启动时各种报错——因为NAND不支持XIP,代码必须搬到RAM里才能执行。
NAND的核心特性:
- 容量大:从几百MB到几TB都有
- 写入快:页写入速度比NOR快得多
- 成本低:每GB成本是NOR的十分之一甚至更低
但坑也不少:
- 有坏块:出厂就有坏块,使用中还会产生新坏块
- 需要ECC:位翻转是常态,必须做纠错
- 擦除寿命有限:SLC约10万次,MLC/TLC更少
二、eMMC:集成管理的“省心方案”
eMMC说白了就是NAND Flash + 控制器 + 固件的打包方案。你不需要操心坏块管理、ECC、磨损均衡这些事,控制器全帮你干了。
我特别喜欢eMMC的一点:接口标准化。不管里面用的是哪家的NAND颗粒,对外都是MMC协议。换料时,驱动基本不用改。
eMMC的关键参数:
| 参数 | 典型值 | 说明 |
|---|---|---|
| 容量 | 4GB - 256GB | 主流设备常用8GB/16GB |
| 接口速度 | HS400 (400MB/s) | 实际受总线限制 |
| 擦写寿命 | 3K - 5K次 | MLC颗粒,控制器做均衡 |
| 功耗 | 待机<0.5mA,读写约100mA | 比SD卡略高 |
三、SD卡:可插拔的“移动仓库”
SD卡跟eMMC很像,内部也是NAND+控制器。但多了个可插拔的特性。这个特性带来不少麻烦——热插拔、掉电保护、兼容性,都是坑。
我记得有一次调试鸿蒙的SD卡驱动,发现某些卡在写入时突然拔出,再插回去文件系统就挂了。后来加了掉电检测和日志回滚,才算解决。
SD卡的分级:
- 速度等级:Class 2/4/6/10,UHS-I/UHS-II
- 应用等级:A1/A2,针对随机读写优化
- 视频等级:V6/V10/V30/V60/V90,保证持续写入
四、四大存储介质特性对比
咱们用一张表把核心差异说清楚:
| 特性 | NOR Flash | NAND Flash | eMMC | SD卡 |
|---|---|---|---|---|
| 容量范围 | 1MB-512MB | 128MB-2TB | 4GB-256GB | 1GB-1TB |
| 读取速度 | 快(随机) | 快(顺序) | 快 | 中等 |
| 写入速度 | 慢 | 快 | 快 | 中等 |
| XIP支持 | 是 | 否 | 否 | 否 |
| 坏块管理 | 不需要 | 需要 | 内置 | 内置 |
| 接口复杂度 | 简单 | 复杂 | 中等 | 简单 |
| 单位成本 | 高 | 低 | 中等 | 中等 |
| 典型应用 | Bootloader | 数据存储 | 系统盘 | 扩展存储 |
五、鸿蒙设备中的选型决策
在鸿蒙项目里,怎么选存储介质?我一般按这个思路来:
- 先看启动要求:如果代码必须就地执行,选NOR Flash。否则,跳过。
- 再看容量需求:系统+应用+数据,算总空间。小于64MB,NOR或小容量NAND;大于64MB,eMMC或SD卡。
- 考虑可靠性:关键数据(如系统配置)放NOR或eMMC;用户数据放NAND或SD卡。
- 评估成本:批量大时,NAND裸片+软件FTL的方案比eMMC便宜30%-50%。
- NOR Flash:用JFFS2或SPI-NOR驱动,注意擦除块对齐
- NAND Flash:用UBIFS,必须开启坏块管理和ECC
- eMMC:用ext4或F2FS,注意分区对齐和TRIM支持
- SD卡:用FAT32或exFAT,注意热插拔处理和写保护
六、知识体系总览
下面这张图,把本章的核心逻辑串起来了:
这张图把存储选型的决策路径和鸿蒙适配方案串在了一起。你从上往下看,先确定用哪种存储介质,再看它的核心特性,最后找到对应的文件系统方案。
公众号:蓝海资料掘金营,微信deep3321