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.

[参考译文] TMS320C6678:在 SGMII 端口0上使用外部主机运行 PA_emacExample

Guru**** 2553450 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/608867/tms320c6678-running-pa_emacexample-with-external-host-on-sgmii-port-0

器件型号:TMS320C6678

你好!

我正在尝试使用示例项目 PA_emacExample (来自 pdk_c667x_2_0_5)测试 C6778和定制板上主机 CPU 之间的以太网连接。

DSP 通过 SGMII 端口0直接连接到主机 CPU。
我已通过强制 dest_emac_port_id = 0 cpswLpbkMode = CPSW_loopback_none 来相应地修改项目

在主机 CPU 上、我有一个简单的服务器、它只将所有接收到的 UDP 数据包回传到 DSP。
我已经验证了这是否适用于 tcpdump:

(笑声)
06:16:05.747734 IP 192.168.1.4660 > 192.168.1.10.22136:UDP、长度80
06:16:05.748610 IP 192.168.1.10.22136 > 192.168.1.4660:UDP、长度80
(笑声)

但到目前为止、我仅成功地从主机 CPU 上的 DSP 接收了数据包。
DSP 似乎没有注意 CPU 回传的数据包。


很可能、我缺少对交换机的一些配置更改、但弄清这是什么并不重要。
虽然我看到其他人也有类似的问题、但我在这些论坛主题中找不到明确的解决方案。

是否有人会这样列举/解释需要哪些更改才能使 PA_emacExample 在 SGMII 端口0上与外部主机配合工作?

此致、

Martin

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

    我已通知软件团队。 反馈将发布在此处。

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

    要使 DSP 接收来自主机 CPU 的 UDP 数据包、您需要知道主机端 MAC 地址、IP 地址和 UDP 端口。 然后将其编程到 PA EMAC 示例中:pdk_c667x_2_0_5\packages/ti\drv\pa\examples\emacExamples\src\pa_mgmt.c
    - Add_MACAddress()
    - Add_IPAddress()
    - Add_Port()

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

    你好!

    感谢您的意见、Eric。

    抱歉、我忘记说我已经使用示例中的 MAC 地址(10:11:12:13:14:15)设置了主机。 正如 tcpdump 输出所示、我还在使用示例(192.168.1.10和22136)中的主机 IP 和端口。 因此、这应该是正常的。

    除了设置  DEST_EMAC_PORT_ID = 0 和  cpswLpbkMode = CPSW_LOOP_NONE 之外、这些是否是此用例唯一需要的更改?

    如前所述、我使用的是 SGMII 0而不是 SGMII 1。

    此致、

      Martin

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

    是的、我认为是这样。 如果未设置 DEST_EMAC_PORT_id = 0且 cpswLpbkMode = CPSW_LOOP_NONE、则主机 CPU 不会接收从 C6678传输的数据包。

    对于 MAC 地址、您无法使用10:11:12:13:14:15、当转换到 C6678时、请使用来自主机 CPU 的真正 MAC 地址、如 Wireshark 捕获中所示。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在意识到 Add_IPAddress 和 Add_Port 实际上是设置入站"滤波"后成功使其工作、因此应该具有 DSP 的参数、而不是主机 CPU 的参数。

    因此、我必须做的其他更改是:
    1) 1)将 Add_IPAddress()中的目标 IP 从0xc0、0xa8、0x01、0xA 修改为0xc0、0xa8、 0x01、0x1
    2) 2)将 Add_Port()中的端口从0x5678修改为0x1234
    3) 3)删除 VerifyPacket()中 softwareInfo0的检查

    不需要对 Add_MACAddress()进行任何更改,因为如果 cpswLpbkMode = CPSW_LOOP_NONE,代码实际上会将目标 MAC 设置为 DSP。

    现在、DSP 接收来自主机 CPU 的所有数据包、因此我已经验证了1Gbps 链路是否正常工作。 太棒了! :-)

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

    尊敬的 Martin:

     我 正在使用 \ti\pdk_C6678_1_2_5\packages/ti\drv\example projects\pa_emacExample_examplpleProject 从板和 DSP 发送和接收 UDP 数据包,我能够将数据包从板发送到 PC,我在  Wireshark 中看到这些数据包。 但我在接收器中遇到问题,我使用一小段 C 代码将 UDP 封包发送到电路板,并在 Wireshark 中获取。

    我无法在我的应用程序(板)中接收到它们,因此我执行了您所说的更改,但我仍然无法获得它。 请帮帮我。  

    此致、

    Raiman

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

    您好 Raiman、

    在我的测试设置中、我修改了 PC 端的 MAC 地址、以匹配 DSP 的预期。

    您是这样做的,还是修改了 Add_MACAddress()中的 MAC 地址以匹配 PC 的 MAC 地址?

    此致、

      Martin