ARM9之NAND FLASH总结

/*author----->Armking*/

/*data----->2008年9月2*/

/*ps:本人总结,备于日后查阅,如若转载,请注明出处*/

/*QQ:382750150*/

写于篇头:

终于又开始接着学习了,只是不知道为什么JTAG又连不上目标板了,如果谁不小心看到了此文章,又凑巧知道了是什么原因,请留言赐教,不胜感激。

关于NAND FLASH很详细的内容,肯定无需在此多做说明,只要有电脑,baidu,google一天不垮台,都可以查阅到很多相关的资料。最最最权威的还是官方的手册,比如说我用的就是S3C2440这个板子,而这个板子上配的NAND是K9F1208,三星公司的,可以去它的官网下载即可。

下图为手册上的管脚图和管脚功能表,可能一开始搬这些东西出来觉得很枯涩,我也觉得这样,不过我是总结之用,无所谓了

各位看客的英语肯定比俺好,几个类似于power这样的E文,随便啃肯定没问题!

下面这个图是NAND FLASH的功能图,有点吓人的功能图

 

下面我先来剖析NAND FLASH的物理结构:

 

上图就是NAND FLASH的物理层结构,其实上图画的比较形象,比较生动

大致意思是这样的:

一个NAND FLASH存储器是由很多快组成的,很多是多少?4096块(就本人所用而言,K9F1208)

4096块中的1块又由很多页组成,多少页?32页

32页中的1页又由什么组成呢?就是由512+16字节组成(为什么要写成512+16

其实说白了就是528字节,但是是由512的主数据区和16的额外数据区组成的,所以如是。

那我掰开手指算算容量有多大?

1个NAND FLASH容量=4096(块)*32(页)*528(字节)*8(位)=528Mbit(以位为单位算的)

既然是FLASH肯定要与外界交流,如何交流,看上图,发现有IO 0~IO7,不错,就是用这8位来交流的。

刚才算的容量是528Mbit,也就是有64M的空间了,也就是说需要26位地址传送了,可是只有8根IO怎么办啊

这样就形成了NAND FLASH交流的独特性,不管你要干什么,首先发送命令,当然命令也是通过IO传送的,命令传送完毕了,再发送4个地址序列(为什么是4个?,26位要IO来传,分4次才行啊),最后才是必要的校验。

看到上面图是不是有2个方块,下面那个,用E文写着:page regsiter,这又是干什么的啊?

其实NAND访问并非直接通过里面的存储物理层,而是有一个专门的页寄存器来管理,不管你是读,是写,都要首先通过page regsiter,这回我晕晕的脑袋稍微好些了。

上面讲到过需要26位才能寻址到64M啊,我的妈亚,我的家家亚,这么多,叫IO0~IO7怎么吃得消啊,所以说才有地址序列的说法啊,但是地址序列又是如何对应的呢?由于NAND FLASH的结构分的很细,又有什么块啊,页啊,字节啊,所以说这个26位地址的本质就是如何区分这个的!

因此就有了A0~A7是页内寻址,也叫列寻址,也就是528字节寻址,我寻啊寻啊,不对劲啊,A0~A7才8位,匝地就能寻528啊,不是只能寻256吗?貌似有道理,请往下看.....

A9~A25是用来进行页寻址的,也叫行寻址,刚不是算了,4096块*32页=131072页,用A9~A25就可以搞定这么多页了,不信你算算。

客官看出来了没?发现A8怎么溜了?难道生气不干了?没这回事,它在偷偷的工作,默默无为的那种,象俺

A8是由里面的某个硬件电路根据相关的命令而置为1或者0,这不用我们操心,但我们要理解

比如说我喊话了说要寻址0~255字节,敢情好啊,这样的话8位IO肯定搞定了,对头!这时候我们聪明的硬件电路就会把A8置为0,不需要它了。

又比如说我喊话了要寻址第484字节啊,这么多啊,8位抗不住啊,对,这时候硬件电路就会把A8叫上,一起协助你,完成所谓的第484个字节寻址.484的二进制是111100100,需要9为才行,其实A8此时就充当第9位,其余8位还是由IO完成的,这样就可以完成528字节内的任何寻址了!

基于以上可知,A9~A25是进行多达上万页寻址的,其实还可以细分的,A9~A13是块内的32页寻址,正好5位,2的5次方=32,一块由32页组成,多好啊。

A14~A25是用于寻块的,前面说了,4096块,自己掰开手指算算吧。

其实A14~A25还可以细分,不过必须先了解个概念才行,知道什么是plane吗?

NO!我说的不是飞机!

其实NAND FLASH还被组织成一种形式,就是把整个NAND FLASH分成四个层(plane),每层1024块,每层里还有个528字节的页寄存器,组织形式看下图:

 

 

所以说的话,A14~A15是用于plane寻址的,正好4种情况。其余的用于1024块寻址。

对于基本的物理结构就是如上的,其实是总结之用,请勿嘲笑,欲知详细,请查阅文档,OK?

以下是基于程序分析的

本次实验的思路是将一些启动代码,初始化代码放在NAND 0~4K的空间内,把主函数放在4096字节后,那些启动代码,初始化代码负责将4096后的主函数copy到0x30000000的地址空间,然后跳转执行主函数即可。

程序在此就不必写出来了,重在整理思路

在head.S里主要需要关掉watch_dog,调用sdram初始化函数,调用nand初始化函数,调用nand的复制函数(也就是读函数,复制到0x30000000),最后跳转到0x30000000处

nand在使用前,需要进行简单的配置,比如说设置时序,2440在NFCONF里面设置,ECC初始化,片选,控制器使能,在NFCONT设置,最后再复位下nand flash即可。

nand的读需要注意,只用到了低8位,而且读的时候,需要注意控制字节数,因为如果从A区或者C区读取,它会一直的紧接着从下一页的A区或者C区读取,如果是B区,就会在下一页从A区开始读取了,一定要记得判断是否准备好,检测状态。

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

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

相关文章

内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:1、等值连接:在连接条件中使用等于号()运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列…

python中赋值运算符有哪些_Python代码中有哪些赋值运算符呢?

摘要:下文讲述Python代码中赋值运算符的相关的简介说明,如下所示:赋值运算符主要用于赋值操作,用于为对象赋值,那么Python中赋值运算符到底有哪些呢?下文将一一道来,如下所示:赋值运算符详解说明示例说明简单的赋值运算…

解读HTTP包

解读HTTP包:[摘要]详细介绍HTTP包的格式、协议内容及相关的处理方法,内容分3节:1、超文本传输协议及HTTP包;2、Socket类与ServerSocket类;3、读取HTTP包。 一、超文本传输协议及HTTP包 HTTP协议用于在Internet上发送和接收消息。HTTP协议是一…

几个颇有创意的网站推广方法(推荐)

几个颇有创意的网站推广方法(推荐)元旦佳节,相信有不少朋友从QQ、MSN、E-mail里收到了亲友发来的贺卡,其中流传得比较多的是几张比较有创意的图片,他们都只需要在链接里输入你想祝福的人的名字,然后该文字会出现在图片中去&#x…

明光市机器人_“柠檬皮”软体机器人!26岁小伙联合发明光磁场机器人|专访...

会行走、能搬货,还会 “跳街舞”。近日,美国西北大学发明出一款软体机器人,该机器人看起来像一只剥开的柠檬皮,它能在水箱中运动,并拥有多种本领,比如搬运物品、催化化学反应、输送治疗剂等,而它…

【转】SD-WAN,到底是什么*****

作为一个热门概念,SD-WAN近年以来频繁地出现在我们的视野当中。 很多人说,它是未来最具发展潜力的通信技术之一,极具商业价值。 行业里的老牌通信设备商和运营商对它一致看好,新兴创业企业也把它视为千载难逢的风口机遇&#xff0…

超文本传输协议及HTTP包

HTTP协议用于在Internet上发送和接收消息。HTTP协议是一种请求-应答式的协议 ——客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包。HTTP协议使用可靠的TCP连接,默认端口是80。HTTP的第一 个版本是HTTP/0.9&#xff0…

ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!

今日分享图片智能放大●●●●重庆大学PPT图片太模糊了,要用原图!放大,放大导师如是说,小硕表示,图片本就这样这咋办?不愁,稳住接着看在做PPT时还是做论文时想用某张图片,但是直接拉…

【转】全了!临港四镇最新对口地段小学,中学都在这里,看看你的孩子能读哪个学校

临港的家长们关于自己的孩子就读哪个学校,家长们一直都很关心和关注,每个家长对孩子的教育很是重视,有部分家长买临港的房子就冲着学区去的,临港的优质教育资源一直是被居民所称赞的,学校也没家长失望,个别…

状态栏显示时间代码

状态栏显示时间代码 <html><head><title>网页特效|Linkweb.cn/Js|---状态栏滚动时间</title></head><body>请看状态栏<BR><!--将以下代码加入HTML的<Body></Body>之间--> <SCRIPT languageJavaScript>var o…

WINCE驱动程序快速入门

有人也许和我一样比较心急&#xff0c;想尽快知道如何去写一个具体的驱动程序&#xff0c;这里&#xff0c;假设您对驱动程序已经有比较好的了解&#xff0c;告诉大家一个快速上路的方法。当然&#xff0c;如果您有足够的时间我建议在动手之前还是深入了解一下CE整个系统架构。…

【转】Azure Az-900认证 04——-考取AZ900所有知识点总结--获取证书!

结合最近所做的模拟题&#xff0c;把一些容易考的知识和概念重新回顾记录一下。标红的字要注意一下&#xff0c;有可能这几个简单的字&#xff0c;就是最能概括这个概念的关键点&#xff0c;个人在回顾的时候把这些点红色标出来了&#xff0c;会在题干中以不同的案例形式来考察…

怎么用vc采集ni卡数据_8bit,200MS/s 低成本模拟输入高速采集卡FCFR-PCI9850

FCFR-PCI98508bit,200MS/s 低成本模拟输入高速采集卡FCFR-PCI9850&#xff08;简称PCI9850&#xff09;是低成本高速数字化化仪&#xff0c;AD分辨率8bit&#xff0c;AD采样率200MS/s&#xff0c;硬件FIFO缓存32M字节&#xff0c;采集卡支持50MS/s的高速连续采集&#xff0c;触…

网站程序安全分析器 VB源码

本程序通杀:ASP ASPX PHP CGI JSP VBS 等脚本WebShell并能查出99%加密过的脚本WebShell后来发现..精度越高误杀越高...基本做到宁误扫三千不放过1马~其实是利用串判断.原理很简单.有很多人向偶要代码.想到人家ScanWebshell都贡献出来了~偶要是不贡献出来就不厚道咯.以下是全部代…

S3C6410启动模式介绍

目前的ARM处理器都支持多种启动模式&#xff0c;S3C6410和以前的Samsung的ARM处理器一样&#xff0c;通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动。我认为S3C6410的User Manual并没有说的很清楚&#xff0c;所以我在最开始使用的时候&#xff0c;也对其启动模式…

如何用木板做桥_如何辨别使用的公园椅是否需要保养

如何辨别使用的公园椅存在哪些问题新城市公园椅小编与您分享&#xff0c;每一项事物都会有它的使用寿命&#xff0c;公园椅也不例外。公园椅使用有几年后后&#xff0c;我们通过公园椅的哪些表现来发现公园椅存在哪些隐患呢&#xff1f;通过观察、触摸、按压这三种方式来发现公…

密码学概述

时间点&#xff1a; 公元前400年&#xff0c;希腊人发明了置换密码&#xff1b; 1881年&#xff0c;世界上第一个电话保密专利出现&#xff1b; 二战期间&#xff0c;德国军方启用“恩尼格玛”密码机&#xff1b; 1976年&#xff0c;由于对称加密算法已经不能满足需要&#…

【转】关于医疗术语 CT,MR,DR,CR,DSA 等

医疗术语解释&#xff1a; Digital Radiography (CR, DX) &#xff1a;数字X线摄影 Mammography (MG)&#xff1a;乳房X射线照相术 Computed Tomography (CT)&#xff1a;计算机断层扫描 Magnetic Resonance (MR)&#xff1a;磁共振 Positron Emission Tomography PET-CT …

c语言删除文件remove_Python中的文件和目录操作

对于文件和目录的处理&#xff0c;虽然可以通过操作系统命令来完成&#xff0c;但是Python语言为了便于开发人员以编程的方式处理相关工作&#xff0c;提供了许多处理文件和目录的内置函数。重要的是&#xff0c;这些函数无论是在Unix、Windows还是Macintosh平台上&#xff0c;…

漏洞:Client ReDos From Regex Injection

漏洞描述&#xff1a; 扫描漏洞如下&#xff1a;代码&#xff1a; // In IE6, the hash fragment and search params are incorrect if the // fragment contains ?. getSearch: function() { var match this.location.href.replace(/#.*/, ).match(/\?./); …