有没有在ppc8248(8272系列)环境下进行NAND FLASH开发?NAND FLASH用GPCM模式是否满足NAND FLASH时序?有没有大侠发表一下见解。
呵呵,我也在做nand flash,正在找资料呢
考虑用upm模式。
因为我想read的是时候,powerpc应该拉低nand的re#,但是upm的gpl2这个引脚不知道应该如何驱动。
郁闷中
1 新的问题又出现了,请问一下upm word中last bit是什么意思?
2 假如写入命令的upm mad=0x8用的是64个word中的一个,
那么mxmr【op】=11的时候,是不是就只产生0x8这个word的时序?
会自动顺序运行下一个word的时序,直到一个word的last位为1呢?
请教,谢谢!
没必要上upm来驱动nand。只要给一个io口来驱动cs即可。
参考设计当中建议使用upm模式,但是我们的硬件工程师在设计初期采用GPCM模式,RE,WE,CE,由CPLD逻辑来模拟,CLE和ALE通过IO地址线来给出。但是我觉着片选信号CPLD逻辑不好给出。看三星的手册上读FLASH ID时它需要CE信号一直为低,直到读完为止。在实际的硬件设计当中CPLD逻辑没有处理CPU给出的CS信号。
我的建议是使用UPM模式。
last bit为设置为1表示由UPM产生的时序结束标志。mxmr【op】=11的时候,你可以通过MAMR[MAD]设置产生哪个时序,例如:MAMR[MAD]=0x10,然后通过MAR设置命令或者地址。
example:
MAMR[OP]=11,MAMR[MAD]=0X10,MAR=Column address1
相当于:写列地址1
有问题咱们邮件沟通:jason_sun2008cn@hotmail.com
在ARM系统中,一般使用IO端口来模拟。它的设计比较简单。
在ppc当中这些都取决于硬件如何设计。
关键是你用IO口的话,确实能读写nand,但是考虑到要把nand做成块设备,上面移植文件系统。
那么还是需要硬件驱动,而且ppc本身提供很好的硬件驱动,在时序上非常紧凑。
在gpcm,cs的信号都是可以通过bank的cs来确定的。你的nand不是连接到ppc的一个bank上吗,直接采用访问bank的对应地址就可以了。
但是假如你用upm的话,你可以通过ram word控制cs在一个周期的4中变化,很强悍。
example:
MAMR[OP]=11,MAMR[MAD]=0X10,MAR=Column address1
相当于:写列地址1
这个example我知道,我想问的是example中的0x10对应的word中的last位,如果是0,那么是不是ppc的引脚继续产生同样的时序?如果是1,那么ppc的引脚生成时候后就停止生成了?
是这样的。理解正确。如果是1,那么PPC时序停止。
好的,现在又出现一个问题,关于GPL2/OE这个引脚。
对nand进行读数据的时候,先发送命令,然后地址,然后读结束命令。然后polling R/B的状态为ready后,GPL2需要拉低nand的RE引脚,然后数据从数据线IO(0-7)输出了。
d0 = *(volatile unsigned char *)NAND_BASE;
d1 = *(volatile unsigned char *)NAND_BASE;
d2 = *(volatile unsigned char *)NAND_BASE;
d3 = *(volatile unsigned char *)NAND_BASE;
但是GPL2拉低nand的RE引脚一次,然后数据从数据线IO(0-7)读出
这个过程应该是ram word重复的,那么如何判断当前读的是哪次GPL2拉低的?
GPL2/OE在GPCM模式下,应该只要读取ppc的bank就能触发GPL2/OE为低的。
GPL2/OE在UMP模式下,通过ram word触发GPL2/OE为低,但是读取数据的时候如何控制呢?
没有人懂upm吗
就是说upm时序通过gpl2拉低nand的re,拉低一次,可以读取一个字节。但是我怎么去判断哪个时刻gpl2拉低了re呢?