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.

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);

谢谢您的回答!

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

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

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

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

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

    谢谢您的回答!

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

    我现在就想做一个这个测试,那么对于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}
    };

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

  • 点回复我才能看到哦

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

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

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

  • 最近不是很有空 不过你可以加我,有时间我就回

    414763524