剖析NAND Flash的编程结构
剖析NAND Flash的编程结构 分区(Partition) ? ?? ???定义分区的实质是定义数据会如何写入NAND Flash,不同内容的数据写到对应的地址中。一般用户会有多个区,比如boot、kernel、fs、user等分区。 ? ?? ???分区的描述:分区的地址范围(起始块、结束块),镜像文件大小(Image Size)。 ? ?? ???分区的数据存储:镜像文件是从分区的起始块开始存放,如果分区中有坏块,将使用坏块处理策略替换坏块,直到镜像文件结束,如果分区中不够好块存放镜像文件,则烧录失败。 ? ?? ???如下图是跳过坏块的镜像文件分区烧写示意图: 备用区(OOB)的ECC ? ?? ???ECC 存在于NAND 每页的备用区(Spare Area)中,它允许外部系统发现主区的数据是否有误。在大多数情况下,ECC 算法可以纠正误码,NandFlash在使用中也可能会出现坏块,所以ECC是非常有必要的。 ? ?? ???不同的用户会可能会使用不同的ECC算法,一般来说ECC算法由处理器供应商提供,如果编程器软件中无这个ECC算法,则需要用户提供ECC算法源代码。 ? ?? ???如果用户不使用调入文件,而是使用读母片的方式烧录,并且无动态数据,则可以不考虑ECC算法,因为母片中的备用区已计算好ECC,直接将母片的备用区拷贝至其他芯片即可。 坏块管理(Bad Block Management) ? ?? ???坏块处理策略定义了在遇到坏块时算法应该如何处理,基本的坏块处理策略有:跳过坏块、替换表(预留块区Reserve BlockArea,RBA)等等。 硬拷贝 ? ?? ???硬拷贝其实就是遇到坏块什么都不处理,不管好块还是坏块直接烧写,即使校验数据不一致也不报错; 跳过坏块 ? ?? ???跳过坏块就是遇到坏块跳到下一个好块烧; 替换表 ? ?? ???就是预留一些块作为保留块,是用于替换坏块用,当遇到坏块时,在保留区中选一个块来替换,将原来写到坏块的数据写到替换块中。 BBT(Bad block table) ? ?? ???其实就是使用跳过坏块,然后在Nand闪存指定位置写入一个坏块表(Bad block table),下图是BBT的结构图。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |