This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
根据例程已经基本跑通,因设计需要,想每次SWRITE 发送包长为240字节,尝试设置SRIO_MAX_MTU由256改为240,以及CSL_SRIO_SetDataStreamingMTU(hsro,40),系统每次发出的SWRITE包长依然为256字节,请TI高手指点,多谢!
我有点疑惑,我这里没有你的这个代码,但是我看到的代码里面SRIO_MAX_MTU主要用来配置Message类型报文 ,Message是Type11类型报文。而你说的SWRITE是type6的报文,应该属于DirectI/O的方式。而且协议上来说SWRITE的payload可以是double word的倍数,因此240byte是可以的。
再次感谢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类型无效?
我理解应该是不行的。你只能两次调用Srio_SockSendDIO函数,每次240字节。同时改变第二次的目的地址。
你这里看到的你发送480byte的报文被分成256和224byte两个报文,这是因为LSU最大的总线读取传输块就是256byte (payload),这个参数好像不能改,因此你的需求只能通过发送两次来解决。