nand flash 扇区的管理以及初始化
(1)首先需要了解NAND FLASH的结构。如图:
以镁光MT29F4G08BxB Nand Flash为例,这款Flash(如上图)以4个扇区(sector)组成1个页(page),64个页(page)组成1个块(block),4096个块(block)构成整个Flash存储器;由于每个扇区的容量是512 字节(bytes),整个Flash容量为4224M Bit(相当于528M字节),去掉备用区域用于存放ECC数据校验16M(虚线部分),就是这个片子的容量512M字节。其他型号的Flash也是同样由扇区组成页、由页组成块、块组成整个存储设备,只是扇区、页、块的数量多少有区别而已。
在Flash的生产制造过程中,由于生产工艺的缺陷,很容易在Flash中产生不能使用的坏区域,如果在U盘中要使用这样的Flash,就必须使用所谓的“量产工具”;U盘量产工具其实就是一种集坏区域扫描和Flash管理系统装载于一身的工具。常规U盘主控的扫描是以块为单位,扫描即往每一个块里写入数据,然后将读出的数据与写入的数据比较,如果数据有误则把该块标为“坏块”。扫描完成后就是将Flash管理系统装载到Flash里面,Flash管理系统就会利用扫描产生的坏块表对整个Flash进行读写管理,这样就完成了整个量产动作,U盘也就可以正常使用了。所以U盘显示的容量与实际所用的Flash容量差异来源于不能存储信息的坏块和Flash管理系统的占用块。坏块越多,做出的U盘容量越低;而Flash管理系统占用的块是没有办法避免,就像我们的电脑安装操作系统要占用硬盘空间一样。
当然这里还涉及到一个ECC纠错能力的问题,假设对这个Flash进行扫描的定义的ECC纠错能力为1bit,只有数据出现超过1bit错误的块才会被标记为坏块。这个时候需要区分块纠错和扇区纠错的差别,假设任何一个块里有任何一个扇区(512bytes)存在超出1bit的错误,常规主控在扫描的时候就会判断整个块为坏区域,这样将损失整个块128Kbytes的容量;但是当使用扇区纠错的主控时,同样1bit ECC纠错,他会直接去判断这个块里哪些是超出1bit错误的扇区,从而将其剔除,损失的只是每个真正有错误扇区的512bytes容量,从而保留了其余没有错误的扇区,这样Flash的利用率可以得到极大的提高。
(2) 初始化用的命令序列
(3)NAND的驱动程序
所谓Nand flash的驱动也就是对Nand flash controller编程(发送命令/写寄存器都是同样的意思)。驱动程序的结构大同小异,区别在于每家芯片的Nand flash controller的设计不同,所以对controller的编程的部分是不同的。对于硬件ecc来说,基本的驱动包括下述功能:擦除block、读写page、ecc判断、坏块标识、读取Nand状态、等待Nand、复位Nand、初始化等;初始化中要开辟驱动程序需要的memory,设置工作模式(page大小、block大小、时钟频率、ecc模式等),和对函数指针赋值。
驱动是分层的,以上是最底层的chip的驱动,是为了上层MTD服务的。以读page为例:
chip->cmdfunc(MTD, NAND_CMD_READ0, 0x00, page);//先发读命令,由controller将读命令发给nand flash
chip->ecc.read_page(MTD, chip, buf);//然后读取数据
nand flash 扇区的管理以及初始化相关推荐
- linux nand 坏块_Linux内核中NAND Flash坏块管理
由于NAND Flash的现有工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND芯片出厂的时候,厂家只能保证block 0不是坏块,对于其它block,则均有可 ...
- nand flash坏块管理OOB,BBT,ECC
0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 ...
- Nand Flash基础知识与坏块管理机制的研究
概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...
- STM32F407 FSMC驱动MT29F4G08A NAND FLASH源代码分享
一.MT29F4G08A概述 MT29F4G08是一颗 512MB 的 NAND FLASH 芯片相对于 SPI FLASH( W25Q256)和 SD 卡等存储设备,NAND FLASH 采用 8 ...
- NAND FLASH 内存详解与读写寻址方式
目录: 第一章 绪论 1.1 课题来源 1.2 研究背景与意义 1.2.1 Flash介绍 1.2.2 NAND Flash介绍 1.2.3 NAND Flash与NOR Fl ...
- NAND FLASH 读写操作 简介
NAND FLASH 内存详解与读写寻址方式 一.内存详解 NAND闪存阵列分为一系列128kB的区块(block),这些区块是 NAND器件中最小的可擦除实体.擦除一个区块就是把所有的位(bit)设 ...
- nand flash 个人觉得写得比较好的文章
[详解]如何编写Linux下Nand Flash驱动 版本:v2.2.1 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flas ...
- nand flash 经典 全面 ------如何编写Linux下Nand Flash驱动
Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开 ...
- Nand flash(一)硬件实现机制
Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device). ...
最新文章
- 中台之上(十一):企业级业务架构设计的“五难”
- tomcat的server.xml详解
- 【NLP】从0梳理1场NLP赛事!
- 超3000岗位!腾讯产业互联网新年大扩招!
- 浏览器怎么清理缓存_Mac系统浏览器缓存清理工具
- 1.7 什么时候该改变开发_测试集和指标
- js判断html存不存在某个属性,javascript如何判断对象是否存在某属性?
- Spring在多线程中bean的注入问题
- 一文详解深度相机之TOF成像
- 微型计算机工作最小时间单位,2010~2011学年第1学期微机原理2试卷A(答案)
- linux驱动开发(一):一个最简单的内核驱动程序
- Java常见笔试题(99.9%必问)
- 得到app产品体验报告
- 开场PPT动画怎么做炫酷
- 【​观察】一部《天龙八部》,缘起“六脉神剑”
- 万万没想到,“红孩儿” 竟然做了程序员,还是 CTO!
- 荧光量子产率计算机模拟,如何提高荧光染料的量子产率,或许可以从这里找到答案...
- TCP协议中的Ack和Seq号
- Linux的bind服务
- 计算机用户没有权限怎么办,电脑软件没权限怎么办
热门文章
- python 三引号_Python 字符串
- pcss评分_GTA5画质设置 N卡画质选项设置指南
- html 中如何写js代码提示错误,javascript怎么进行错误处理?
- Photoshop CS6软件安装教程
- ftp 服务器的目录文件是否存在,ftp服务器的目录文件是否存在
- java线程中notify_Java多线程中关于notify和wait
- 丰田pcwin是什么软件_丰田工机PCWin软件通讯设置及联机操作重点提示 - 图文 -...
- 华为云计算之存储的分类
- Zookeeper分布式一致性原理(四):Zookeeper简介
- 进程间通信的方式(三):消息队列