Hi,all:
我想实现2个c6678之间通过SRIO的数据传输。假设DSP0和DSP1,比如,我想把DSP0的
DDR内部的数据,通过SRIO传送给DSP1内部的DDR。如果能够达到以下两个目标,我认为
SRIO传输成功。
1.
看数据是否正确传输。
DSP0和DSP1两端的发送和接收程序运行起来之后,并且在保证数据传输完成之后,看DSP1内部的
DDR里面的数据,是否等于DSP0内部DDR里面发送出来的数据。
2.
看DSP1是否进入中断函数
或者说DSP0在发送数据的同时,有没有成功的中断DSP1,通知DSP1.
以上是我个人对于SRIO传输实验的理解。我用了论坛提供的SRIO例程。具体是SRIO_2DSP_Test函数。
对照例程代码和我自己的目标,有两点不太明确。
1.
DSP0的LSU传输的src和dst地址都在这个结构体中定义
SRIO_Multiple_Test_Config test_2DSP_cfg=
{
SRIO_PATH_CTL_1xLaneA_1xLaneB_1xLaneC_1xLaneD, /*multiple_port_path*/
/*packet_type source dest size*/
{{0, 0, 0, 0}, /*port0 is not availible for this case*/
{0, 0, 0, 0}, /*port1 is not availible for this case*/
{SRIO_PKT_TYPE9_STREAM, CORE0_LL2_HOST_SIZE1_FDQ, DSP1_SRIO_BASE_ID+SRIO_RX_FLOW_CORE1_LL2, 4096}, /*port2*/
{SRIO_PKT_TYPE_SWRITE, ((Uint32)&packetBuffer_LL2_Size1[0][0])+0x10000000, ((Uint32)&packetBuffer_LL2_Size1[1][0])+0x10000000, LL2_PACKET_BUFFER_SIZE1}} /*port3*/
};
按照理解,DSP0发送数据给DSP1的话,src地址&packetBuffer_LL2_Size1[0][0])+0x10000000应该在DSP0的内存空间,
dst地址&packetBuffer_LL2_Size1[1][0])+0x10000000应该在DSP1内存空间或者是DSP1内存空间的映射。
但是,我看到CMD文件中,似乎这两个都是DSP0本地内存中。这个不合理啊。
2.
关于DSP0给DSP1传数据同时,触发中断问题。
a.
我没看明白代码在哪里触发了DSP1的中断
b.
这个DSP0向DSP1的中断指的是 DoorBeLL中断么?这个DoorBell怎么由DSP0给DSP1触发。
我看到代码里面在LSU传输之前调用了InitLsuDoorbell(&lsuTransfer, transferParam);
具体的是lsuTransfer->doorbellValid= 1;,这个doorbellValid=1,就是触发了DoorBell中断么?
以上几点,不是很明白,希望TI专家帮忙逐一解答谢谢!