TI中文支持网
TI专业的中文技术问题搜集分享网站

AM3354 通过EDMA方式使GPMC与FPGA通信,不能正常通信

使用AM3354(跑linux系统,不带设备树的版本)的GPMC与FPGA连接,使用CS1,连接线为AD0-AD15,GPMC的时序配置为

GPMC_CONFIG1= 0X00601000

GPMC_CONFIG2= 0X00011001

GPMC_CONFIG3= 0X00020201

GPMC_CONFIG4= 0X08031003

GPMC_CONFIG5= 0X000F1111

GPMC_CONFIG6= 0X0F030080

由于数据速率需要达到40MB/s,所以使用EDMA模块。

EDMA部分代码参考http://processors.wiki.ti.com/index.php/AM335x_EDMA_Driver%27s_Guide中edma_test.c文件中的mem2mem的相关配置;

目前问题:

DMA读操作,在arm部分,驱动中callback函数不能正常返回,导致数据不能正常读回;从FPGA部分看去,在进行读操作时,CS信号不能正常拉低,oe信号也不正常;

各位大神,有调通edma进行gpmc与fpga通信的,帮忙分析分析是啥问题,是时序参数问题还是别的啥问题。

在此多谢!

Shine:

能否先用EDMA在内部RAM搬移数据块试试,看是不是EDMA的配置问题。

xiaobin wu:

回复 Shine:

多谢指点,单独测试使用edma_memtomemcpytest_dma函数,可以测试通过,然后加到gpmc的驱动中,dma操作时,src地址设置为gpmc_cs_request(GPMC_CS,SZ_2K,&fpga_dev.mem_base)函数中的fpga_dev.mem_base,dst地址设置为自己申请的dma空间的物理地址(参考dma测试程序)。但是读fpga操作时,卡到while(irqraised1 = 0u);的位置,fpga部分看到cs信号和oe信号只动作了一个字节,然后就没动静了,情况基本和之前一致,目前还是不确定是啥问题;
不知道还有哪我没有注意到的地方没?
期待您的回复。
再次感谢!!!

JUN HU:

你好,我也是在调试GPMC的东西,已经能正常读取GPMC_CONFIG寄存器的数据,但是奇怪的是,编写驱动来驱动io_base地址却没有办法产生波形,你这边有什么好的建议吗?

赞(0)
未经允许不得转载:TI中文支持网 » AM3354 通过EDMA方式使GPMC与FPGA通信,不能正常通信
分享到: 更多 (0)