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) |

0

上一篇: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_yu: 这个是看韦东山的书做的笔记.....

韦东山,我怎么从没听说过啊

回复 | 举报

leon_yu2012-10-08 09:25:18

lmnos: 好东西,学习了.....

这个是看韦东山的书做的笔记

回复 | 举报

lmnos2012-10-07 17:04:23

好东西,学习了

回复 | 举报

评论热议

NAND Flash硬件读写原理相关推荐

  1. linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理

    1.3.4. Nand flash驱动工作原理 在介绍具体如何写Nand Flash驱动之前,我们先要了解,大概的整个系统,和Nand Flash相关的部分的驱动工作流程,这样,对于后面的驱动实现,才 ...

  2. NAND FLASH ECC校验原理与实现

    NAND FLASH ECC校验原理与实现 2008-01-25 14:57:27 转自:http://blog.csdn.net/nhczp/archive/2007/07/20/1700031.a ...

  3. NAND FLASH的读写操作(硬件原理图分析)

    转载:NAND FLASH的读操作及原理 硬件原理 上面是我使用的NAND FLASH的硬件原理图,面对这些引脚,很难明白他们是什么含义,下面直接引用韦东山老师的课程中的提问: NAND FLASH是 ...

  4. NAND Flash硬件原理

    一.存储数据的原理 两种闪存都是用三端器件作为存储单元,分别为源极.漏极和栅极,与场效应管的工作原理相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的电流消耗极小,不同的是场效应管为单栅极结 ...

  5. 嵌入式linux之Nor/Nand FLASH的读写

    http://www.cnblogs.com/tureno/articles/2708461.html 所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In ...

  6. linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析

    随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单 ...

  7. linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...

    Nand Flash 是一个存储芯片.本文引用地址:http://www.eepw.com.cn/article/201801/374606.htm 那么:这样的操作很理"读地址A的数据,把 ...

  8. nand flash基础——读写擦操作

    当对一个cell进行读操作时,对相应的wordline施加Vread电压,对其他wordline施加Vpass电压,如上图所示.状态为"0"的cell(被program的cell) ...

  9. NAND FLASH的工作原理

    一.nand的技术点: nand是一种速度,容量,成本比较均衡的一种存储器件.但是要想用好需要一定的管理技术: 1. 写入前需要先擦除.------使用时注意即可 2. nand有损耗,------- ...

最新文章

  1. React-Todos
  2. Android退出程序(一)——单例模式
  3. 我是一只IT小小鸟读书笔记3
  4. always on sql 收缩日志_使用alwayson后如何收缩数据库日志的方法详解
  5. ttl是什么意思啊_解读:单反和微单的区别是什么?摄影新手应该如何选择?
  6. 如何测量C#代码的运行时间
  7. python中list和numpy的array的转换
  8. 用ClusterSSH管理多台Linux服务器(2)
  9. Linux的java配置及tomcat的启动
  10. Linux中KVM虚拟机是什么
  11. 谷歌浏览器如何设置兼容
  12. 亚马逊卖家培训返校季爆单技巧
  13. 花生壳域名指向跟本地ip不一致的情况是无所谓的
  14. 据说大多数程序员都钟爱键盘,尤其是 FILCO
  15. 2.Java语言基础——流程控制语句与方法
  16. C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表 开放源码及调试
  17. 此计算机上的操作系统或service pack,win10系统安装补丁失败提示缺少service pack系统组件的设置办法...
  18. android永久关闭linux,Android临时和永久关闭selinux
  19. Debian 执行apt-get update失败提示:请使用 apt-cdrom,通过它可以让 APT 识别该盘片。apt-get upgdate 不能被用来加入新的盘片
  20. 流媒体-H264协议-编码-x264学习-相关概念x264编译及文件解析(一)

热门文章

  1. 商城产品属性数据库设计
  2. 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
  3. 网页下载Google Play 的App
  4. skyeye linux qt,Ubuntu 16.04上安装SkyEye及测试
  5. 2014黑帽大会揭露十大恐怖安全漏洞!
  6. linux Centos的ftp搭建-配置-上传下载文件--全面版
  7. DataFrame按某种指定顺序排序
  8. 基于fastadmin的工业园区科技园水电费管理系统
  9. -Cannot use v-for on stateful component root element because it renders multiple elements
  10. 浙江大学11个A+学科,农业就占了6个,太强大了。