Nand flash的IO口该怎么去控制呢????

xzl08   2009-12-17 16:08 楼主
按照别人uboot中的nand flash驱动,想移植一个自己的bootloader的nand flash

nand flash的cle ale rb ce re we都是可以用cpu的gpio来控制的

但是其D0--D7  IO口接到cpu的MD0---MD7,这个我该如何去控制他们的输入输出呢???
比如说按照datasheet手册,写入0x80命令或者写入地址,该怎么写进去呢?

望指点~~


(看来对我来说,s3c2410不是个好样板)

回复评论 (12)

要是用nand Controller控制还好说一些,用总线方式来控制写也可以,可是用普通的IO口来控制nand还真没写过,这样也可以做吗?
点赞  2009-12-17 16:25
我也正纳闷   这该怎么实现呢
有没有其他办法  或者说这个根本无法在uboot中支持??
点赞  2009-12-17 16:41
根据FLASH的访问时序设置相应IO口为输入输出,满足时序就可以。
点赞  2009-12-17 16:41
ALE CLE用CPU地址线控制,CE线用CPU的csn控制,这样好像比较好写一些吧。
点赞  2009-12-17 16:53
引用: 引用 3 楼 veabol 的回复:
根据FLASH的访问时序设置相应IO口为输入输出,满足时序就可以。



仔细看了下时序图  终于对这话有了点理解了  
只是感觉这样好复杂啊

有没有这样相似的例子呢
接触nand flash不久 不是很了解
点赞  2009-12-17 16:55
如果只按时序来写驱动  那么比如像其他nand flash驱动的那种 初始化之类的操作 就不去理会了?
点赞  2009-12-18 10:05
初始化部分包括设置nand自带的ALE CLE WE等信号线的建立和持续时间。你现在都不用这些信号线改用IO口控制了,这些就不用初始化了,但我觉得用IO口模拟这些时序可能不是那么轻松哦。
点赞  2009-12-18 10:50
我去,晕了。这个可行性太小了。
点赞  2009-12-18 12:06
那个不是你手动控制的吧
点赞  2009-12-22 13:21
引用: 引用楼主 ling1874 的回复:
但是其D0--D7? IO口接到cpu的MD0---MD7,这个我该如何去控制他们的输入输出呢???

这个要用的总线了,跟平时咱们读写寄存器 到了是一样的,可以参考ADS下的读写NAND FLASH程序
点赞  2009-12-22 13:32
呵呵,现在的CPU都有NAND Flash控制器,只需要向寄存器中写地址,写命令,写数据,不需要控制其他信号。所以很多人都不知道怎么用IO的方式直接控制信号来操作Flash。

其实早期的CPU都没有Nand Flash控制器,只有几个片选信号,对应几个地址范围。在硬件设计时要将Nand Flash的CE(片选)接到一个GPIO上,千万不能接cs(CPU的片选信号啊),但这个CS也不能接其他设备,要空着,其他控制线也接到普通的GPIO上。数据线和地址线分别接到CPU的数据线和地址线。

在操作Flash是,根据Nand Flash的时序图,首先拉低CE连接的GPIO,即选中设备。然后向我们给Nand Flash分配的片选的地址写命令,再拉CLE上的GPIO,当写地址时,就拉ALE,具体什么时候拉高什么时候拉低,要看Nand Flash的时序图。在做完一个操作,等带Nand Flash完成时,要监测RB(即Ready/Busy)信号,看指定的动作是不是已经完成。完成了再做下一个操作、
QQ156740709, 欢迎咨询
点赞  2010-1-22 15:41
SLC nand flash 最快速度可以达到多少啊?理论上的,单个plane,不是Micron那么多通道的???????????????
点赞  2010-3-31 09:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复