wordpress开放多站点,图书网站建设论文,公司简介链接怎么制作,网站制作设计发展前景/*author-----Armking*/ /*data-----2008年9月2*/ /*ps:本人总结#xff0c;备于日后查阅#xff0c;如若转载#xff0c;请注明出处*/ /*QQ:382750150*/ 写于篇头#xff1a; 终于又开始接着学习了#xff0c;只是不知道为什么JTAG又连不上目标板了#xff0c;如… /*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页又由什么组成呢就是由51216字节组成为什么要写成51216 其实说白了就是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 04K的空间内把主函数放在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区开始读取了一定要记得判断是否准备好检测状态。