按照别人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不是个好样板)
要是用nand Controller控制还好说一些,用总线方式来控制写也可以,可是用普通的IO口来控制nand还真没写过,这样也可以做吗?
我也正纳闷 这该怎么实现呢
有没有其他办法 或者说这个根本无法在uboot中支持??
根据FLASH的访问时序设置相应IO口为输入输出,满足时序就可以。
ALE CLE用CPU地址线控制,CE线用CPU的csn控制,这样好像比较好写一些吧。
如果只按时序来写驱动 那么比如像其他nand flash驱动的那种 初始化之类的操作 就不去理会了?
初始化部分包括设置nand自带的ALE CLE WE等信号线的建立和持续时间。你现在都不用这些信号线改用IO口控制了,这些就不用初始化了,但我觉得用IO口模拟这些时序可能不是那么轻松哦。
引用: 引用楼主 ling1874 的回复:
但是其D0--D7? IO口接到cpu的MD0---MD7,这个我该如何去控制他们的输入输出呢???
这个要用的总线了,跟平时咱们读写寄存器 到了是一样的,可以参考ADS下的读写NAND FLASH程序
呵呵,现在的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, 欢迎咨询
SLC nand flash 最快速度可以达到多少啊?理论上的,单个plane,不是Micron那么多通道的???????????????