bluefishhttp://blog.yesky.com/Blog/vincentzhou/复制地址
公告栏
专注wince底层开发,学习linux 为生活而奋斗!
控制面板
日历
<2008年7月>
SuMoTuWeThFrSa
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789
留言簿(12)
文章分类
文章档案
日记档案
向强人学习

对照s3c2440的nandflash controller和K9F1208U0M读了下wince下的对nandflash的操作,感觉不过如此。下面为该nandflash spec的一些笔记。

OM[1:0]=00,Enable NandFlash memory boot,如果为01或10是设置bank0的bus width为16bit或32bit且bootsram在0x40000000-0x40000FFF,11为设置为test mode。

在对nandflash的device进行操作的时候要enable chip select(NFCONT[1]),例如发送命令和地址,读取和写数据。在操作完成后还要再disbale掉。在page program命令之前(也就是80h)要有00h/01h或者50h来选择要操作的区域,其实也就是特指写操作了。

命令集如下:
command                        1cycle          2cycle         3cycle
Read1                          00h/01h
Read2                          50h
ReadID                         90h
Reset                          FFH
Page Program(True)             80h
Page Program(Dummy)            80h             10h
Copy-Block(True)               00h             8Ah             10h
Copy-Blcok(Dummy)              03h             8Ah             11h
Block Erase                    60h             D0h
Multi-Plane Blcok Erase        60h             D0h
Read Status                    70h
Read Multi-Plane Statur        71h

K9F1208U0M为64Mx8bit,共4096个block。data部分:page=512bytes blcok=32pages;spare部分:page=16bytes block=32pages。一个nandflash包含4个plane,每一个plane包含1024个block和528bytes的page register。blcok是按顺序循环放到每一个plane中的,第一个block在第一个plane中,第二个block在第二个plane中...第五个block在第一个plane中...

如果在program或者erase操作的时候出现error,就要将该blcok中的其余page的数据拷贝到另一个没有被用且已经被erase过的block中去。

samsung的nandflash有3个命令的地址指针:第一个命令设置区域为0-255bytes的指针,第二个设置区域为256-511bytes的指针,第三个设置为区域512-527bytes的指针。Read1 00h,从一个page的前半个page开读;Read1 01h,从一个page的后半个page开读;Read2 50h,从一个page的spare开读。

nandflash设备一上电就进入read1模式,这个操作也可通过写命令寄存器00h来初始化,一旦该命令完成就不需要再次写入来完成接下来的page read操作,这时有3种操作可用:random read; serial page read; sequential row read。当page地址变化时,random read模式就被enable了,所用的page的528bytes数据会在12us内传输到数据寄存器,系统控制器可通过检查R/B的输出引脚来判断传输是否完成。

erase操作以block为单位,其余的操作都是以page为单位。在写之前,要先erase整个block。copy-block program是将一个plane中的一个page拷贝到该plane中的另一个page中,并且不利用外部内存。过程:00hcmd(带源page地址)copy整个page到internal page register,8Ahcmd(带target page地址)copy整个internal page register数据到目的page,10hcmd确认命令。multi-plane copy-block program是从4个plane中的page copy数据到4个plane中的不同page中去。[注]第一个00h之后的3个normal read命令都要用03h命令,最后一个确认命令要用10h命令,而另外3个都要用11h命令。

nandflash有个R/B引脚用来给硬件提供一个标识page program,erase,random read操作完成的方法。该引脚通常是高的,当program或erase命令被写到命令寄存器或在random read在加载了地址启动,它就会变成低的。在内部控制器完成了相应操作之后,它会自动变成高。


作者:bluefish 阅读() 评论()  编辑 发表于:2008-04-29 15:51
相关内容
文章评论

暂无人对此文章发表评论!

发表评论
标题 *  
姓名 *  
内容 *  
   验证码: *       
       
版权声明:天极是本Blog托管服务提供商。如本文牵涉版权问题,天极不承担相关责任,请版权拥有者直接与文章作者联系解决。
Powered by:

Copyright © bluefish