各位好:
我现在用6657和Xilinx的K7系列FPGA通过SRIO进行数据交换,FPGA那边很简单,就是srio的IP核,都是流写模式,FPGA往DSP这边传输数据一切正常,但是6657这端发送数据到FPGA端,通过抓取FPGA SRIO核输出数据的几个信号可以看到,数据丢失了前两个字节,以及最后少传输了8个字节,我的初始化函数如下:数据发送函数就是调用的Keystone_SRIO_Init_drv.c里面KeyStone_SRIO_DirectIO函数进行发送的,想请问一下各位知不知道这是什么原因,或者我应该从哪个方向上去查这个问题。感谢各位。
serdes_cfg.commonSetup.inputRefClock_MHz = 156.25;
memset(&srio_cfg, 0, sizeof(srio_cfg));
srio_cfg.blockEn.bBLK1_LSU_EN= 1;
srio_cfg.blockEn.bBLK2_MAU_EN= 1;
srio_cfg.blockEn.bBLK3_TXU_EN= 1;
srio_cfg.blockEn.bBLK4_RXU_EN= 1;
srio_cfg.blockEn.bBLK2_MAU_EN= 1;
srio_cfg.blockEn.bBLK3_TXU_EN= 1;
srio_cfg.blockEn.bBLK4_RXU_EN= 1;
srio_cfg.loopback_mode= SRIO_NO_LOOPBACK;
srio_cfg.device_ID_routing_config= dsp0_device_ID_routing_config;
srio_cfg.uiNumDeviceId=
sizeof(dsp0_device_ID_routing_config)/sizeof(SRIO_Device_ID_Routing_Config);
srio_cfg.uiNumDeviceId=
sizeof(dsp0_device_ID_routing_config)/sizeof(SRIO_Device_ID_Routing_Config);
serdes_cfg.commonSetup.loopBandwidth= SERDES_PLL_LOOP_BAND_MID;
srio_cfg.serdes_cfg= &serdes_cfg;
srio_cfg.serdes_cfg= &serdes_cfg;
serdesLinkSetup.txOutputSwing = 15; /*0~15 represents between 100 and 850 mVdfpp */
serdesLinkSetup.testPattern = SERDES_TEST_DISABLED;
serdesLinkSetup.rxAlign = SERDES_RX_COMMA_ALIGNMENT_ENABLE;
serdesLinkSetup.rxInvertPolarity = SERDES_RX_NORMAL_POLARITY;
serdesLinkSetup.rxTermination = SERDES_RX_TERM_COMMON_POINT_AC_COUPLE;
serdesLinkSetup.rxEqualizerConfig= SERDES_RX_EQ_ADAPTIVE;
serdesLinkSetup.rxCDR = 5;
serdesLinkSetup.txInvertPolarity = SERDES_TX_NORMAL_POLARITY;
serdesLinkSetup.testPattern = SERDES_TEST_DISABLED;
serdesLinkSetup.rxAlign = SERDES_RX_COMMA_ALIGNMENT_ENABLE;
serdesLinkSetup.rxInvertPolarity = SERDES_RX_NORMAL_POLARITY;
serdesLinkSetup.rxTermination = SERDES_RX_TERM_COMMON_POINT_AC_COUPLE;
serdesLinkSetup.rxEqualizerConfig= SERDES_RX_EQ_ADAPTIVE;
serdesLinkSetup.rxCDR = 5;
serdesLinkSetup.txInvertPolarity = SERDES_TX_NORMAL_POLARITY;
msg_cfg.message_map = DSP0_message_map;
msg_cfg.uiNumMessageMap=
sizeof(DSP0_message_map)/sizeof(SRIO_RX_Message_Map);
msg_cfg.TX_Queue_Sch_Info= TX_Queue_Sch_Info;
msg_cfg.uiNumTxQueue =
sizeof(TX_Queue_Sch_Info)/sizeof(SRIO_TX_Queue_Sch_Info);
msg_cfg.rx_size_error_garbage_Q = SRIO_RX_SIZE_ERROR_GARBAGE_Q ;
msg_cfg.rx_timeout_garbage_Q = SRIO_RX_TIMEOUT_GARBAGE_Q ;
msg_cfg.tx_excessive_retries_garbage_Q = SRIO_TX_EXCESSIVE_RETRIES_GARBAGE_Q;
msg_cfg.tx_error_garbage_Q = SRIO_TX_ERROR_GARBAGE_Q ;
msg_cfg.tx_size_error_garbage_Q = SRIO_TX_SIZE_ERROR_GARBAGE_Q ;
msg_cfg.datastreaming_cfg= NULL; /*use default values*/
srio_cfg.msg_cfg= &msg_cfg;
msg_cfg.uiNumMessageMap=
sizeof(DSP0_message_map)/sizeof(SRIO_RX_Message_Map);
msg_cfg.TX_Queue_Sch_Info= TX_Queue_Sch_Info;
msg_cfg.uiNumTxQueue =
sizeof(TX_Queue_Sch_Info)/sizeof(SRIO_TX_Queue_Sch_Info);
msg_cfg.rx_size_error_garbage_Q = SRIO_RX_SIZE_ERROR_GARBAGE_Q ;
msg_cfg.rx_timeout_garbage_Q = SRIO_RX_TIMEOUT_GARBAGE_Q ;
msg_cfg.tx_excessive_retries_garbage_Q = SRIO_TX_EXCESSIVE_RETRIES_GARBAGE_Q;
msg_cfg.tx_error_garbage_Q = SRIO_TX_ERROR_GARBAGE_Q ;
msg_cfg.tx_size_error_garbage_Q = SRIO_TX_SIZE_ERROR_GARBAGE_Q ;
msg_cfg.datastreaming_cfg= NULL; /*use default values*/
srio_cfg.msg_cfg= &msg_cfg;
serdesLinkSetup.linkSpeed_GHz= 3.125;
srio_cfg.srio_1x2x4x_path_control= SRIO_PATH_CTL_4xLaneABCD;
srio_identify_used_ports_lanes(srio_cfg.srio_1x2x4x_path_control);
srio_cfg.srio_1x2x4x_path_control= SRIO_PATH_CTL_4xLaneABCD;
srio_identify_used_ports_lanes(srio_cfg.srio_1x2x4x_path_control);
KeyStone_SRIO_Init(&srio_cfg);
