在论坛下载的Keystone_SRIO例程中,有几个问题没弄清楚
1.loopbak测试srio传输的是什么数据?
2.程序中,例如使用SWRITE事务时,Keystone_SRIO_LSU_transfer(&lsuTransfer);函数中,RIO_LSU_REG2寄存器写的地址ocalDspAddress=0x10802200是不是就是要发送的数据所在的寄存器地址?
3.0×10802200所在地址是Core0 L2 SRAM,难道就是测试发送的随机数据吗?
4.我要是想发送自定义的数据,是不是把这个地址改为要发的数据地址就行了?
谢谢!
Bruce Yang:
请专家帮忙解答下,这样理解对吗。谢谢
Bruce Yang:
Thomas,您好,非常感谢您得回复,
我用的是6678EVM
还有个问题,我在测试SRIO NO LOOP模式时,配置如下:
1.设置循环模式SRIO_Loopback_Mode loopback_mode= SRIO_NO_LOOPBACK;
2.
SRIO_Packet_Type packet_type[]=
{
SRIO_PKT_TYPE_SWRITE ,
// SRIO_PKT_TYPE_NWRITE ,
// SRIO_PKT_TYPE_NWRITE_R ,
// SRIO_PKT_TYPE_NREAD ,
//SRIO_PKT_TYPE9_STREAM ,
//SRIO_PKT_TYPE11_MESSAGE
};//我只测试SWRITE
3.
#define DSP0_SRIO_BASE_ID 0xA0
#define DSP1_SRIO_BASE_ID 0xB0
#define SRIO_DEFAULT_TEST_SPEED 1.25 //1.25 2.5 3.125 5.0
4.
SRIO_2DSP_Test()函数下,srio通道设置为:srio_cfg.srio_1x2x4x_path_control= SRIO_PATH_CTL_1xLaneA;
只是用laneA
5.测试参数改为
SRIO_Multiple_Test_Config test_2DSP_cfg=
{
SRIO_PATH_CTL_1xLaneA, /*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_TYPE_SWRITE, CORE0_LL2_HOST_SIZE1_FDQ, DSP1_SRIO_BASE_ID+SRIO_RX_FLOW_CORE1_LL2, 1024*1024}, /*port2*/
{SRIO_PKT_TYPE_SWRITE, ((Uint32)&packetBuffer_LL2_Size1[0][0])+0x10000000, ((Uint32)&packetBuffer_LL2_Size1[1][0])+0x10000000, LL2_PACKET_BUFFER_SIZE1}} /*port3*/
};
设置选择测试参数
transferParam= &test_2DSP_cfg.transfer_param[2];
测试结果:
1.如果不注释
/*On Turbo Nyquist EVM only lane 2 and 3 are connected between 2 DSPs*/
srio_cfg.blockEn.bLogic_Port_EN[0]= FALSE;
srio_cfg.blockEn.bLogic_Port_EN[1]= FALSE;
运行结果如下:
[C66xx_0] SRIO test between two DSPs start……………………………………..
[C66xx_0] Initialize main PLL = x10/1
[C66xx_0] Initialize DDR PLL = x20/1
[C66xx_0] configure DDR at 666 MHz
[C66xx_0] SRIO path configuration 1xLaneA
[C66xx_0] SWRITE from 0x 809 to 0x b3, 1048576 bytes, completion code = 4
2.如果注释上面两条语句后,会卡在while(0==(srioRegs->RIO_SP[i].RIO_SP_ERR_STAT&
CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK));
我的问题是:
1.我只有一个EVM6678,想看看SRIO发出的数据,想先用频谱分析仪大概测试下是不是所设置的频率。所以用NO LOOPBACK,用探针测试SRIO的金手指txn1 or txp1。用一块DSP,没有SWITCH,只执行SWRITE,SRIO金手指会有数据吗?
2.请问DSP0_SRIO_BASE_ID和DSP1_SRIO_BASE_ID是做什么用的???
3.completion code = 4代表什么错误啊,在哪能了解这种错误信息?
4.为什么开启端口0、1会开在那呢?
5.是不是必须有一个parter才能测试no loopback或者SRIO_EXTERNAL_LINE_LOOPBACK,不论是什么类型的事务???
十分感谢!!!
coolloog:
回复 Thomas Yang1:
你好
我在跑SRIO例程中的NO LOOPBACK模式时,我想查看两块板子接受收和发送是不是一样,在Memory Browser输入你上面提到的待发送数据在内存中的地址0x10802200。但是在两块EVM中的0x10802200地址的数据信息不一样,如下图,如果我想指定地址里的数据发送应该怎么改例程