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

C6657 SRIO

您好:

我最近在调试SRIO口,我想问下,在做External forwarding back test 测试中,多个SRIO设备的设备号如何设置的?如何设为8bit,可以随意指定吗,这里DSP0_SRIO_BASE_ID=0xA0,DSP1_SRIO_BASE_ID=0xB0,那设备之间是如何知道的?怎么指定从dsp0发到dsp1然后在回到dsp0的?

这些变量的意思是做啥的:srio_cfg.device_ID_routing_config= dsp1_device_ID_routing_config,KeyStone_SRIO_match_ACK_ID(2, DSP1_SRIO_BASE_ID, 2);

谢谢您的回答!

Allen35065:

建议看一下SRIO协议,SRIO协议支持8bit地址域或16bit地址域,两个设备要通信应保持在相同地址域,设备ID不能相同。

match ACK ID是一个SRIO握手的流程,细节部分应参考SRIO协议。

hongkun zhang1:

回复 Allen35065:

谢谢您的回答,这个协议我看过了,我的意思是我没找到他们各自设置自己设备ID的地方,比如现在dsp0的port0端口要做SRIO_EXTERNAL_FORWARD_BACK,那么首先要做几个事情,指定自己的设备ID,从哪个端口发出去,这里是prot0,链路模式1x还是其他,速度,等等,最关键的是要指定他要发到什么地方去,这里是dsp1的设备上去,我没看到的就是他没指定远端的设备ID啊?

上面的握手传入的参数是本地port和远方port,这就算建立了联系了吗?但是他还是没有指定远方设备ID啊?所以我问了这个KeyStone_SRIO_match_ACK_ID函数的作用。

最后,这个例程中所有srio参数都用的一个srio_cfg变量,这两个核之间不对对此产生冲突吗?

谢谢您的回答!

chen yi xue:

回复 hongkun zhang1:

发包的DEST不再config部分,而是在响应的LSU寄存器或者PKT_message 的描述符里面

你可以把SRIO系统当作是以个局域网系统来看,每个电脑通信时的目标IP不是保存在自己设备中的,而是由高层给出的,在这里我们可以看作是预定一好的DEVICE_ID拓扑,Srio并不考虑上层给的ID是否能用,它只是照着个ID来组包然后发出去(如果没有ID对应的设备直接丢弃就好了),你需要注意的是接收方是否设置了这个包的SRC_ID的接收规则,在BBR(Base_routing_register)里面配置。
以上~~
觉得答得不错就给个赞吧

hongkun zhang1:

回复 chen yi xue:

首先非常感谢您的回答

我现在就想做一个这个测试,那么对于DSP1来讲,和我的问题相关的主要配置就两个:

srio_cfg.device_ID_routing_config= dsp1_device_ID_routing_config;

srio_cfg.PktForwardingEntry_cfg = DSP1_PktForwarding_Cfg;

其中,dsp1_device_ID_routing_config的值是这样的:

SRIO_Device_ID_Routing_Config dsp1_device_ID_routing_config[]={ /*idPattern idMatchMask routeMaintenance*/ {DSP1_SRIO_BASE_ID+0, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+1, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+2, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+3, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+4, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+5, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+6, 0xFFFF, 1}, {DSP1_SRIO_BASE_ID+7, 0xFFFF, 1},};

DSP1_PktForwarding_Cfg的值是这样的:

SRIO_PktForwarding_Cfg DSP1_PktForwarding_Cfg[]={ /*forwarding ID 8 up*/ /* forwarding ID 8 lo */ /*forwarding ID 16 up*/ /*forwarding ID 16 lo*/ /*outport */ {DSP0_SRIO_BASE_ID+0, DSP0_SRIO_BASE_ID+1, DSP0_SRIO_BASE_ID+0, DSP0_SRIO_BASE_ID+1, 2}, {DSP0_SRIO_BASE_ID+2, DSP0_SRIO_BASE_ID+2, DSP0_SRIO_BASE_ID+2, DSP0_SRIO_BASE_ID+2, 2}, {DSP0_SRIO_BASE_ID+3, DSP0_SRIO_BASE_ID+3, DSP0_SRIO_BASE_ID+3, DSP0_SRIO_BASE_ID+3, 3}, {DSP0_SRIO_BASE_ID+4, DSP0_SRIO_BASE_ID+7, DSP0_SRIO_BASE_ID+4, DSP0_SRIO_BASE_ID+7, 3}};

对这两个结构体能否稍作解释呢?谢谢

chen yi xue:

回复 hongkun zhang1:

点回复我才能看到哦

第一个应该是配置收到id的接受规则,具体没看协议也不清楚

第二个是配置转发模式的 设定了转发的ID和这些转发包输出的port(根据port会走到不同的设备里面而图中是4x 所以只有port0),

hongkun zhang1:

回复 chen yi xue:

我点的就是回复你啊,虽然我还是有些疑问,但是非常感谢您的回答。如果方便的话可否加一下QQ,以后有机会请教呢?谢谢,1311462326

hongkun zhang1:

回复 chen yi xue:

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » C6657 SRIO
分享到: 更多 (0)