NAND Flash与MCU集成的细微之处

浏览:2205来源:本站时间:2020-09-09

在SSD(固态硬盘),移动电话和消费类设备中使用的NAND Flash芯片,通常针对速度和每比特位数进行优化,因此,它们必须使用专用逻辑或应用处理器来处理优化带来的复杂性。 但是,对于NAND Flash连接到MCU的嵌入式系统,其约束是完全不同的。了解这些差异将帮助开发人员避免代价高昂且耗时的错误。


1. 明确需求
为了在面对NAND Flash的细微差别时,做出良好的设计决策,开发人员必须仔细确定系统需求。 首先需要考虑的事项是:
•设备的使用寿命?
•需要的存储空间?
•数据保留时间?
•读/写数据的速度?
•数据组织方式?
•是否需要故障安全?
•可以容忍的设备故障率?

需求明确后,你就可以寻找满足这些要求的方法,在产品设计中集成合适的NAND Flash。


2. NAND Flash基础知识
NAND Flash以页(page)为组成单位,每个页除数据区域外,还包含一个额外的、小的备用区域(spare area),可以用来存储管理信息。页组成块(block)。 Flash以块为单位擦除,以页为单位写入。 一些设备允许部分页编程,但不允许字节写入。 Flash块中的页必须以递增地方式顺序写入,按page0,page1,page2….顺序。 某些设备需要先写入一定数量的页,然后才能擦除块。
Flash的备用区用于存储元数据(meta-data),包括坏块标记和错误纠正码(ECC),NAND组织的简单示例,请参见图1。 不同的NAND Flash其组织结构会有变化,详细信息请阅读设备的参考手册或数据表,了解所选设备的具体行为。


3. 如何选择NAND设备和接口类型

对于MCU开发人员而言,大多数NAND设备过于复杂而无法集成-主要是由于其纠错要求。 通常,SLC(single-level Cell,每个存储单元存放1位数据)Flash需要进行1位校正位,而MLC(Multi Level Cell,单个存储单元可以存储多个位,如2位,4位等)需要进行多位校正位。
MCU开发人员可以从以下三类中选择NAND设备:
1具有内置ECC计算引擎的Flash,MCU不需要处理ECC,大多数SPI NAND器件包含此功能。
2 Flash需要的1位ECC校正可以通过软件完成。
3 MCU集成了带ECC引擎的NAND控制器,能够匹配所选NAND Flash。 通常,MCU集成的NAND控制器只能管理少量位错误(1-8),而应用处理器可能具有更为复杂的ECC引擎。

NAND Flash与MCU的连接有两种方式。 传统方法是使用地址与数据复用的8位数据总线。 另一种方式是SPI接口,其优点是与MCU的接口简单,且大多数SPI接口的NAND Flash设备包含ECC引擎,可以减轻MCU的处理负担。


4. 关注NAND固有特性
使用NAND Flash的复杂性是许多细微差别导致的,这些差别是这种存储介质不可或缺的一部分。通常,Flash密度越高,使用越复杂。以下是需要注意的事项:
出厂坏块信息:出厂时,设备中的某些块即不可用。在设备生产时,将对每个块进行测试,并将测试失败的块标记为坏块。
ECC校验:所有NAND Flash使用过程中,一些位会变得粘滞或状态翻转。Flash密度越大越不稳定。为了满足设备参数,制造商需要指定所需的纠错级别。 ECC存储在每个页的备用区域中。ECC需要大量的计算,纠错的位数越多,工作量越大。
数据保持:使用指定的ECC纠错时,数据可以保持稳定状态的时间。
擦写次数:当指定的ECC不能保护数据之前,每个块可以写入和擦除的次数。
读干扰:对页的读取或写入操作可能会干扰另一页面的内容。
NAND Flash还有许多微妙之处,但并未全部标注在文档中。制造商还对使用场景做出假设,这些并没有记录在案。使用故障安全的软件(如SafeFAT)是最可靠的方法。
通常,给出的错误纠正、数据保持等数字是基于概率计算的,它们倾向于使用“典型”一词,而很少使用“保证”一词。 不同的属性也会相互影响–例如,通常,块的擦除次数越多,数据保持率就越低。 但此类信息无法从产品数据表中获得。 此外,环境条件也会影响这些数字以及Flash使用的寿命。 设计产品时,你应该确保设备在指定的参数范围内运行良好。
如果使用场景接近使用的NAND Flash部件的限制,建议您采取两种措施:
1 为您的应用场景建模设备的寿命

2 插入大量错误测试


5. 无需畏惧软件管理
NAND Flash的管理使用Flash转换层(FTL)。 FTL对应用程序(或文件系统)隐藏Flash的操作细节,仅处理一组扇区,如图2所示。


FTL的开发是一个专业主题。需要考虑的关键因素包括:
1 FTL是故障安全的吗?实现故障安全需要做什么?
2 支持的FLASH类型?
3写入放大值?
4 磨损平衡(wear-leveling)能力?
5 处理边界编程?

6 在应用上下文中的性能要求?


6. 总结
许多类型的NAND Flash可供MCU使用,仔细考虑系统要求,选择合适的NAND Flash部件可以构建强大的存储系统。但设计需要付出大量的努力并了解所选NAND部件的细节,这可能需要专业知识。
京ICP备:京ICP备05011254号-1 版权归北京麦克泰软件技术有限公司所有
北京麦克泰软件技术有限公司