你好:
我们自己做的板子,上面有两块C6455,现在两块板子的电源、参考时钟等等都做好了,SDRAM和EMIF模块测试都正常,但是在测试SRIO时,发现程序总是在如下代码下死循环。
response.index = 0;
do {
status = CSL_srioHwSetup (hSrio, &setup);
if (status != CSL_SOK) {
printf("SRIO: … Hardware setup, failed\n");
return;
}
delay(1000); //check the response every 100 cpu clcok = 100 ns
CSL_srioGetHwStatus (hSrio, CSL_SRIO_QUERY_SP_ERR_STAT, &response);
} while(response.data & 0x1);
这部分代码应该是查询SPn_ERR_STAT中PORT_UNINITIALIZED,即ports输入输出是否初始化,如果没初始化,就一直等待下去。
两个DSP硬件上SRIO的四个通道全部相连了。
Jacob1:
你好,之前我们这边调试的时候,寄存器设置的不对,有可能也会死在那里。还有你两边的C6455的srio都开了么?
jone jack:
回复 Jacob1:
两边的都开了,分主从模式。不知道这和打开的顺序有没有关系,还有我发现把
/* Unlock the powersaver control register */
// CSL_FINST (((CSL_DevRegs*)CSL_DEV_REGS)->PERLOCK, DEV_PERLOCK_LOCKVAL,
// UNLOCK);
/* Enable the SRIO */
// CSL_FINST (((CSL_DevRegs*)CSL_DEV_REGS)->PERCFG0, DEV_PERCFG0_SRIOCTL,
// ENABLE);
把这两句话屏蔽掉,就可以完成初始化,但是好像无法读写,就是主DSP写256字节数据到从DSP的0x900000地址,从DSP的数据没有任何改变!
Jacob1:
回复 jone jack:
你好,能否问一下那个你的程序中CSL_srioHwSetup 这个在哪里有具体的说明?从C6678的csl文档中没有找到呢。
jone jack:
回复 Jacob1:
我用的是C6455的CSL,DSP也是C6455.
Jacob1:
回复 jone jack:
不好意思,看错了,我们现在正在调的是C6678的。
附件是我们之前调试过的,DSP+FPGA的架构的DSP端的程序,你看看有什么帮助没有。