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.

[参考译文] TDA4VH-Q1:修改 spsw9g 驱动器适配器 EtherCAT

Guru**** 2457760 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1465911/tda4vh-q1-modify-spsw9g-drive-adapter-ethercat

器件型号:TDA4VH-Q1
主题中讨论的其他器件:TDA4VH

工具与软件:

你(们)好

平台:TDA4VH(我们公司的测试板卡)

SDK:ti-processor-sdk-linux-adas-j784s4-evm-09_01_00_06

我们的产品使用 EtherCAT 网络协议。 我们使用 TI 提供的 CPSW9G 专用驱动程序。当我们启动两个 EtherCAT 主站时、内核报告了大量警告。以下函数返回负值(-12)
 am65_cpsw_nuss_rx_packets();
    --> am65_cpsw_nuss_rx_push();

两个 EtherCAT 主站将启动两个内核线程。 Cpsw9g 专用驱动程序关闭 Rx 硬件中断并屏蔽内核协议栈。 主站直接调用 am65_cpsw_nuss_rx_packets()来获取数据包。 但我们只有一个 RX Ringbuff。 因此,当 Ringbuff 有数据时,有两个内核线程同时访问 Ringbuff。 在解析数据之前、我们不知道数据来自哪个端口。

问题:

1、我们是否有办法先确定 Ringbuff 数据来自哪个端口、然后根据 EtherCAT  主站读取?

2、如果4个线程访问 Ringbuff、则不会导致其状态障碍。

谢谢

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

    您好!

    Unknown 说:
    但我们只有一个 TX Ringbuff

    您是指 RX Ringbuff?

    SDK 11.0中增加了对多个 Rx 队列的支持。 这本书将在今年4月提供。 您可以在上游分支查看此内容: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?h=ti-linux-6.12.y-cicd

    这样就能为您解决问题。

    此致、
    Tanmay

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

    你(们)好

    我可以启用8个 RX 振铃爱好者。 然而,我发现,即使启用了8 ringfalls,端口仍然共享 Ringbuff 数据(我们不知道它的端口 ID ,直到数据被解析)。 是否有办法使每个端口对应于其自己的 Ringbuff?

    EtherCAT 主站主动调用 am65_cpsw_nuss_rx_packets()来读取数据。 我们需要知道数据来自哪个端口、否则 EtherCAT 主站1 (端口1)可能会从端口2获取数据。我们尝试了以下操作。 如果 EtherCAT Master1检索不属于其端口的数据、它将返回-1。 等待 EtherCAT Master2检索数据。 但数据提取完毕后、Ringbuff 的状态会发生变化。 我们无法正确读取数据。

    UDMA 能否将不同端口的数据分发给不同的 RX 爱好者? 端口和 RX Ringbuff 对应一对应。

    谢谢

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

    您好!

    让我来看看这个。

    此致、
    Tanmay

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

    您好!

    可以从 DMA 描述符获取这些信息。 在同一个函数"am65_cpsw_nuss_rx_packets ()"中,有一个"cppi5_desc_get_tags_ids()"调用。 这将为您提供数据的端口。

    希望这对您有所帮助。

    此致、
    Tanmay