TI中文支持网
TI专业的中文技术问题搜集分享网站

请问C6670 SRIO SWRITE 如何发送240字节的SRIO包。

根据例程已经基本跑通,因设计需要,想每次SWRITE 发送包长为240字节,尝试设置SRIO_MAX_MTU由256改为240,以及CSL_SRIO_SetDataStreamingMTU(hsro,40),系统每次发出的SWRITE包长依然为256字节,请TI高手指点,多谢!

King Wang1:

我有点疑惑,我这里没有你的这个代码,但是我看到的代码里面SRIO_MAX_MTU主要用来配置Message类型报文 ,Message是Type11类型报文。而你说的SWRITE是type6的报文,应该属于DirectI/O的方式。而且协议上来说SWRITE的payload可以是double word的倍数,因此240byte是可以的。

user2003297:

回复 King Wang1:

非常感谢KingWang1的解释,想再请问一下:SWRITE的payload的长度该在哪里配置?哪个变量或者寄存器?盼解答,多谢。

King Wang1:

回复 user2003297:

SWRITE都属于Direct I/O的传输,是配置LSU寄存器,长度在LSU_REG3里面的byte_count配置。

user2003297:

回复 King Wang1:

再次感谢KingWang1,我按您的方法配置了byte_count为240(Srio_SockSendDIO(*240*)),确实可以发送SWRITE的数据包。

但是这样每次调用Srio_SockSendDIO只能发送一个SWRITE包,如果我想一次调用Srio_SockSendDIO发送缓存里的一段数据,比如480字节,想分成2个240字节的SWRITE包来发,这样调用Srio_SockSendDIO(*,480,*),实际系统发出2个SWRITE,第一个长为256,第二个为224,并未按我的设想发送。

请问1:如果想分成2个240字节的SWRITE包来发,该如何配置?

PS:我尝试去配置DS_LL_CTL寄存器的MTU为60,也没有起作用,是不是DS_LL_CTL所配置的信息只对消息类型有效,而对DIO类型无效?

King Wang1:

回复 user2003297:

我理解应该是不行的。你只能两次调用Srio_SockSendDIO函数,每次240字节。同时改变第二次的目的地址。

你这里看到的你发送480byte的报文被分成256和224byte两个报文,这是因为LSU最大的总线读取传输块就是256byte (payload),这个参数好像不能改,因此你的需求只能通过发送两次来解决。

赞(0)
未经允许不得转载:TI中文支持网 » 请问C6670 SRIO SWRITE 如何发送240字节的SRIO包。
分享到: 更多 (0)