Nand Flash 编程应用难点浅析

时间:2017-10-11 15:48来源:ZLG致远电子

摘要:NandFlash存储器是flash存储器的一种,为固态大容量内存的实现提供了廉价有效的解决方案。

Nand Flash 存储器是 flash 存储器的一种,为固态大容量内存的实现提供了廉价有效的解决方案。 NAND 存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,如嵌入式产品中包括数码相机、记忆卡、体积小巧的 U 盘等。

1989年,东芝公司发表了 Nand Flash 结构,强调降低每比特的成本,更高的性能,并且像磁盘一样可以通过接口轻松升级。经过十几年的发展,NAND 应用越来越广泛,但是大多数工程师却仍然不知道关于 NAND 应用的一些难点:分区、ECC 纠错、坏块管理等。只有真正了解 NAND 特性的工程师,才能在应用上得心应手,不会被 Nand Flash 所绊倒。

一、分区
定义分区的实质是定义数据会如何写入 NAND Flash,不同内容的数据写到对应的地址中。一般用户会有多个区,比如 boot、kernel、fs、user 等分区。

分区的描述:分区的地址范围(起始块、结束块),镜像文件大小(Image Size)。

分区的数据存储:镜像文件是从分区的起始块开始存放,如果分区中有坏块,将使用坏块处理策略替换坏块,直到镜像文件结束,如果分区中不够好块存放镜像文件,则烧录失败。

如下图是跳过坏块的镜像文件分区烧写示意图:


 

二、ECC(错误更正)算法
ECC 存在于 NAND 每页的备用区(Spare Area)中,它允许外部系统发现主区的数据是否有误。在大多数情况下,ECC 算法可以纠正误码,NandFlash 在使用中也可能会出现坏块,所以 ECC 是非常有必要的。

不同的用户会可能会使用不同的 ECC 算法,一般来说 ECC 算法由处理器供应商提供,如果编程器软件中无这个 ECC 算法,则需要用户提供 ECC 算法源代码。

如果用户不使用调入文件,而是使用读母片的方式烧录,并且无动态数据,则可以不考虑 ECC 算法,因为母片中的备用区已计算好 ECC,直接将母片的备用区拷贝至其他芯片即可。

三、坏块管理
坏块处理策略定义了在遇到坏块时算法应该如何处理,基本的坏块处理策略有:跳过坏块、替换表(预留块区 Reserve BlockArea,RBA)等等,下面分别对几种坏块处理方案进行说明。

1) 硬拷贝
硬拷贝其实就是遇到坏块什么都不处理,不管好块还是坏块直接烧写按顺序烧写数据,即使校验数据不一致也不报错,这是最简单、直接的处理方法,但是只能适用于数据不需管理的方案;


 

2) 跳过坏块
跳过坏块就是烧录数据时,遇到坏块即跳过此坏块,将数据顺延烧到下一个好块,这样可以保证所有的数据都能烧写到 NAND 存储空间中,但是并不知道数据究竟烧到了哪一位;


 
3) 替换表
此方法是将 NAND 存储空间中预留出一些块作为保留块,当遇到坏块时,在预留的保留块中选一个块来替换坏块,将原来写到坏块的数据写到替换块中;


 
4) BBT(Bad block table)
此方法核心是跳过坏块,但是跳过后需要在 NAND 闪存指定位置写入一个坏块表(Bad block table),下图是 BBT 的结构图。


 

NAND 应用需要注意的点大致整理如上,实际使用中会有灵活的应用方案,需要熟知 NAND 特性、编程器原理的工程师才能设计出合适的方案加以运用。P800Flash 极速编程器融合了 ZLG 致远电子三代 Flash 编程器的特点,全面支持 eMMC、NOR、NAND Flash 的烧录,可提供完善的编程解决方案。
我要投稿
近期活动
帖子推荐更多

Copyright 2008-2017 21dianyuan.com All Rights Reserved 备案许可证号为:津ICP备10002348