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

OMAPL138和FPGA的EMIFA连接读写错误的问题

本人参考广州创龙公司的工程范例,用DSP单核和FPGA通过EMIFA连接和读写都是正常的。但是若将ARM也加入进来,ARM跑linux3.3,由ARM通过slaveloader语句启动DSP,再次观察分析EMIFA的地址数据,发现有错误不正确的情况。反复看程序是没问题。EMIFA的频率也试着改低了,依然不正常。请问是否有标准的3核交互的范例程序可以参考呢?ARM和DSP是走SYSLINK通讯,DSP通过EMIFA和FPGA相连。

Tony Tang:

user5243180ARM跑linux3.3,由ARM通过slaveloader语句启动DSP,再次观察分析EMIFA的地址数据,发现有错误不正确的情况。反复看程序是没问题。

ARM文件系统是在NAND上吗?如果是,应该是FPGA对EMIFA时序的处理有问题。FPGA应该只对接在自己的EMIF_CS有效时才响应。

user5243180:

回复 Tony Tang:

ARM文件系统是NAND上的。你说FPGA可能处理EMIFA时序有错误,但是单核DSP和FPGA相连通讯读写都是正确的。只有若由ARM引导DSP,之后分析DSP和FPGA连接情况,才发现EMIFA读写出错了

Tony Tang:

回复 user5243180:

user5243180之后分析DSP和FPGA连接情况,才发现EMIFA读写出错了

是读出错了,还是写出错了?如何判断的?

user5243180:

回复 Tony Tang:

源程序部分如下:

int i=0;

/* 初始化数据缓冲区 */ for (i = 0; i < EMIF_BUFFER_LENGTH; i++) { emif_wbuffer[i] = (short)(i); emif_rbuffer[i] = 0xDEAD; }

/* 向FPGA写数据 */ for (i = 0; i < EMIF_BUFFER_LENGTH; i++) { ((short *)SOC_EMIFA_CS2_ADDR)[i] = emif_wbuffer[i]; }

上面是测试案例,意思是往片选2地址写一堆数值(0,1,2,3,4,5,6……)。FPGA是设计成双口RAM结构,DSP写给FPGA,应该监控内存也是可以正常读取回来的。但是若单独DSP和FPGA相连,反馈结果是正确的。若ARM引导起来DSP,再监控内存情况,就发现读取回来的数值部分是错的。详细见图。图中还试着改了EMIFA的分频情况。

user5243180:

回复 Trolong_support:

感谢回答,已经解决。结合FPGA时序情况,改变EMIFA读写时序参数目前是好了。

赞(0)
未经允许不得转载:TI中文支持网 » OMAPL138和FPGA的EMIFA连接读写错误的问题
分享到: 更多 (0)