NandFlash OOB及UBI文件系统分析
Nand Flash,每一个页,对应一个空闲区域(OOB),这个区域是基于Nand Flash的硬件特性,数据在读写的时候容易出错,为了保证数据的正确性,就产生了这样一个检测和纠错的区域,用来放置数据的校验值。OOB的读写操作,一般都是随着页的操作一起完成,也就是在读写页的时候,对应的OOB就产生了,那么OOB有什么用途呢?
1). 标记是否存在坏块
1.为什么会出现坏块
由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。坏块的特性是:当编程/擦除这个块时,会造成Page Program和Block Erase操作时的错误,相应地反映到Status Register的相应位。
2.坏块的分类
总体上,坏块可以分为两大类:(1)固有坏块:这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将每个坏块第一个page的spare area的第6个byte标记为不等于0xff的 值。(2)使用坏块:这是在NAND Flash使用过程中,如果Block Erase或者Page Program错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。为了和固有坏块信息保持一致,将新发现的坏块的第一个page的 spare area的第6个Byte标记为非0xff的值。
3.坏块管理
根据上面的这些叙述,可以了解NAND Flash出厂时在spare area中已经反映出了坏块信息,因此, 如果在擦除一个块之前,一定要先check一下第一页的spare area的第6个byte是否是0xff,如果是就证明这是一个好块,可以擦除;如果是非0xff,那么就不能擦除,以免将坏块标记擦掉。 当然,这样处理可能会犯一个错误―――“错杀伪坏块”,因为在芯片操作过程中可能由于 电压不稳定等偶然因素会造成NAND操作的错误。但是,为了数据的可靠性及软件设计的简单化,还是需要遵照这个标准。
4. 坏块处理
使用过程中产生的坏块,就需要将这个块作为坏块来处理,为了与固有的坏块信息保持一致,也需要将新发现的坏块的第一个page的spare eare的第6个Byte标记为非0xff的值。
可以用BBT:bad block table,即坏块表来进行管理。各家对nand的坏块管理方法都有差异。比如专门用nand做存储的,会把bbt放到block0,因为第0块一定是好的块。但是如果nand本身被用来boot,那么第0块就要存放程序,不能放bbt了。 有的把bbt放到最后一块,当然,这一块坚决不能为坏块。 bbt的大小跟nand大小有关,nand越大,需要的bbt也就越大。
2). 存储ECC校验
1. ECC校验
ECC(Error Checking and Correction),是一种用于Nand Flash的差错检测和修正的算法。由于操作的时序和电路稳定性等原因,常常会出现一些bit出错,也就是原来的某个位,本来是0而变成了1,或者本来是1而变成0。从现象来看,问题其实看起来并不是特别的严重,但是如果恰好某个重要的文件的某一位发生了变化,那么问题就大了,可能会导致此时文件不能运行,如果这个文件是一个影响系统的程序,那么直接将导致系统会出现问题,所以对于Nand Flash就出现了这样一个机制。它能纠正1个bit的错误和检测出2个bit的错误,对于1bit以上的错误无法纠正,而对于2bit以上的错误不能保证能检测。对于ECC其纠错算法是什么样的呢?
1)当往Nand Flash写入数据时候,每256个字节生成一个ECC校验,针对这些数据会生成一个ECC校验码,然后保存到对应的page的OOB数据区。
2)当读取Nand Flash的数据时候,每256个字节就会生成一个ECC校验,那么对于这些数据就会计算出一个ECC校验码,然后将从OOB中读取存储的ECC校验和计算的ECC校验想比较,
https://blog.csdn.net/caijiwyj/article/details/89762497
NandFlash OOB及UBI文件系统分析相关推荐
- 光盘隐藏文件夹 linux,linux常用命令大全2--挂载/dpkg/文件系统分析/apt/光盘/关机...
挂载一个文件系统 mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 umount /dev/hda2 卸载一个叫做hda2 ...
- 京东 ChubaoFS 分布式文件系统分析
ChubaoFS(CFS)是京东开发的一分布式文件系统和对象存储系统.其主要声称是云原生的分布式文件系统,主要用于k8s容器环境. CFS是一个分布式的文件系统,支持多元数据服务器,支持posix接口 ...
- linux ext4文件系统分析,LinuxEXT4文件系统分析
ISSN1009-3044 第7卷第年5月)14期(2011电脑知识与技术ComputerKnowledgeandTechnology Vol.7,No.14,May2011,pp.3443-3446 ...
- linux ubi 分区,Linux最新UBI文件系统介绍
嵌入式linux中文站关注嵌入式linux文件系统的发展.在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs.jffs2.yaffs2等文件系统.它们也都是基于文 ...
- 解压ubi文件_制作ubi文件系统
制作 ubi 文件系统 目录 开发环境 ................................................................................ ...
- 解压ubi文件_请问为什么AM3352 NAND FLASH UBI文件系统挂载失败?
本帖最后由 一只耳朵怪 于 2018-6-21 11:08 编辑 各位好: 在NAND FLASH中写入ubi文件系统,内核启动时出现挂载失败. SDK:ti-processor-sdk-linux- ...
- 无法扩展该卷 因为群集的数量将超过文件系统_Ubifs文件系统分析
转载是一种动力 分享是一种美德 1. 引言 UBIFS,Unsorted Block Image File System,无排序区块图像文件系统.它是用于固态硬盘存储设备上,并与LogFS相互竞争, ...
- Android文件系统分析
感谢conowen大神 原文地址:http://blog.csdn.net/conowen/article/details/7251057 1.Android文件系统的结构 官方Android源码编译 ...
- UBIFS文件系统分析六之wear-leveling
2011-03-08 14:34:56 分类: LINUX 在本文的开头,先接本章讲一下EBA,什么是EBA,Eraseblock Association. 在上次提到structubi_volume ...
最新文章
- shell脚本之 if,case,for的用法
- 面试官比较看重简历中的哪些维度,有什么写简历的技巧、建议和总结?
- Nat. Mach. Intell. | 少量数据的生成式分子设计
- getCacheDir用法
- mysql数据库DDL操作
- 无线覆盖项目地勘——无线地勘记录
- MySQL binlog和redo/undo的概念
- java信号灯_java 多线程-信号灯法
- java 父类 超类_Java超类-java.lang.object
- 大数据_MapperReduce_Hbase相关面试题_补充说明---Hbase工作笔记0030
- java正则出现次数_正则表达式(二)—匹配次数的正则
- MySQL MHA详解(二)——实战配置
- python类的属性前加上双下划线_Python中使用双下划线防止类属性被覆盖问题
- 【产业互联网周报】罗永浩AR创业公司获美团领投;英特尔自动驾驶子公司Mobileye敲定IPO条款;星环科技登陆科创板...
- 华为老总任正非给公司患抑郁症员工的一封信
- 安装kanzi-平台要求
- JAVA泛型通配符T,E,K,V区别,T以及ClassT,ClassT的区别
- Mac常见问题:如何在Mac中查看多张图片
- coco数据集百度网盘下载
- Linux命令——ln命令
热门文章
- java中 jacob作用_【JAVA】JACOB使用简介
- 给网站添加一个初音未来代码
- 怎么打开Office 2007 Excel加密文档
- 打印机一直显示打印服务器错误,打印机老显示状态错误怎么办_打印机显示打印错误状态怎么弄-win7之家...
- 第一次走绿道,从长岭陂到梅林水库_我是亲民_新浪博客
- CF698A - Vacations
- linux终端查看文件夹图片,如何在Linux终端中显示图片
- 提问也能拿书,解惑却要送书!安卓巴士就是这么好!来拿书吧!
- 创新 就是以色列人的呼吸
- 信息系统项目管理师(2022年) —— 第 24 章 项目管理成熟度模型