本人参考广州创龙公司的工程范例,用DSP单核和FPGA通过EMIFA连接和读写都是正常的。但是若将ARM也加入进来,ARM跑linux3.3,由ARM通过slaveloader语句启动DSP,再次观察分析EMIFA的地址数据,发现有错误不正确的情况。反复看程序是没问题。EMIFA的频率也试着改低了,依然不正常。请问是否有标准的3核交互的范例程序可以参考呢?ARM和DSP是走SYSLINK通讯,DSP通过EMIFA和FPGA相连。
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.
本人参考广州创龙公司的工程范例,用DSP单核和FPGA通过EMIFA连接和读写都是正常的。但是若将ARM也加入进来,ARM跑linux3.3,由ARM通过slaveloader语句启动DSP,再次观察分析EMIFA的地址数据,发现有错误不正确的情况。反复看程序是没问题。EMIFA的频率也试着改低了,依然不正常。请问是否有标准的3核交互的范例程序可以参考呢?ARM和DSP是走SYSLINK通讯,DSP通过EMIFA和FPGA相连。
源程序部分如下:
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的分频情况。
你好!这个问题应该是在OMAP-L138里面ARM和DSP同时操作一个外设,但是本身的参数不一致造成的。排除问题的方法:
1.使用ARM端跑linux时,EMIFA总线在u-boot里面被默认设置为91.2MHz,可以先确认下,是否频率正确,或者使用的u-boot版本是否比较旧;
2.建议在dsp程序里面不要再修改emifa总线的频率,容易导致arm端的nand flash出错;
3.使用CS2在创龙的内核v1.8及之前的版本,是默认在内核里面使能了CS2和创龙的FPGA板卡通信,如果使用ARM端和FPGA通信,该案例和配套硬件,可以直接测试;如果使用dsp和FPGA通信,可以参考文档,在内核里面将cs2对应的PHYSMAP FLASH(etc connect with FPGA)的功能disable,或更换成CS4~CS5。
如果是v1.9及以后版本的内核,是以内核模块方式提供,只要不加载该模块,可以直接使用dsp和FPGA通信。