建设网站包括哪些费用,给别人做网站挣钱吗?,网站改版怎样做301,北京宣传片制作目录 前言
一 Nand flash的特性
1 存储结构
2 OOB区域
3 位翻转
4 坏块及ECC
二 Nand系统裸片量产烧录
1 坏块处理策略
2 分区(Partition)
3 纠错码(Error Correction Codes#xff0c;ECC)
4. 擦除坏块 #x1f388;个人主页#x1f388;#xff1a;linux_嵌入式…目录 前言
一 Nand flash的特性
1 存储结构
2 OOB区域
3 位翻转
4 坏块及ECC
二 Nand系统裸片量产烧录
1 坏块处理策略
2 分区(Partition)
3 纠错码(Error Correction CodesECC)
4. 擦除坏块 个人主页linux_嵌入式大师之路的博客-CSDN博客欢迎 点赞✍评论⭐收藏希望本文能对你有所帮助欢迎在评论区交流讨论 前言 为什么烧录Nand Flash经常失败?为什么烧录成功了一部分Nand芯片贴板之后系统却运行不起来?为什么不能像Nor Flash一样接通过烧录器读取母片…等等你是否了解过Nand Flash的特性吗?
一 Nand flash的特性
1 存储结构 Nand 闪存由多个Block组成每一个Block又由多个Page组成Page的大小一般为51216Bytes 、2K64Bytes以及4096128BytesPage是读取和编程的基本单位而擦除的基本单位是Block。
NAND Flash的页包含主区(Main Area)和备用区(Spare Area)两个域“主区”也常称作数据区备用区是保留区域一般用来标记坏块(bad block)和存放ECC的值当然有些文件系统使用备用区记录擦除次数、文件组织数据等。
2 OOB区域
NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间它就是64个字节的空闲区(每512字节的扇区有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件中执行但是硬件执行有明显的性能优势。在编程操作期间ECC单元根据扇区中存储的数据来计算误码校正代码。数据区的ECC代码然后被分别写入到各自的空闲区。当数据被读出时ECC代码也被读出运用反操作可以核查读出的数据是否正确。 有可能采用ECC算法来校正数据错误。能校正的错误的数量取决于所用算法的校正强度。在硬件或软件中包含ECC就提供了强大的系统级解决方案。最简单的硬件实现方案是采用简单的汉明(Simple Hamming)码但是只能校正单一位错误。瑞德索罗门(Reed-Solomon)码提供更为强大的纠错并被目前的控制器广为采用。此外BCH码由于比瑞德索罗门方法的效率高应用也日益普及。用软件执行NAND闪存的区块管理。该软件负责磨损评级或逻辑到物理映射。该软件还提供ECC码如果处理器不包含ECC硬件的话。 编程或擦除操作之后重要的是读状态寄存器因为它确认是否成功地完成了编程或擦除操作。如果操作失败要把该区块标记为损坏且不能再使用。以前已编写进去的数据要从损坏的区块中搬出转移到新的(好的)存储块之中。2Gb NAND的规范规定它可以最多有40个坏的区块这个数字在器件的生命周期(额定寿命为10万次编程/擦除周期)内都适用。一些有坏块的NAND器件能够出厂主要就归根于其裸片面积大。管理器件的软件负责映射坏块并由好的存储块取而代之。 利用工厂对这些区块的标记软件通过扫描块可以确定区块的好坏。坏块标记被固定在空闲区的第一个位置(列地址2048)。如果在0或1页的列地址2048上的数据是“non-FF”那么该块要标记为坏并映射出系统。初始化软件仅仅需要扫描所有区块确定以确定哪个为坏然后建一个坏块表供将来参考。
FM25S01A ECC区域 3 位翻转 在 NAND 闪存是通过对存储单元(Cell)进行充电来完成数据存储的存储单元的阈值电压就对应着数据值。当读取的时候通过将它的阈值电压与参考点对比来获得其数据值。对SLC 而言就只有两种状态和一个参考点。而对于2-Bits 的MLC 而言它有4 种状态和三个参考点。TLC就更多状态和参考点。当读出的数据值与编程时数据值对应的阈值电压不相匹配时表明数据发生了位翻转就带来了可靠性问题。导致位翻转的最常见原因是“编程干扰”导致的阈值电压漂移。
4 坏块及ECC 位翻转的发生是随机的且比特误码的数量会随着擦写次数的增加而增加。但是只要比特误码的数量在ECC 能够纠正的范围内数据的完整性就始终有保障。在有些点每页的比特误码有可能很接近ECC 所能纠正的极限NAND 的控制系统必须严防比特误码超过可纠错的范围否则就可能造成数据丢失或者系统无法正常工作。因此这些块必须要标记为坏块。坏块永远不应该再用来存储数据。由于坏块的产生是不可避免的NAND 制造商在对裸片测试时会选择对某些块进行坏块标记而不是放弃整个裸片所以大多数NAND 在出厂时就已经存在标记为坏块的块。如果一个NAND 的块被标记为坏块那么NAND 的容量就永久性的减小了。
二 Nand系统裸片量产烧录 为了提高生产效率一般会使用母片量产烧录或者采用usb一拖多的方式这里主要介绍母片烧录的情况。由于烧录器厂家并不知道存储驱动层对Nand各种特性的处理方式所以不加正确配置就进行烧录的话往往出现以下情况 烧录失败经常是校验通不过。烧录通过但是部分芯片贴板之后系统运行不起来或者运行起来某些模块出现一些误与异常这些大多不是烧录器本身的问题而是裸片烧录Nand系统时几个重要的配置未设置好。 1 坏块处理策略
针对不同工艺、容量的NAND存储系统采用适当的ECC算法是应该的要保证系统的可靠性甚至是必须的。ECC纠错码一般存放在备用区中对一整页或将页分成若干节的数据进行计算而得。数据烧录之前需要准备好ECC(硬件ECC除外)如果是纯数据则需要使用ECC算法来生成。Nand裸片量产中知道ECC算法的纠错能力(纠错位数)是很重要的因为要保证生产效率烧录器如果采用ECC来进行校验数据是不实际的而通过简单数据比对就可以知道数据的位翻转个数如果翻转个数范围在ECC算法的纠错范围之内则认为校验应该是通过的。
坏块一般是根据芯片的坏块标记位置进行识别的而坏块处理策略定义了在遇到坏块时算法应该如何处理。策略算法负责将本来应该写到坏块的内容写到其它可选的好块中。最常用的坏块处理策略是跳过坏块其他典型的还有带BBT的跳过坏块及预留块区等。跳过坏块的处理策略是最基本最常用的坏块替换策略。当烧录中遇到坏块时算法简单地跳过坏块而将数据写入下一个好块。它会造成物理数据和逻辑数据的位置偏移这通常需要分区来解决这个问题。
2 分区(Partition)
使用分区的方案可以确保有效数据可以存到预先指定的物理块区内即便每块Nand Flash的坏块位置不一致。
当使用跳过坏块的替换策略时坏块会导致数据顺移到下一个好块。如果设置了分区就可以指导烧录器确定数据的边界确保数据文件不会侵占邻近的分区。 3 纠错码(Error Correction CodesECC) 针对不同工艺、容量的NAND存储系统采用适当的ECC算法是应该的要保证系统的可靠性甚至是必须的。ECC纠错码一般存放在备用区中对一整页或将页分成若干节的数据进行计算而得。数据烧录之前需要准备好ECC(硬件ECC除外)如果是纯数据则需要使用ECC算法来生成。Nand裸片量产中知道ECC算法的纠错能力(纠错位数)是很重要的因为要保证生产效率烧录器如果采用ECC来进行校验数据是不实际的而通过简单数据比对就可以知道数据的位翻转个数如果翻转个数范围在ECC算法的纠错范围之内则认为校验应该是通过的。
4. 擦除坏块
小心不要擦除坏块标记这一点非常非常重要。工厂在宽温和宽电压范围内测试了NAND一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作但是将来可能会失效。如果坏块信息被擦除就无法再恢复。