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.

[参考译文] AM62P:如何在 Linux 中实现 CPSW 代理客户端

Guru**** 2859290 points

Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1634806/am62p-how-to-implement-cpsw-proxy-client-in-linux

部件号: AM62P

尊敬的 TI:
 我想在 Linux 上验证 cpsw 代理客户端的功能。 我在 Linux 方面做了以下工作:
 
启用 config_ti_cpsw_proxy_client
2.应用的设备树覆盖层:k3-am62p5-sk-ethfw.dtbo
 
但我不确定应该在 R5F 内核方面做什么。
我已刷ethfw_server.release.appimage.hs_fs写到 R5F 内核、但 Linux CPSW 代理客户端失败并显示超时:
root@am62pxx-evm:~# dmesg | grep "cpsw"
[    8.501238] ti_cpsw_proxy_client virtio1.ti.ethfw.ethdevice.-1.34: response timedout
[    8.513222] ti_cpsw_proxy_client virtio1.ti.ethfw.ethdevice.-1.34: failed to get virtual port info
[    8.522479] ti_cpsw_proxy_client virtio1.ti.ethfw.ethdevice.-1.34: rpmsg_dev_probe: failed: -5
[    8.522503] ti_cpsw_proxy_client virtio1.ti.ethfw.ethdevice.-1.34: probe with driver ti_cpsw_proxy_client failed with error -5
root@am62pxx-evm:~# dmesg | grep "rpms"
[    7.854831] virtio_rpmsg_bus virtio0: rpmsg host is online
[    7.863977] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
[    7.876956] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
[    7.979762] virtio_rpmsg_bus virtio1: rpmsg host is online
[    7.984354] virtio_rpmsg_bus virtio1: creating channel ti.ethfw.ethdevice addr 0x22
[    8.522479] ti_cpsw_proxy_client virtio1.ti.ethfw.ethdevice.-1.34: rpmsg_dev_probe: failed: -5
[    8.522565] virtio_rpmsg_bus virtio1: msg received with no recipient
  您能告诉我:
  1. 对于 CPSW 代理、应将哪个具体固件刷写到 R5F 中?
  2. 我是否需要在 R5F 固件中启用任何配置?
  3. EthFw + CPSW 代理服务器的正确设置是什么?
 BR、
Dongcan
 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dongcan:

    在 Linux 上是否有超过该系列的打印件? Linux 是否完成了成功引导? 在 R5 端看到的错误是预期打印的错误、是应用程序中包含的一个否定性测试  、用于防止 Linux 注册到保留的 mcast 地址。

    引导成功后、您能否检查 ifconfig? 您是否还能确认您遵循了哪个文档来启用 am62p 的 Linux 客户端?

    EthFw 客户端初始化和设置的详细信息文档位于以下位置: software-dl.ti.com/.../CPSW-Proxy-Client.html

    谢谢。此致、
    Teja。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Teja:
    非常感谢您的快速和清晰的答复。
    要回答您的问题:
    1. Linux 完全成功地启动,在 Linux 端没有错误。
    2. R5 上的“保存的 mcast“错误是正常的、正如你提到的、我理解这是预期的。
    3. Linux 上的 ifconfig 显示 eth0 启动并运行、我可以成功设置 IP 地址。
    4.我遵循了 TI 官方文档: software-dl.ti.com/.../CPSW-Proxy-Client.html
    我现在面临的真正问题是:
    -我设置 IP: ifconfig eth0 192.168.1.100
    -当我 ping 192.168.1.101 时、它始终显示:
    “无法到达目标主机“
    从 R5 日志中、我找到了一个密钥:
    ETHFW:virt_port_info | S2C | switchPortMask=2000000 ** macPortMask=0**
    macPortMask=0AM62Px 上的 Linux 客户端预期的默认行为是否是默认行为?
    日志已附加。
    Linux 端
    R5 侧
    此致、
    Dongcan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Dongcan:

    该问题似乎是由于缺少 处理共享存储器接口流量的 TAP 接口应用程序所致。 因此、请参阅 TAP 接口应用程序设置过程、然后您将能够获得正确的响应。 目前不提供 Sitara 平台文档。 要启用 TAP 接口、请参阅以下 Jacinto 文档: https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j7200/08_02_00_05/exports/docs/ethfw/docs/user_guide/demo_ethfw_combined_top.html#intercore_linux_client_test

    如果您遇到任何问题、请告诉我。

    谢谢。此致、
    Teja。

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

    尊敬的 Teja:


    非常感谢您的支持。
    我已启用 tap 接口应用程序并成功启动 launch_tap.service。tap0 接口已创建且 tapif 应用程序运行正常。
    但是、网络行为仍然与之前相同:我仍然无法 ping 远程设备、并且没有响应。

    我还有两个问题需要确认:
    1.如果我使用 tap 接口应用程序,我还需要装载内核模块ti-cpsw-proxy-client.ko吗?
    2.此问题是否与 R5 内核上运行的固件有关? 我只闪了闪   WKUP 内核 其中:

    --file=ethfw_server.release.appimage.hs_fs --operation=flash --flash-offset=0x80000

    该固件是否足以使 TAP 接口正常工作?
    请帮助我澄清这些。

    e2e.ti.com/.../8838.linux_5F00_log.log

    此致、

    Dongcan

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

    尊敬的 Dongcan:

    如果我使用 tap 接口应用程序、我是否仍需要加载内核模块ti-cpsw-proxy-client.ko

    是的。 TAP 接口是用于 Linux 的以太网代理客户端的辅助模块。 代理客户端负责单播和不包含多播消息、TAP 接口用于处理共享多播和广播消息。  

    此问题是否与 R5 内核上运行的固件有关?

    使用 EthFw 服务器示例刷写 WKUP_R5 应该足以支持与 Linux 和 WKUP_R5 内核的通信。

    您能否共享 EthFw 服务器日志(WKUP_R5 日志)、这些日志包括打印内容、直到您将静态 IP 添加到 MAC 地址(包括添加静态 IP 后将生成的打印内容)。 这将有助于更好地诊断行为。  

    您能否确认您所使用的 MCU+ SDK 的版本以及 Linux SDK 的版本?

    谢谢。此致、
    Teja。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Teja:
    感谢您的解释和支持。
    我已经在我这边进行了测试。 但即使不加载ti-cpsw-proxy-client.ko内核模块、我也可以成功地 ping 通、只需使用 tap 接口并在上配置静态 IP 即可tap0
    我想与您核实是否预期会出现这种情况。
    之前的 ping 故障可能是由于我的硬件问题造成的。
    我使用的是:
    • MCU+ SDK 版本: 11.01.08
    • Linux SDK 版本:11.01.16.13

    e2e.ti.com/.../0825.test.log

    谢谢。此致、

    Dongcan

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

    尊敬的 Dongcan:

    这种行为是可以预料的、但实际影响将使这种做法不是可行的选择。 如果希望 处理单播、多播和广播消息、则需要启用 EthFw、这还需要 ti-cpsw-proxy-client 模块。 这使得 DMA 通道可以通过 Linux 从 CPSW 直接传输到 A53 内核。

    通过仅启用 TAP 接口、您仅使用共享内存接口、这会增加 WKUP_R5 的负载、并且由于共享内存路径会占用大量资源、因此 Linux 的吞吐量也受到限制。

    是否正在运行默认的 ethfw 示例? 您是否对应用配置进行了任何更改?

    此版本上的 EthFw 经测试可以正常工作。 但我们来尝试检查是否可以在设置中重现此问题。 请在 3-4 天内回复。

    谢谢。此致、
    Teja。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Teja:
    感谢您的详细说明。
    现在、我已经在我这边测试了两种模式:
    • 我可以使用进行正确通信 ti-cpsw-proxy-client.ko与一起使用 eth0
    • 我也可以使用进行正确通信 仅 TAP 接口 () tap0
    我正在运行 默认 EthFw 示例 未修改任何应用配置
    感谢您的支持。
    此致、
    Dongcan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Dongcan:

    我可以使用正确通信 ti-cpsw-proxy-client.ko与一起使用 eth0[/报价]

    您是否也能够获得 ping 响应? 我们建议您刷新 ARP 表并尝试 ping eth0。 还请尝试运行多播 iperf。

    刷新主机 PC 中的 ARP 条目的命令:  sudo ip neigh flush all

    谢谢。此致、
    Teja。

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

    尊敬的 Teja:
    是的、我只使用 ti-cpsw-proxy-client.ko 和 eth0 就可以成功获得 ping 响应、而无需使用 TAP 接口。

    e2e.ti.com/.../8004.test.log

    此致、

    Dongcan

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

    尊敬的 Dongcan:  

    这确认单播和独占多播数据路径已得到验证。 您是否还可以在 DUT 运行 UDP iperf 服务器且主机 PC 运行多播 iperf 客户端的位置尝试运行多播 iperf? 这需要代理客户端模块和 TAP 接口。 这证实了要测试的 EthFw 的全部功能。

    在客户端(在外部 PC 的 Linux 终端上)

    iperf -c 224.0.0.251 -u --TTL 5 -t 5 -b 10M --BIND (要从中发送共享 mcast 流量的接口 IP)

    在服务器端(在 Linux 客户端上):iperf -s -u -B 224.0.0.251 -i 1

    谢谢。此致、
    Teja。