天嵌 ARM开发社区

 找回密码
 注册
查看: 2500|回复: 6

恳求指教!!请大家来看看这几个型号的nand flash

[复制链接]
mobilefzb 发表于 2010-11-19 10:09:59 | 显示全部楼层 |阅读模式
我对nand flash的纠结之处在于,我发现我不能通过nand flash的芯片资料总结出地址序列的写法。
     看过版主的博客,但是对地址序列的理解还是有些疑问。
     请看下面的几款芯片:
     k9f1208u0m
        对这款芯片的技术状态的学习来自于韦东山编著的《嵌入式linux应用开发完全手册》。其中在介绍了如何使用这款芯片进行操作。
     这款芯片的地址序列如下:
     
       其地址访问序列代码如下:
     NFADDR = addr &0xff
       NFADDR = (addr >> 9) & 0xff
       NFADDR = (addr >> 17) & 0xff
       NFADDR = (addr >> 25) & 0xff
       总结:
     该芯片采用了4个地址序列,就其位移方式来说。位移的量就是地址序列中I/O0的地址位编号。
k9f1208u0c
       对这款芯片的技术状态学习来自于一块s3c2410板子。通过资料发现与k9f1208u0m技术状态一样,代码可通用。
K9F2G08U0A
       对这款芯片的技术状态学习来自于tq2440学习板子。这是一块256MB的芯片。
     这款芯片的地址序列如下:
     
       其地址访问序列代码如下:
     NFADDR = addr & 0xff
       NFADDR = (addr >> 8) & 0x7
       NFADDR = (addr >> 11) & 0xff
       NFADDR = (addr >> 19) & 0xff
       NFADDR = (addr >> 27) & 0x1
       总结:
     毫无规律可言。记住便是。
     请大家说说看,如果以后遇见一个不同地址序列的nand flash,要如何读芯片手册才能正确的书写地址序列?感谢!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
machoe 发表于 2010-11-19 11:18:02 | 显示全部楼层
不是规律的问题,是你没有抓住本质。
第一,地址分几个序列是要看地址的长度的,也就是有多少行,多少列,这个手册是有的,2G08比较大,4个序列表示不了,所以才用5个序列。
第二,你往NFADDR写地址是干什么呢?你要搞清楚啊,你是要读数据呢?还是写数据呢?你是要读多少呢?读一页?读半页?还是读随机的几个?我博客的例子,就是读一页的数据2048Byte,所以,我根本不用列寻址,因为列是在页内寻址的,我只用到行寻址,其实这里的行就是页,所以前两列设成0。这就好比我看书一样,书有章节和页码,章节就对应着行地址,而页码就对应着列地址,我要是翻书的时候想一章一章的翻,我只要知道每章的页码就行了,别的就不用了。就是这个道理。你要好好体会这里面的深意,别想得太复杂了,地址无非就是你自己设定而已,你想从哪开始读,你就把哪个地址发给NFADDR就可以了,有那么复杂吗?
 楼主| mobilefzb 发表于 2010-11-19 12:07:16 | 显示全部楼层
非常的感谢!!!!
    版主说的方法我是理解了,我也分析过教程提供的地址序列代码,只要是以页作为基本访问单位,列地址全部设置为0就ok了:)
    我想我照搬芯片资料的地址序列来理解可能还是有点问题。
    那么现在抛开芯片资料再说说我现在的理解,如果以页作为基本单位的话,那么给出一个地址,首先要做的处理应该是将以字节为基本单位的地址/页的大小=页的地址(意思就是进行单位换算吧:))如果是512字节的页,那么就要将这个地址除以512(所以就是右移9位)。如果是2040字节的页,那么就要将这个地址除以2048(所以就是右移11位)。如果是256字的页,那么就要将这个地址除以256(所以就是右移8位)。如果是1024字的页,那么就要将这个地址除以1024(所以就是右移10位)。至于行地址序列,因为每个地址的8位为一个基本序列,所以后移8位依次发送地址序列就可以了。
    如果按照这样的理解,今后碰到其他的nand flash也就可以这样分析了吧:)
再次感谢!!!
machoe 发表于 2010-11-19 13:16:03 | 显示全部楼层
差不多,呵呵,很愿意和你交流,其实我在网上看过nand flash的地址公式,一个牛人总结的,就和你说的一样,但我始终没有记公式,因为公式是死的,东西是活的,说不定哪天nand flash又变出新花样来了,公式就完蛋了。学这种东西就是自己思考(不要想得太难),然后验证,再通过验证来分析错误和正确的原因,慢慢的就会明白了。不用管什么步骤,什么公式,什么定理,只要你的程序能完成任务,能工作,你就是对的,等有了基础,再来考虑程序的效率等高深问题吧,其实我也是初学者,越学越感觉自己不会的越多。郁闷!
天嵌_support1 发表于 2010-11-19 17:31:29 | 显示全部楼层
4# machoe


Macho 版主很好,加油
吕氏春秋8266 发表于 2010-12-10 21:04:29 | 显示全部楼层
刚研究完MMU及CACHE,正准备研究NAND的读写问题,受教了,谢谢!以后请多指教!
xiaoqiang08wang 发表于 2011-1-14 20:05:17 | 显示全部楼层
哎这个也可以不理解哈呵呵慢慢学吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-5 16:28 , Processed in 1.028359 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表