在线时间2 小时
UID3087715
注册时间2014-12-29
NXP金币0
该用户从未签到
新手上路

- 积分
- 17
- 最后登录
- 2015-1-21
|
本帖最后由 zwj894554773 于 2014-12-29 10:41 编辑
具体环境如下:
所用芯片powerpc p1010, 它的IFC(Integrated Flash Controller) 模块可以挂接4个设备,但同时只能对一个操作,我现在用了两个,一个IFC_CS0是连的一个nandflash(K9F4G08U0D-SCB0K9F4G08U0D-SCB0),IFC_CS1是连的一个fpga(XC6SLX9-2CSG324C), 对nandflash的操作直接用的linux标准的驱动,对fpga的操作,是通过ioremap映射一段空间,操作是像读写内存一样,
fpga操作具体事例代码如下:
映射: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的操作太赤裸裸了没有任何的保护影响的,不知该怎么样才能让两者的操作完全隔离而不致一个干扰另一个?
|
|