linux nand 坏块_Nand Flash 中的坏块(Bad Block)

Nand Flash 中,一个块中含有 1 个或多个位是坏的,就称为其为坏块 Bad Block。

坏块的稳定性是无法保证的,也就是说,不能保证你写入的数据是对的,或者写入对了,读

出来也不一定对的。与此对应的正常的块,肯定是写入读出都是正常的。

坏块有两种:

(1) 出厂时就有存在的坏块:

一种是出厂的时候,也就是,你买到的新的,还没用过的 Nand Flash,就可以包含了坏块。

此类出厂时就有的坏块,被称作 factory (masked) bad block 或 initial bad/invalid

block,在出

厂之前,就会做对应的标记,标为坏块。

(2) 使用过程中产生的坏块:

第二类叫做在使用过程中产生的,由于使用过程时间长了,在擦块除的时候,出错了,说明

此块坏了,也要在程序运行过程中,发现,并且标记成坏块的。具体标记的位置,和上面一

样。这类块叫做 worn-out bad block。即用坏了的块。

坏块的标记

具体标记的地方是,对于现在常见的页大小为 2K 的 Nand

Flash,是块中第一个页的 oob 起

始位置(关于什么是页和 oob,下面会有详细解释)的第 1 个字节(旧的小页面,pagesize

是 512B 甚至 256B 的 Nand Flash,坏块标记是第 6 个字节) 如果不是

0xFF, 就说明是坏块。

相对应的是,所有正常的块,好的块,里面所有数据都是 0xFF 的。

不过,对于现在新出的有些 Nand Flash,很多标记方式,有些变化,有的变成该坏块的第一

个页或者第二个页,也有的是,倒数最后一个或倒数第二个页,用于标记坏块的。

具体的信息,请参考对应的 Nand Flash 的数据手册,其中会有说明。

对于坏块的标记,本质上,也只是对应的 flash 上的某些字节的数据是非 0xFF 而已,所以,

只要是数据,就是可以读取和写入的。也就意味着,可以写入其他值,也就把这个坏块标记

信息破坏了。对于出厂时的坏块,一般是不建议将标记好的信息擦除掉的。

uboot 中有个命令是“nand scrub”就可以将块中所有的内容都擦除了,包括坏块标记,不论

是出厂时的,还是后来使用过程中出现而新标记的。一般来说,不建议用这个。

不过,在实际的驱动编程开发过程中,为了方便起见,我倒是经常用,其实也没啥大碍,呵

呵。不过呢,其实最好的做法是,用“nand erase”只擦除好的块,对于已经标记坏块的块,

不要轻易擦除掉,否则就很难区分哪些是出厂时就坏的,哪些是后来使用过程中用坏的了。

坏块的管理

对于坏块的管理,在 Linux 系统中,叫做坏块管理(BBM,Bad Block

Management)  ,对应

的会有一个表去记录好块,坏块的信息,以及坏块是出厂就有的,还是后来使用产生的,这

个表叫做坏块表(BBT,Bad Block Table) 。在 Linux 内核 MTD 架构下的 Nand Flash

驱动,

和 Uboot 中 Nand Flash 驱动中,在加载完驱动之后,如果你没有加入参数主动要求跳过坏

块扫描的话,那么都会去主动扫描坏块,建立必要的 BBT 的,以备后面坏块管理所使用。

坏块的比例

而关于好块和坏块,Nand Flash 在出厂的时候,会做出保证:

1.关于好的,可以使用的块的数目达到一定的数目,比如三星的

K9G8G08U0M,整个 flash

一共有 4096 个块,出厂的时候,保证好的块至少大于 3996 个,也就是意思是,你新买到这

个型号的 Nand Flash,最坏的可能, 有 3096-3996=100 个坏块。不过,事实上,现在出

厂时的坏块,比较少,绝大多数,都是使用时间长了,在使用过程中出现的。

2.保证第一个块是好的,并且一般相对来说比较耐用。做此保证的主要原因是,很多 Nand

Flash 坏块管理方法中,就是将第一个块,用来存储上面提到的 BBT,否则,都是出错几率

一样的块,那么也就不太好管理了,连放 BBT 的地方,都不好找了,^_^。

一般来说,不同型号的 Nand Flash 的数据手册中,也会提到,自己的这个 Nand Flash,最多

允许多少个坏块。就比如上面提到的,三星的 K9G8G08U0M,最多有 100 个坏块。

转自:http://hi.baidu.com/weizhiyuan420/item/506c4cac1b6fefa928ce9df2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程

传统的制造企业管理理念只会阻碍公司经营发展,在管理流程根本上去改变,还得从企业各部门管理思想的转变做基础,优化公司核心业务流程做标准,双向进行改革创新,将管理流程提升为企业的核心竞争力!这将是企业…

date oracle 显示毫秒_Oracle date timestamp 毫秒 - 时间函数总结

yyyy-mm-dd hh24:mi:ss.ff 年-月-日 时:分:秒.毫秒关于毫秒:Oracle 毫秒的存储必须字段类型为 timestamp(6) –数字表示存储的毫秒位数--当前毫秒级时间select to_char(current_timestamp,yyyy-mm-dd hh24:mi:ss.ff6) from dual;--字符串转为…

怎么把字符串变成数组_字符串哈希:从零开始的十分钟包会教程

大家吼啊!这是我下定决心写专栏以来的第二篇文章,请大家多多资瓷!!同样我们先以上次的话起头吧!恭喜你找到了这篇博客!虽然这个标题看起来非常像是nc营销号的标题但是!请相信我一次这是真的&…

body 没有被撑开_body没有高度设置背景色为什么可以全屏显示?

原标题:body没有高度设置背景色为什么可以全屏显示?--- 关于html和body的那些事还记得我们开发全屏页面或者是移动端页面时经常会设置一句话html, body { height: 100%; }是不是只知道用?却不知道怎么回事?原因是,当没…

python抽象工厂模式_Python设计模式之抽象工厂模式

Python设计模式之抽象工厂模式这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下python面向对象编程入门,我们需要不断学习进步"""抽象工厂模式的实现"""import randomclass PetSh…

岗位理解_当面试官问求职者对应聘岗位的理解情况

虽然求职是看的是岗责是否匹配自己的经历和能力,但是很多面试官还是会问这样的问题。对于求职者来说,对岗位的理解其实就是把岗位职责背一遍,但是面试官既然问了,就要说出一些其他内容来。想回答好这个问题,就要清楚面…

指针和引用的区别_浅析指针与引用

关注“杜明c”,每天进步一点点!已经时隔一个多月没有发文章了,主要是太忙了,绝不是偷懒今天给大家聊一聊指针和引用的不同之处在哪里。摘要指针的使用引用的使用二者的区别后话指针的使用在C语言中,我们怎么样在子函数…

python打印所有花数_Python中使用while循环实现花式打印乘法表

废话不多说,直接上代码吧! #python中,while语句用于循环执行程序,即在某个条件下,循环执行某段程序,以处理需要重复处理的相同任务。#while是“当型”循环结构。i1while i20: print(i,end" ") i1…

cad线性标注命令_CAD线性标注如何使用的

我们应该知道每次画完图之后都会进行标注,所以在CAD标注也要活灵活用。但是很多同学还不知道。那么接下来下面是学习啦小编整理的一些关于CAD线性标注如何使用,供您参阅。CAD线性标注使用的方法您可以使用 DIM 命令创建水平、垂直、对齐和半径标注。标注…

转行学python后悔_月薪13k的我为什么要转行学Python?

在职业规划包括人生方向上,选择很重要。一句很经典的话做总结“方向不对,努力白费”。选择自己感兴趣的工作,全力以赴投入其中,“唯有爱的深,才能做的好”当你付出不亚于任何人的努力,出彩是必然的。作为职…

python流式下载处理_流式下载 - 对象存储 OSS - 阿里云

如果要下载的文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。以下代码用于流式下载文件:# -*- coding: utf-8 -*-import oss2# 阿里云主账号AccessKey拥有所有API的访问权…

python程序如何封装成接口_python接口自动化如何封装获取常量的类

这篇文章主要介绍了python接口自动化如何封装获取常量的类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下背景:一、执行case的过程:首先需要,我们能够通过excel获取单元格的内…

华为云备份会上传私密相册吗_2 亿部华为手机背后,这个功能不能忽视

原标题:2 亿部华为手机背后,这个功能不能忽视华为消费者业务昨天宣布,在全球消费者和合作伙伴的热情支持下,凭借华为 P20 系列、Mate20 系列、荣耀10 等多款华为、荣耀机型在市场上的优异表现,2018 年华为智能手机发货…

python批量识别图中文字自动命名_python实现批量命名照片

python批量命名照片的具体代码,供大家参考,具体内容如下废话不多说,上效果图全部代码from tkinter import *import os#添加文件夹路径def rename():path entry.get()filelist os.listdir(path) #获取文件路径total_num len(filelist) #获取…

运行catia_教程 | CATIA宏的录制及应用

首先和大家聊一聊宏。宏,英文Macro,是很多软件中都带有的功能,能够将一系列操作的过程录制下来,即将若干命令集合为一个命令,无论是CATIA还是Office软件,甚至很多游戏也有宏功能。用户基于录制的宏进行适当…

arccatalog点要素显示不完_如果你读不完显示屏说明书,至少读完这几句话吧

如果说起LED显示屏现在能够被那么多人熟知的原因,常规全彩LED显示屏绝对是不可或缺的基础,常规全彩屏有两大分类分别是户外全彩LED显示屏和室内全彩LED显示屏,这个很多人也都知道,但你知道它们的区别在哪吗?让我们力诺…

bootstraptable合并标题_bootstrapTable 合并单元格

/*** 合并单元格* param data 原始数据(在服务端完成排序)* param fieldName 合并属性名称* param colspan 合并列* param target 目标表格对象*/function mergeCells(data,fieldName,colspan,target){//声明一个map计算相同属性值在data对象出现的次数和var sortMap {};for(v…

python爬虫beautifulsoup_python爬虫初步之BeautifulSoup实战

1.学习beautifulsoupStep.1 BeautifulSoup是基于标签的,所以我们第一步要准确定位到我们需- 要信息所在的标签。Step.2 从定位的标签中提取我们需要的信息(一般在属性或者在string中)Step.3 对于提取数据的简单处理2.使用beautifulsoup提取丁香园论坛的回复内容2.1用…

css 模拟器方向_GDS变方向动态循环单剪实验系统VDDCSS

原标题:GDS变方向动态循环单剪实验系统VDDCSS变方向循环简单剪切(VDDCSS)允许在两个方向进行简单剪切,而不是标准单向。这通过具有作用于其上的次级剪切作动器来实现,此剪切作动器与主剪切作动器相差90度排布。当用作可变方向的机器时&#x…

win10安装ipython_windows10下安装IPython notebook 用来查看.ipynb文档

在github下有部分文档是以.ipynb格式存档的,所以在windows10环境下安装IPython notebook,期间遇到一些问题记录下来。步骤:1、到python.org去下载python3.5.msi,因为是windows环境python2.7就算了吧2、将python3.5配置进环境变量(安装时选择加…