p1010的IFC连的nandflash和fpga会相互影响
具体环境如下:
所用芯片powerpc p1010, 它的IFC(Integrated Flash Controller) 模块可以挂接4个设备,但同时只能对一个操作,我现在用了两个一个IFC_CS0是连的一个nandflash(K9F4G08U0D-SCB0K9F4G08U0D-SCB0),IFC_CS1是连的一个fpga(XC6SLX9-2CSG324C), 对nandflash的操作直接用的标准的驱动,对fpga的操作,是通过ioremap一段空间,操作是像读写内存一样,
具体事例代码如下:
映射:g_pbyFpgaKBase = (void __iomem *)ioremap(FPGA_K_BASE_ADDR, FPGA_K_LEN);
读:*((volatile u8 *)(g_pbyFpgaKBase + dwReg)) = byVal;
写:byVal = *((volatile u8 *)(g_pbyFpgaKBase+dwReg));
问题复现情况:
目前我对fpga进行测试,具体步骤是:不停的往fpga某个寄存器写一个值然后再读进行比较看两个值是否相等,当我不对nandflash操作时,这个时候一切正常写和读的值都是相等的,但我对nandflash进行操作(由于文件系统是用的nandflash上的,直接在文件系统上随便进行文件拷贝即是对nandflash操作)时,对fpga写和读的值就不等了,通过示波器量的时序也出问题了,拷贝结束又正常了。
我现在得的结论是:nandflash操作会影响fpga那边的时序,应该是对fpga的操作和nandflash的没能完全做到互斥违背了一次只能对一个操作, 感觉是对fpga的操作太赤裸裸了没有任何的保护影响的,不知没有谁能知道怎么样才能让两者的操作完全隔离而不致一个干扰另一个?