This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

omap3530 GPMC总线同时挂以太网和FPGA时FPGA不能读写

Other Parts Discussed in Thread: OMAP3530

我的硬件环境是基于gumstix overo的usrp-e110开发板。上面采用omap3530,在GPMC总线的分配上,CS0默认为nand flash,开发板上此处没有接flash。CS5分配给以太网使用。CS4分配给FPGA。

软件环境为ubuntu。在FPGA的GPMC驱动上,ettus公司提供了usrp_e的FPGA GPMC驱动,采用的是DMA的方式。可操作的指令为:

.owner  = THIS_MODULE,  

.open  = usrp_e_open,

  .release  = usrp_e_release,

 .read  = usrp_e_read,

 .write  = usrp_e_write,

 .llseek  = usrp_e_llseek,  

.unlocked_ioctl = usrp_e_ioctl,

 .poll           =       usrp_e_poll,  

.mmap           =       usrp_e_mmap,

 

在系统的kernel部分,初始化board_overo.c文件中,对GPMC总线进行了以下设置:

// Set up CS4, data read/write

 gpmc_cs_write_reg(4, GPMC_CS_CONFIG7, 0x0);  udelay(100);

 // Signal control parameters per chip select

 tmp = gpmc_cs_read_reg(4, GPMC_CS_CONFIG1);

tmp |= (GPMC_CONFIG1_WRITETYPE_SYNC);  

tmp |= (GPMC_CONFIG1_READTYPE_SYNC);  tmp |= (GPMC_CONFIG1_FCLK_DIV(2));

 gpmc_cs_write_reg(4, GPMC_CS_CONFIG1, tmp);  

printk("GPMC_CONFIG1 reg: %x\n", tmp); #endif

.....................

.....................

在以上的设置中,对于config1到congfig6的设置含义都理解,但是不知道为什么在这里初始化时config7设置为0,即:将CS4的使能关闭。

当系统在开发板上启动后,在/dev/设备中有FPGA接口的设备,应用程序也可以open这个设备。以太网设备驱动等也是ettus提供好的,在应用中,以太网一直都能正常工作。

现在我的问题是,在FPGA端,通过在线逻辑分析看波形时,发现CS5即以太网使能间断性的拉低工作。但是CS4一直为高。当我把kernel中board_overo.c中的初始化CS4的config7设置为0xf60时,重新换uImage后,系统启动时会报错,不能进入系统。

在看GPMC的驱动代码时,看到了里面采用了自旋锁等技术防止冲突,可是在这里如何让以太网和FPGA都能工作呢?另外在写应用程序时如何操作,有没有谁能提供对应的示范代码。

谢谢!!!!!

  • 原理上需要根据你的操作逻辑将需要原子操作部分隔离保证同时只能访问单独的地址空间.

    细节上建议在应用层将不同驱动的空间mmap到应用层,应用层保护该部分的隔离访问.

  • 您好,我也正准备usrp-e110开发板,能否留个联系方式好做技术沟通,我的邮箱是liningmcu@126.com

  • 谢谢.不好意思,发了贴后,等了好久没有回答,就自己弄了.最近看帖时才看到.问题大概如你所说.在应用程序中做了映射后.当DMA的地址设置好后,只要相应的地址上有数据,启动DMA后,对应的CS使能就可以了.

  • 你好,近期在做OMAP3730的GPMC的同步时序配置,在AM335X上配好的时序在3730上无法用,今天拜读了你的帖子,发现很适合我,但是关键部分有省略号,能不能把你的这个开发板的GPMC驱动发给我参考一份呢?邮箱是machunyu19891215@163.com

    非常感谢!!