1. NVM 技术全景:从 NOR 到 MRAM,我们到底在用什么?

大家好,我是你们这趟 NVM 驱动之旅的向导。在开始写代码之前,咱们得先搞清楚一个最基本的问题:我们到底在和什么样的硬件打交道?

NVM,全称 Non-Volatile Memory,非易失性存储器。说白了,就是断电后数据不丢的存储介质。你手机里的照片、电脑里的文档、嵌入式设备里的固件,全得靠它。

但 NVM 不是一种东西,它是一个大家族。不同成员脾气秉性完全不同,驱动写法也天差地别。我见过不少工程师,拿着 NAND Flash 的驱动思路去调 NOR Flash,结果踩坑踩到怀疑人生。所以,这一章我们先画一张技术地图。

核心观点:没有万能的存储器,只有最合适的方案。驱动开发的第一步,是读懂硬件的数据手册,更要读懂它的物理特性。

1.1 主流 NVM 技术对比:一张表说清差异

先上干货。我把市面上最常见的几种 NVM 技术拉了一张对比表。你写驱动时,最关心的无非就是:怎么读?怎么写?寿命多长?速度多快?

技术类型 存储单元 读速度 写速度 擦除方式 擦写寿命 典型容量 主要用途
NOR Flash 浮栅晶体管 快(随机访问) 慢 块擦除(64KB~256KB) 10万~100万次 1MB~512MB 代码存储、XIP 执行
NAND Flash 浮栅晶体管 较快(页访问) 快 块擦除(128KB~8MB) 1千~10万次 1GB~1TB 大容量数据存储
EEPROM 浮栅晶体管 快 慢(字节级) 字节擦除 100万次 1KB~1MB 参数存储、配置信息
FRAM 铁电晶体 快(类SRAM) 快(类SRAM) 无需擦除 1万亿次以上 4KB~16MB 高速日志、计费数据
MRAM 磁隧道结 快(类SRAM) 快 无需擦除 无限 1MB~256MB 工业控制、航空电子

这张表我建议你收藏。每次选型或者写驱动前,扫一眼,心里就有底了。

1.2 逐个拆解:每种存储器的脾气

NOR Flash:代码的“家”

NOR Flash 最大的特点是支持随机访问。CPU 可以直接在上面执行代码,不需要先把代码拷贝到 RAM 里。这就是所谓的 XIP(eXecute In Place)。

我在一个工业控制器项目里用过 NOR Flash。当时客户要求系统上电后 100ms 内必须响应外部中断。如果用 NAND,得先加载 Bootloader 再搬运代码,时间根本不够。最后选了 NOR,直接 XIP,问题解决。

驱动要点:NOR 的读操作和 SRAM 类似,但写操作前必须先擦除。擦除是以块为单位的,最小擦除块通常是 64KB 或 256KB。如果你只改一个字节,也得把整个块读出来、擦掉、再写回去。这就是所谓的“读-改-写”操作。

NAND Flash:大容量存储的王者

NAND 的存储密度高,成本低,所以 SSD、U 盘、手机存储全是它。但它的缺点也很明显:不能随机访问,只能以页为单位读写(典型页大小 4KB~16KB),以块为单位擦除。

而且,NAND 天生就有坏块。出厂时就有,使用过程中还会产生新的。所以驱动里必须实现坏块管理和ECC 纠错。

避坑指南:我曾经在一个项目里忽略了 NAND 的“位翻转”问题。数据读出来偶尔有一位错了,但应用层没发现,结果导致系统误判。从那以后,我所有的 NAND 驱动都强制开启 ECC,哪怕数据手册说“不需要”。

EEPROM:小而精的参数存储

EEPROM 可以按字节擦写,非常灵活。但容量小、速度慢。适合存一些配置参数、校准数据、设备序列号之类的。

我习惯用 EEPROM 存设备的 MAC 地址和产品序列号。因为这类数据一旦写入,几乎不再修改,但要求绝对可靠。EEPROM 的 100 万次擦写寿命,绰绰有余。

FRAM 与 MRAM:未来的方向

这两种技术都是非易失性 + 高速读写 + 无限寿命。FRAM 靠铁电晶体极化存储数据,MRAM 靠磁隧道结的磁阻效应。

FRAM 的写速度接近 SRAM,而且不需要擦除。我在一个需要频繁记录日志的电力仪表项目里用过 FRAM。以前用 EEPROM,每写一次要等 5ms,日志一多就卡死。换成 FRAM,写一次不到 100ns,完全无感。

MRAM 更贵,但抗辐射能力强,适合航天、军工等极端环境。

1.3 NVM 在嵌入式系统中的应用场景

说了这么多理论,咱们看看实际项目中怎么选。

  • 固件存储:NOR Flash 是首选。因为要 XIP,要快速启动。容量 1MB~32MB 足够。
  • 大容量数据:NAND Flash 或 eMMC(其实就是 NAND + 控制器)。存音视频、文件系统、数据库。
  • 配置参数:EEPROM 或小容量 NOR。存 Wi-Fi 密码、设备 ID、校准系数。
  • 高速日志:FRAM。频繁写入,要求不丢数据,寿命要长。
  • 安全关键系统:MRAM。航空、医疗、汽车,要求极端可靠。
我的经验:选型时不要只看容量和速度。一定要考虑擦写寿命和写入延迟。很多系统崩溃,不是因为代码写错了,而是因为存储器在某个瞬间“写不进去”了。

1.4 知识体系图:NVM 技术全景

下面这张图,是我自己画的技术全景图。它帮你理清不同 NVM 技术之间的关系,以及它们在嵌入式系统中的位置。

NVM 技术全景图 NVM 技术全景图 非易失性存储器 (NVM) 浮栅型 (传统) 新型存储技术 NOR Flash NAND Flash EEPROM FRAM MRAM 代码存储 (XIP) 大容量数据 配置参数 高速日志 安全关键 说明: 浮栅型(NOR/NAND/EEPROM)是当前主流,但擦写寿命和写入速度是瓶颈。 新型存储(FRAM/MRAM)正在崛起,尤其适合需要频繁写入和高可靠性的场景。

1.5 小结:驱动开发的起点

这一章我们走马观花看了一遍 NVM 家族。你可能会觉得信息量有点大。没关系,后面的章节我们会一个一个深入。

记住一句话:驱动是硬件的翻译官。你只有真正理解了硬件的脾气,才能写出高效、稳定的驱动。

给新手的建议:拿到一块新的 NVM 芯片,先别急着写代码。花半天时间,把数据手册里的“AC Characteristics”和“Command Sequence”读三遍。我保证,这半天时间会在后面省你三天调试时间。