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.

[参考译文] RTOS/TDA3XEVM:TFDTP 网络流终端

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/670886/rtos-tda3xevm-tfdtp-network-stream-termination

器件型号:TDA3XEVM

工具/软件:TI-RTOS

大家好、

我们尝试使用 VSDK 2.12在 TDA3板上实现视频流应用。
该应用是3D 环境、其中 nullLink 和 HDMI 作为并行视频接收器。
我们使用 TFDTP 协议并调整了 nullLink 和 network_ctrl 工具。
TFDTP 中的 TCP 握手被禁用/注释掉、我们只是发送 UDP 数据包
视频开始时。

好奇的是、我的 PC (Win10 i5-660、16GB RAM)上的一切工作正常、但没有任何工作正常
其他 PC (Win7或 Win10、带相应的硬件)。 TDA3板与环视应用相连接时
到任何其他 PC 并启动、UDP 流将与最后一个 UDP 数据包完全停止
第二张图片的内容。
我发现、在故障情况下、每个 UDP 数据包之间的延迟约为1....~3ms。 因此需要一个 YUV 图像
~1秒(视频输入为30fps)。 这会导致整个视频管道挂起、因为帧缓冲区
被网络堆栈(我认为)阻止的时间过长。
我在 Wireshark 中看不到任何从 PC 到 TDA3板的网络消息、这些消息可能会导致我们的中的终端
TDA3应用。 (仅来自 TDA3的 UDP 数据包)。 我们的应用程序只会停止、而不会对 PC 产生任何可见的影响。
但必须有影响。
是否有人可以提供有关如何调试此问题的提示?

提前感谢!


祝你一切顺利、
Sebastian

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

    您好 Sebastian、

    当前的 TFDTP 网络工具默认启用重新发送机制。 这将使用 TCP/IP 握手来实现正确的帧传输。

    您是否已在工具中禁用此功能和链接代码为空?  当冻结发生时、您能否连接运行 TFDTP 的内核并查看其卡在何处?

    另外、当它在一台 PC 上运行时、您能否检查网络设置(Autoneg、流控制等)是否相同? 此外、请检查 PC 是否配置为1Gig 速度。  

    请分享故障日志和工作案例。  

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

    是的、在空链路中也禁用了重新传输。 不再有握手、因为视频流应该只发送。 数据速率非常高(300-400 MBit)、因此重新传输会进一步增加数据速率。 视频流通常是 UDP 流、没有任何重新发送功能。
    我已经禁用了另一个线程中提到的 Rx 通道、并且行为是一样的! 因此、它似乎不在以太网协议级别。 我想它与网卡设置有关!? 我已经将这些设置与我的工作系统和另一个流残桩相比较。 可用设置不同、但相同的设置相同(例如、为 Rx 和 Tx 启用流控制;速度=自动放弃等)。
    目前我没有日志、因为在控制台上、当它挂起时没有输出。 此外、Wireshark 只显示刚刚停止的 UDP 数据包。
    我可以看到、当空链接中触发 system_CMD_new_data 事件-> bufList.buffers[bufId]->chNum == nullLinkActiveChId 在 nullLink_tsk.c 中启用时、应通过空链接传输的选定通道0不再存在。
    但声码器 CHN 可用(1-3)、仅 CHN 0可作为启用网络。 我想它被网络层阻止了吗?

    我将使用 JTAG 进行调试以获取更多信息。 是否可以启用 GMACSW 或 NSP 的详细或调试模式?

    此致、感谢您的帮助!

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

    但斯克提供详细答复。
    1.由于您已从链接中禁用 TCP/IP,因此不应出现任何冻结,因为它仅是 UDP,连接更少,并且无论什么都应进行流式传输。 您能否确认当系统冻结时、您无法通过网络记录任何日志?

    2.冻结时,系统中的其他链接是否正常工作? 您能否通过 CCS 检查每个日志的性能统计信息?
    您能否检查以下寄存器中 GMAC 的内容
    统计数据- 0x484900至498C
    2. RGMII 控制寄存器- 0x4848_5288 -显示每个端口的速度、双工设置。
    SL 控制寄存器- 0x4848_4d84 (端口0)、4dC8 (端口1)
    SL 状态寄存器- 0x484_4d88 (port0)和4dc8 (port1)

    3.您可以通过 NDK_cfg.mk 为 NSP 详细模式启用"仪表"模式,在该模式下存储仪表日志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../work_5F00_PC_5F00_Stream_5F00_on.txte2e.ti.com/.../work_5F00_PC_5F00_Stream_5F00_off.txte2e.ti.com/.../nwork_5F00_PC_5F00_Stream_5F00_off.txte2e.ti.com/.../nwork_5F00_PC_5F00_Stream_5F00_on.txtHelloPrasad、

    1.您是指 Wireshark 的日志吗? 不、在 Wireshark 中再也看不到什么了。 UDP 只会停止、没有什么可看的。

    系统没有真正冻结。 只有视频冻结。 链路仍处于活动状态、但帧缓冲区未刷新/更新。

    我已将一些日志转储到工作 PC 和不工作 PC 上、同时启用和禁用网络流。

    nwork_PC_Stream_off.txt 包含禁用网络流(仅限 HDMI 输出)的不工作 PC 的统计信息
    nwork_PC_Stream_on.txt 包含已启用网络流(+ HDMI 输出)的不工作 PC 的统计信息
    Work_PC_Stream… 包括工作 PC 的统计数据、其中视频流没有卡住。

    我在这里看不到太大的差异。  

    接下来、我将检查您的其他提示、非常感谢!

    此致、

    Sebastian

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

    很抱歉、您之前没有询问、您是否能够在冻结时 ping 电路板?
    此外、在您共享的日志中、在启用和禁用网络的情况下、我没有看到 NULL 链接的统计数据。 此外、为什么在用例中使用零源?

    您能否共享您的用例映像文件? 如果您不能在公共 e2e 上共享、您可以通过电子邮件发送 a0132233@ti.com

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

    您好 Prasad、

    共享映像是可以的、因为它几乎是默认的 TI UC。 合成算法使用零源链路。 我不知道为什么、这是默认的 TI 设置。 也许同步算法需要一个虚拟缓冲器才能运行。

    当视频冻结时,堆栈仍响应 ping 命令。

    此致、

    Sebastian

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

    e2e.ti.com/.../Registers.zip

    您好 Prasad、

    我已将您提到的寄存器包含在目录中。 您能看到发生了什么情况吗?

    对我来说、它看起来非常相似。

    Sebastian

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

    您好 Sebastian、

    从下面的寄存器转储中可以看出、在不工作的 PC 上、载波检测错误经常发生、 这会在 UDP 的情况下导致视频冻结。

    此外、由于 在 TCP/IP 中处理了由于载波侦听错误导致的压降、因此 Ping 工作正常。

    您能否共享电路板原理图和 PHY 详细信息(PHY 名称、数据手册)等? 如果保密协议为机密、请再次通过邮件共享。

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

    当您使用 VSDK2.12时、TFDTP 中存在一个已知问题、可能导致数据包丢失。

    您能否在 vision_sdk_02_12_00_00\ti_component-networking\nsp_gmacsw_4_15_00_00\packages/ti\nsp\drv\tfdtp\tfdtp.c 中更改为下面的内容

    -/*使 TFDTP 数据包标头在此处更新无效*/
    - cache_wbInv((ptr)&tfdtpsp->tfdtp_Bhdr,sizeof (tfdtp_stream_header_t),(Bits16) cache_Type_ALLd,(bool )1U;
    +/*使 ETh 帧头数据包报头无效,因为它在此处更新*/
    + Cache _WB (((ptr) pPacket->pHeader、TFDTP_packet_header_size、(Bits16) Cache _Type_ALLD、(bool) 1U);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这也吸引了我的注意力。 我已经检查了电缆并对其进行了更改、但行为没有变化。 (我使用 CAT6电缆)
    我将向您提供您要求的信息。
    我已经向您发送了一封邮件!

    Sebastian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将检查 VSDK2.12的问题、谢谢!

    Sebastian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经修补了 tfdtp.c、并且行为没有变化。 还是一样
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    塞巴斯蒂安

    好的。 请保留此更改、因为在缓存标头内存时需要此更改。
    如果您需要用于跟踪目的的补丁、我可以创建并共享它。 请告诉我。

    我将查看原理图。 如果发现任何问题、将会通知您。

    您能否共享在 GMACSW_getconfig 函数中将 pGMACSWConfig->macInitCfg[i]。macConnectionType 设置为什么?
    (vsdk_later\vision_sdk\links_fw\src\rtos\utils_common\src\ndk\ndk_nsp_hooks.c)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prasad、

    我在 linkStatus()中打印了一个打印输出,并得到:

    用于工作和不工作的 PC

    [IPU1-1] 26.861648 s:NDK:链路状态:PHY 0上的1000Mb/s 全双工
    [IPU1-1] 26.861739 s:NDK:macConnectionType 0续:7
    [IPU1-1] 26.861800 s:NDK:macConnectionType 1续:7

    在流式传输之前和之后(我拔下了 eth 连接器/电缆)是相同的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian、

    对于工作正常和不工作的 PC、打印内容是否相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对爬虫程序 PC 来说是!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否共享在 GMACSW_getconfig 函数中将 pGMACSWConfig->macInitCfg[i]。macConnectionType 设置为什么?
    (vsdk_later\vision_sdk\links_fw\src\rtos\utils_common\src\ndk\ndk_nsp_hooks.c)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这就是我已经发布的内容(第@12:52 PM)。 这是 printf 代码:

    静态空 local_linkStatus (uint32_t phy、uint32_t linkStatus)

    GMACSW_Config * pgSt = GMACSW_getconfig ();


    VPS_printf (" NDK:链路状态:PHY 上的%s %" PRIu32 "\n"、LinkStr[linkStatus]、phy);

    vps_printf (" NDK:macConnectionType 0续:%d\n"、pgSt->macInitCfg[0].macConnectionType);
    vps_printf (" NDK:macConnectionType 1续:%d\n"、pgSt->macInitCfg[1].macConnectionType);


    工作 PC 和非工作 PC 的 macConnectionType 都为7 (MAC_CONNECT_TYPE_RGMII_DETK_INband)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian、

    是否可以尝试将其设置为 MAC_CONNECT_TYPE_RGMII_FORCE_1000_FULL?
    可能无法正常工作的 PC 上的 PHY 无法自动协商。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prasad、

    很不错!! 是的! )
    我在 Wireshark 中看到 UDP 数据包!
    我已在调试模式下构建了 AppImage、因此帧速率为低、因此我的播放器软件不会显示它。 我必须在轻松模式下验证它。 但我认为就是这样! )
    我想知道为什么它不能用于自动协商? 所有 PC 网卡和底板的 phy 都支持它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sebastian、

    有趣!

    是的、我同意、PC 网卡应适用于自动协商。 我还需要检查这是 TDA 侧的问题还是 PHY 侧的问题。 因此、不能说这是 PC 网卡问题。
    请检查版本构建中是否存在任何问题。

    我可能无法花时间调试 Mac 配置更改、因为设置为强制模式不会因关闭系统而出现问题。
    我将在获得时间后更新根本原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它的工作方式就像在发行版内部版本中一样!

    非常感谢您的帮助,Prasad! )

    也许我们找出问题的根本原因、然后我们会告诉您!

    祝你度过美好的一天!

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

    您好 Sebastian、

    很高兴能提供帮助。 希望找到根本原因!