NAND Flash硬件读写原理
1.nand接口
s3c2440板的Nand Flash模块由两部分组成:Nand Flash控制器(集成在s3c2440)和Nand Flash存储芯片(K9F1208U0B)两大部分组成。当要访问Nand Flash中的数据时,必须通过Nand Flash控制器发送命令序列才能完成。所以, Nand Flash相当于s3c2440的一个外设,而不位于它的内存地址区.。
Samsung的 K9F1208U0B,数据存储容量为64MB ,采用块页式存储管理。8 个I/O引脚充当数据、地址、命令的复用端口。
2. 重要芯片引脚功能
I/O0-7:复用引脚。可以通过它向nand flash 芯片输入数据、地址、nand flash 命令以及输出数据和操作状态信息。
CLE(Command Latch Enable): 命令锁存允许
ALE(Address Lactch Enable): 地址锁存允许
-CE: 芯片选择
-RE: 读允许
-WE: 写允许
-WP: 在写或擦除期间,提供写保护
R/-B: 读/忙输出
3.芯片内部存储布局
一片Nand flash 为一个设备(device), 其数据存储分层为:
1设备(Device) = 4096 块(Blocks)
1块(Block) = 32 页/ (Pages/rows) ;页与行是相同的意思,叫法不一样
1页(Page) = 528 字节(Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
在每一页中,最后16 个字节 (又称OOB)用于Nand Flash 命令执行完后设置状态用,剩余512 个字节又分为前半部分和后半部分。可以通过Nand Flash 命令00h/01h/50h 分别对前半部、后半部、OOB 进行定位通过Nand Flash 内置的指针指向各自的首地址。
4.寻址方式
Samsung K9F1208U0B Nand Flash 片内寻址采用26 位地址形式。从第0 位开始分四次通过I/O0 -I/O7 进传送,并进行片内寻址。具体含义如下:
0-7 位:字节在上半部、下半部及OOB 内的偏移地址
8 位:值为0 代表对一页内前256 个字节进行寻址
值为1 代表对一页内后256 个字节进行寻址
9-13位:对页进行寻址
14-25 位:对块进行寻址
当传送地址时,从位0 开始
5.存储操作特点:
①擦除操作的最小单位是块,读写的最小的单位是页
②Nand Flash 芯片每一位(bit)只能从1 变为0 ,而不能从0 变为 1,所以在对其进行写入操作之前要一定将相应块擦除(擦除即是将相应块得位全部变为 1).
③OOB部分的第六字节(即517 字节)标志是否是坏块,如果不是该值为FF ,否则为坏块。
④除OOB 第六字节外,通常至少把OOB 的前3 个字节存放Nand Flash 硬件ECC 码
6. Nand flash工作原理及主要命令
Nand Flash 控制器通过将Nand Flash 芯片的内设命令写到其特殊功能寄存器中,从而实现对Nand flash 芯片读、检验和编程控制的。特殊功能寄存器有:NFCONF 、NFCMD 、NFADDR 、NFDATA 、NFSTAT 、NFECC 。
主要命令如下
①.Read 1:
功能:表示将要读取Nand flash 存储空间中一个页的前半部分,并且将内置指针定位到前半部分的第一个字节。
命令代码:00h
②.Read 1:
功能:表示将要读取Nand flash 存储空间中一个页的后半部分,并且将内置指针定位到后半部分的第一个字节。
命令代码:01h
③.Read ID:
功能:读取Nand flash 芯片的ID 号
命令代码:90h
④.Reset:
功能:重启芯片。
命令代码:FFh
⑤.Page Program:
功能:对页进行编程命令, 用于写操作。
命令代码:首先写入00h(A 区)/01h(B 区)/05h(C 区), 表示写入那个区; 再写入80h 开始编程模式(写入模式) ,接下来写入地址和数据; 最后写入 10h 表示编程结束.
⑥.Block Erase
功能:块擦除命令。
命令代码:首先写入60h 进入擦写模式,然后输入块地址; 接下来写入D0h, 表示擦写结束.
⑦.Read Status
功能:读取内部状态寄存器值命令。
命令代码:70h
7.Nand Flash 控制器中的硬件 ECC 介绍
①ECC产生方法
ECC 是用于对存储器之间传送数据正确进行校验的一种算法,分硬件ECC 和软件ECC 算法两种,在S3C2410 的Nand Flash 控制器中实现了由硬件电路 (ECC 生成器)实现的硬件ECC 。
②ECC生成器工作过程
当写入数据到Nand flash 存储空间时, ECC 生成器会在写入数据完毕后自动生成ECC 码,将其放入到ECC0 -ECC2 。当读出数据时Nand Flash 同样会在读数据完毕后,自动生成ECC 码将其放到ECC0 -ECC2 当中。
③ECC 的运用
当写入数据时,可以在每页写完数据后将产生的ECC 码放入到OOB 指定的位置(Byte 6)去,这样就完成了ECC 码的存储。这样当读出该页数据时,将所需数据以及整个OOB 读出,然后将指定位置的ECC 码与读出数据后在ECC0 -ECC1 的实际产生的ECC 码进 对比,如果相等则读出正确,若不相等则读取错误需要进行重读。
8.NAND Flash的读写操作:
①设置NFCONF,NFCONT寄存器,配置NANDFLASH。
NFCONF中的TACLS,TWRPH0,TWRPH1字段与Flash访问时序有关。
②选择芯片,NAND片选
③向NFCMD写入命令
④向NFADDR写入地址
⑤等待数据就绪,
⑥读/写数据,通过寄存器NFSTAT检测NAND Flash的状态,检测R/nB信号以确认操作是否完成。
⑦取消片选
9.NAND启动
当CPU启动方式设置为NAND启动时,上电开机,S3C2440的内部boot code执行,自动把nand flash的最开始4K数据拷贝到s3c2440内部RAM,并且从这部分代码偏移0处开始执行。s3c2440内部RAM映射地址为0,所以u-boot可以认为是是从内存的0地址开始执行。
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(2077) | 评论(4) | 转发(7) |
上一篇:Linux的启动SD卡的格式化方法
下一篇:NAND Falsh驱动分析
- linux 常见服务端口
- xmanager 2.0 for linux配置
- 【ROOTFS搭建】busybox的httpd...
- openwrt中luci学习笔记
- 什么是shell
- linux dhcp peizhi roc
- 关于Unix文件的软链接
- 求教这个命令什么意思,我是新...
- sed -e "/grep/d" 是什么意思...
- 谁能够帮我解决LINUX 2.6 10...
leon_yu2012-10-08 14:01:15
中兴的一哥们,还是比较牛的,可以买本看看,网上也有电子版
lmnos2012-10-08 09:44:26
韦东山,我怎么从没听说过啊
leon_yu2012-10-08 09:25:18
这个是看韦东山的书做的笔记
lmnos2012-10-07 17:04:23
好东西,学习了
NAND Flash硬件读写原理相关推荐
- linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理
1.3.4. Nand flash驱动工作原理 在介绍具体如何写Nand Flash驱动之前,我们先要了解,大概的整个系统,和Nand Flash相关的部分的驱动工作流程,这样,对于后面的驱动实现,才 ...
- NAND FLASH ECC校验原理与实现
NAND FLASH ECC校验原理与实现 2008-01-25 14:57:27 转自:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.a ...
- NAND FLASH的读写操作(硬件原理图分析)
转载:NAND FLASH的读操作及原理 硬件原理 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义,下面直接引用韦东山老师的课程中的提问: NAND FLASH是 ...
- NAND Flash硬件原理
一.存储数据的原理 两种闪存都是用三端器件作为存储单元,分别为源极.漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结 ...
- 嵌入式linux之Nor/Nand FLASH的读写
http://www.cnblogs.com/tureno/articles/2708461.html 所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In ...
- linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析
随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单 ...
- linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...
Nand Flash 是一个存储芯片.本文引用地址:http://www.eepw.com.cn/article/201801/374606.htm 那么:这样的操作很理"读地址A的数据,把 ...
- nand flash基础——读写擦操作
当对一个cell进行读操作时,对相应的wordline施加Vread电压,对其他wordline施加Vpass电压,如上图所示.状态为"0"的cell(被program的cell) ...
- NAND FLASH的工作原理
一.nand的技术点: nand是一种速度,容量,成本比较均衡的一种存储器件.但是要想用好需要一定的管理技术: 1. 写入前需要先擦除.------使用时注意即可 2. nand有损耗,------- ...
最新文章
- React-Todos
- Android退出程序(一)——单例模式
- 我是一只IT小小鸟读书笔记3
- always on sql 收缩日志_使用alwayson后如何收缩数据库日志的方法详解
- ttl是什么意思啊_解读:单反和微单的区别是什么?摄影新手应该如何选择?
- 如何测量C#代码的运行时间
- python中list和numpy的array的转换
- 用ClusterSSH管理多台Linux服务器(2)
- Linux的java配置及tomcat的启动
- Linux中KVM虚拟机是什么
- 谷歌浏览器如何设置兼容
- 亚马逊卖家培训返校季爆单技巧
- 花生壳域名指向跟本地ip不一致的情况是无所谓的
- 据说大多数程序员都钟爱键盘,尤其是 FILCO
- 2.Java语言基础——流程控制语句与方法
- C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表 开放源码及调试
- 此计算机上的操作系统或service pack,win10系统安装补丁失败提示缺少service pack系统组件的设置办法...
- android永久关闭linux,Android临时和永久关闭selinux
- Debian 执行apt-get update失败提示:请使用 apt-cdrom,通过它可以让 APT 识别该盘片。apt-get upgdate 不能被用来加入新的盘片
- 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)
热门文章
- 商城产品属性数据库设计
- 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
- 网页下载Google Play 的App
- skyeye linux qt,Ubuntu 16.04上安装SkyEye及测试
- 2014黑帽大会揭露十大恐怖安全漏洞!
- linux Centos的ftp搭建-配置-上传下载文件--全面版
- DataFrame按某种指定顺序排序
- 基于fastadmin的工业园区科技园水电费管理系统
- -Cannot use v-for on stateful component root element because it renders multiple elements
- 浙江大学11个A+学科,农业就占了6个,太强大了。