您好,
下面是我的SRIO message初始化,不知道哪里有问题
首先是发送DSP的:
TX_DESCP0_0->TXDESC0 = 0;
TX_DESCP0_0->TXDESC1 = (int )&xmtBuff1[0]; //Buffer Pointer
TX_DESCP0_0->TXDESC2 = CSL_FMK( SRIO_TXBUFFDESC_DEST_ID, 0x8)|
CSL_FMK( SRIO_TXBUFFDESC_PRI, 0)|
CSL_FMK( SRIO_TXBUFFDESC_TT, 1)|
CSL_FMK( SRIO_TXBUFFDESC_PORT_ID, 0)|
CSL_FMK( SRIO_TXBUFFDESC_SSIZE, SSIZE_256B)|
CSL_FMK( SRIO_TXBUFFDESC_MAILBOX, 0);
TX_DESCP0_0->TXDESC3 = CSL_FMK( SRIO_TXBUFFDESC_SOP,1 )|
//CSL_FMK( SRIO_TXBUFFDESC_EOP,1 )|
CSL_FMK( SRIO_TXBUFFDESC_OWNERSHIP,1 )|
//CSL_FMK( SRIO_TXBUFFDESC_EOQ,1 )|
CSL_FMK( SRIO_TXBUFFDESC_TEARDOWN,0 )|
CSL_FMK( SRIO_TXBUFFDESC_RETRY_COUNT,0 )|
CSL_FMK( SRIO_TXBUFFDESC_CC,0 )|
CSL_FMK( SRIO_TXBUFFDESC_MESSAGE_LENGTH,MLEN_512DW );
SRIO_REGS->QUEUE_TXDMA_HDP[0] = (int )TX_DESCP0_0 ;
然后是接收DSP的:发送DSP的SRIO ID号=0x7,接收DSP的ID号=0x8
SRIO_REGS->MAP[0].RXU_MAP_L = CSL_FMK( SRIO_RXU_MAP_L_LETTER_MASK, 0)|
CSL_FMK( SRIO_RXU_MAP_L_MAILBOX_MASK, 0x0)|
CSL_FMK( SRIO_RXU_MAP_L_LETTER, 0)|
CSL_FMK( SRIO_RXU_MAP_L_MAILBOX, 0)|
CSL_FMK( SRIO_RXU_MAP_L_SOURCEID, 0x7);
SRIO_REGS->MAP[0].RXU_MAP_H = CSL_FMK( SRIO_RXU_MAP_H_TT, 1)|
CSL_FMK( SRIO_RXU_MAP_H_QUEUE_ID, 0)|
CSL_FMK( SRIO_RXU_MAP_H_PROMISCUOUS, 1)| //0)|
CSL_FMK( SRIO_RXU_MAP_H_SEGMENT_MAPPING, 1); //1 multi-seg
RX_DESCP0_0->RXDESC0 = 0;
RX_DESCP0_0->RXDESC1 = (int )&rcvBuff1[0];
RX_DESCP0_0->RXDESC3 = CSL_FMK( SRIO_RXBUFFDESC_SOP,1 )|
CSL_FMK( SRIO_RXBUFFDESC_EOP,1 )|
CSL_FMK( SRIO_RXBUFFDESC_OWNERSHIP,1 )|
CSL_FMK( SRIO_RXBUFFDESC_EOQ,1 )|
CSL_FMK( SRIO_RXBUFFDESC_TEARDOWN,0 );
我觉得没有问题啊,但是接收方的ownership始终不为0,。
发送方的描述符里的message_length=4096B,但是接收方的memory里只收到2304B。
非常感谢!
xyz2011:
我也在做这方面的调试,如果你愿意把你的SRIO message工程所有文件分享出来或发给我gujian216@126.com,等我成功测试我想应该可以把你问题解决!
xiaoyan Bian:
回复 xyz2011:
问题解决了,我把寄存器PER_SET_CNTL从0x00000101改到0x00000001就可以了,既是UDI priority based而不是port based,我现在用的是4x模式,但是不太懂为什么,谁能给解释一下啊?
Zhan Xiang:
回复 xiaoyan Bian:
你可以参考srio user guide(SPRUE13F)中的table32,里面对设置成1port 4x有说明,要求将该bit清0.