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.

[参考译文] TMS320C6670:在几个成功的 DIO 数据包传输后、SRIO 失败

Guru**** 2540230 points
Other Parts Discussed in Thread: SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/640407/tms320c6670-srio-failed-after-several-successful-dio-packets-transmisions

器件型号:TMS320C6670
Thread 中讨论的其他器件:SYSBIOS

您好!

我的配置为:
-SYSBIOS 6.46.4.53,
- MCSDK PDK 1.1.2.6 TMS320C6670、
- TMDXEVM6670_EVM 板。

我使用 SRIO 与 DIO 数据包和门铃(端口0上的模式0 - 1x)进行与 FPGA 的通信。 当我成功发送多个数据包时、会突然在循环中的 SRIO_sockSend_DIO 函数上挂起程序:

  while (1)

  {

      if (CSL_SRIO_IsLSUFull (gSRIODriverMCB.hSrio、ptr_srioSocket -> mapIndex)=0)

          中断;

  }

这意味着我没有影子寄存器。 我必须等待。 当我使用函数 CSL_SRIO_SetLoopbackMode (hSrio、0)将 SRIO 更改为环回模式时、一切都正常。 我始终具有可配置的影子寄存器。

以下是我的 LSU0 (0x02900D00)配置、从 reg0到 reg 5和 RIO_LSU_Setup_REG0:

RIO_LSU_REG0 = 0x00000000

RIO_LSU_REG1 = FPGA 上的目标地址

RIO_LSU_REG2 = DSP 上的源地址

RIO_LSU_REG3 = 0x00000000

RIO_LSU_REG4 = 0xBEEF0400

RIO_LSU_REG5 = 0x00000054

RIO_LSU_SETUP_REG0 = 0x44444444

对于测试案例,我不传输门铃消息。 下表显示了 RIO_LSU0_REG6和 LSU0_STAT_REG (0x02900DE8):

 

DIO 数据包 Tx NO

RIO_LSU0_REG6

LSU0_STAT_REG

1

0x00000011.

0x00000001

2.

0x00000012.

0x00000011.

3.

0x00000013.

0x00000111

4.

0x00000000

0x00001111

5.

0x00000001

0x00001110

6.

0x00000002

0x00001110

7.

0x00000003

0x00001110

8.

0x00000010

0x00001110

9.

0x40000011

0x00001110

LSU0_STAT_REG 未更改其状态。 几次传输后程序挂起的问题在哪里? 我应该检查什么以及在哪里? 在回送模式下,我没有遇到任何问题。

我还测试了 SRIO_LoopbackDioIsrexampleproject。

  1. 我已将环回模式更改为正常模式。
  2. 突发了从4到12的 SRIO_DIO_LSU_ISR_NUM_Transfers、
  3. 将 MAX_MEM_LEGER_ENOUTESCINCIEers 从30增加到120、

和…… 与我的计划中的情况相同。 在多个传输程序挂起后、因为没有可使用的影子寄存器。

Lukas。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    您是否尝试使用两块 TMDXEVM6670_EVM 板和一张分线卡运行修改后的正常模式示例项目?
    论坛中就影子寄存器不可用问题进行了一些讨论:
    e2e.ti.com/.../444758
    e2e.ti.com/.../411349
    e2e.ti.com/.../158284
    您可以尝试刷新 LSU 以查看变通办法是否有用。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我 没有尝试刷新 LSU。

    当我不将门铃发送到 FPGA 时、问题消失了。 以下是我的发送功能:

    //将所有数据传输到 FPGA
    if (SRIO_sockSend_DIO (hSrioSock、srcDataBuffer[0]、dataLength、(SRIO_SockAddrInfo*)&to)< 0){
    return error_SRIO_SEND_DATA_FAILED;
    }
    
    //检查传输
    if (SRIO_getSockOpt (hSrioSock、SRIO_Opt_DIO_READ_SOCK_COMP_CODE、&compCode、sizeof (uint8_t))< 0){
    System_printf ("错误:发送数据包后无法读取套接字中的完成代码。\n");
    }
    
    //在发送所有数据后、如果
    (SRIO_sockSend_DIO (hSrioSock、SRIO_SET_DBELL_INFO (0、0)、16、(SRIO_SockAddrInfo*)&toDoorbell)< 0){
    return error_SRIO_unable _send_Doorbell;
    }、则将 Doorbell 发送到 FPGA 

    以下是门铃结构的值:

    toDoorBell.dio.rapidIOMSB = 0x0;
    toDoorBell.dio.rapidIOLSB = 0x0;
    toDoorBell.dio.dstID = DEVICE_ID2_16BIT;
    toDoorBell.dio.ttype = SRIO_TTYPE_DoorBell_DEFAULT;
    toDoorBell.dio.ftype = SRIO_Doorbell; 

    发送门铃需要1、6秒

    在 回送模式下(使用函数 CSL_SRIO_SetLoopbackMode (hSrio、I);)一切正常。
    1. SRIO 设置为正常模式时,LSU 已满。 我无法发送数据 、因为 LSU 已满。
    2.当我不发送门铃时、LSU 的行为是正确的。 数据正在发送到 FPGA。
    SRIO 正在处理内核0、但将来它将处理内核3。

    您现在会发生什么情况吗?
    Lukasz。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我进行了一些测试。 通过使用 CSL_SRIO_SetLoopbackMode 函数、软件回送是回送。 电缆环回模式是通过使用电缆(TX_N 连接到 RX_N、TX_PConnected 连接到 RX_P)实现的。 此电缆环回是在端口0上进行的。

    以下是我的测试配置和结果:

    1.软件回送模式、手动发送门铃-一切运行良好且快速。

    2.软件环回模式,自动发送门铃(bindInfo.dio.DoorbellValid = 1;)。 当然、我已删除了发送功能中的门铃-一切都运行良好且快速。

    3.电缆环回、手动发送门铃-不幸的是、它无法正常工作。 发送4个 DIO 和4个门铃数据包后、LSU 已满、程序挂起。

    4.电缆环回、自动发送门铃(bindInfo.dio.DoorbellValid = 1;)。 当然、我已经删除了发送功能中的发送门铃-遗憾的是、它不起作用。 发送4个 DIO 和4个门铃数据包后、LSU 已满、程序挂起。

    5. DSP 与 SRIO 上的 FPGA 端口0连接,手动发送门铃-一切正常,但速度非常慢。 发送门铃需要1、6秒

    6. DSP 与 SRIO 上的 FPGA 端口0连接,自动发送门铃-一切正常,但速度非常慢。 发送门铃需要1、6秒

    7.与 SRIO 上的 FPGA 端口0相连的 DSP、发送门铃被关闭-一切都运行良好且快速。 当然、FPGA 会在传输完成后向 DSP 发送门铃数据包。 DSP 不执行此操作。

    您能说些什么、我应该检查什么? 在软件回送中、DSP 工作正常、门铃可在传输完成后发送。
    谢谢。
    Lukas。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我做了一些测试-请参阅下面的文章。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Lukas

    让我与团队核实一下、是否有人在您的测试案例4中发现了相同的"LSU full"问题、或与门铃相关的任何 DIO 问题。

    此致、
    Garrett