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.

[参考译文] TDA4VM:添加 ethfw 静态 VLAN 更改后、与主接口的通信/ping 会出现问题

Guru**** 2393725 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1480421/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes

器件型号:TDA4VM

工具与软件:

尊敬的 TI 团队:

我们仍然无法从主接口 eth0 (Target)到 PC (Host)获取 ping。 我已重新创建此线程以解决下面的线程中遇到的问题。


https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1428787/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes

您能帮助我们进一步调试吗?





此致、
Sesha Venkata Harikrishna。



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

    您好!

    如前面的主题中所述、您是否已尝试在 Linux 端启用内核间通信和 TAP 接口? 因为 ETHFW 尚不支持 VLAN ARP。

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    我们 通过在 ethfw/ethfw_build_flags.mk 中设置"ethw_proxy_arm_support=no"来禁用代理 ARP 支持、并尝试以下实验。

    实验- 1: 我们 使用以下命令在主机(PC)端和目标端手动添加 ARP 条目: 该 Ping 操作成功。


    用于添加 ARP 条目的 PC 端命令:     sudo arp -s <192.168.0.16><MAC_address_for_192.168.0.16_IP>
    用于添加 ARP 条目的目标端命令:        ARP -s <192.168.0.3>   


    实验- 2:  我们 删除了静态添加的 ARP 条目。 然后、我们cpdump对目标和主机都运行了 t 命令、并尝试从目标 ping PC IP。 我们观察到目标可以发送 ARP 请求、PC 响应 ARP 请求。 目标成功从 PC 收到 ARP 响应。 但是、目标无法添加 ARP 条目、  进而导致 ping 失败。

    请查找捕获日志:



    您能否帮助我了解目标无法添加 ARP 条目的原因、并提供一些要点来进一步调试此问题?


    此致、
    Sesha Venkata Harikrishna。

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

    您好!

    以上通信是否与 VLAN 通信?

    您能不能和 TI SDK 10.1一起检查一下吗?
    在使用 VLAN 的 SDK 10.1 ARP 之前、即使启用了内核间通信、也不会转发到客户端并被 ETHFW 消耗。

    仅当从对等端收到 ARP 请求时、ARP 条目将添加。

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    q1) 上述通信是否与 VLAN 通信?

          -->  已创建 VLAN、但我们已将 IP 192.168.0.16分配给"eth0"接口

    Q2) 您可以用 TI SDK 10.1检查相同的命令吗?

        在使用 VLAN 的 SDK 10.1 ARP 之前、即使启用了内核间通信、也不会转发到客户端并被 ETHFW 消耗。

         -->  我们目前无法使用10.1进行测试、因为这在移植后正在9.2 SDK 上进行测试


    Q3)  ARP 条目仅在从对等端收到 ARP 请求时添加。

         我们 通过禁用和启用尝试了 ETHFW_PROVISION_ARP_SUPPORT、在这两种情况下、我们都观察到类似的情况:
            我们 删除了静态添加的 ARP 条目。 然后、我们cpdump 对目标和主机都运行了 t 命令、并尝试从目标 ping PC IP。 我们观察到目标能够发送 ARP 请求、PC 响应 ARP 回复。 目标成功从 PC 收到 ARP 响应。 但是、目标无法添加 ARP 条目、  进而导致 ping 失败。

          我们观察到、目标发送的数据包被标记为 VLAN-id 1。  这就是即使任一侧都接收到数据包、ping 也失败的原因。 您可以在下面的 Wireshark 图中看到它。 不过、当静态添加 arp 条目时、 Ping 工作正常。



    我们正在从8.1 SDK 移植到9.2 SDK、之前这一版本不会出现问题。 让我们知道如何在9.2 SDK 中获得类似的功能。



    此致、

    Sesha Venkata Harikrishna。

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

    您好!

    目标端 VLAN 和主机端 VLAN 是否相同?

    另外、您可以转储 ALE 表并与我们分享一下吗?

    此外、您能否提供8.1 SDK 工作场景的日志。

    此致、
    Sudheer

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

    您好!

    [报价 userid="476877" url="~/support/processors-group/processors/f/processors-forum/1480421/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes/5696125 #5696125"]

    Q2) 您还可以转储 ALE 表并与我们分享。

         ---->请查找8.1 (工作案例)和9.2的 ALE 转储。

    [报价]

    您能否通过参考以下常见问题解答提供 ALE 表转储。
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1204394/faq-tda4vm-how-to-print-the-ale-table-for-cpsw-in-tda4-dra8-devices

    [报价 userid="476877" url="~/support/processors-group/processors/f/processors-forum/1480421/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes/5696125 #5696125"]

    Q3) 此外、您能否提供8.1 SDK 工作方案的日志。

        ----> 请查找 8.1和9.2(不工作)的工作日志。

    [报价]

    您能否共享 tcpdump 日志(.pcap 文件中的 salve)和链接伙伴 Wireshark 日志。

    此致、
    Sudheer

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

    您好!

    我认为在8.1版中、我们使用了j721e-cpsw-virt-mac支持自检的驱动程序。 但是、在9.2版中、我们使用的ti_cpsw_proxy_client驱动程序不支持自检。 您能否确认我的回答是否正确? 如果没有、您能否告诉我是否有其他方法可以在9.2 SDK 上执行 ALE 转储?

    是的、9.2 SDK 中不支持自检。
    如果是 CCS、则可以在 SDK 中使用 jel 脚本。

    否则、您可以参阅以下常见问题解答。
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1220277/faq-tda4vm-how-to-get-cpsw-ethernet-statistics-on-tda4-dra8-devices
    我们有一个 ETHFW 补丁、用于定期转储 CPSW 统计信息并启用 ALE 转储。

    通过观察上述图片、似乎在9.2 SDK 中、数据包将vlan_id=1默认设置为。 您能检查一下并告诉我吗?

    默认情况下、VLAN ID 1是来自 SDK 的主机端口 VLAN、CPSW 将为从内部内核接收到主机端口的未标记添加 VLAN ID 1、并在从外部端口发送数据包时取消标记。

    如果使用 VLAN ID 1、则需要将主机端口 VLAN ID 从 SDK 更改为不同的未使用 VLAN 值。

    此致、
    Sudheer

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

    尊敬的 Sudheer:

    当数据包从主接口(eth0)上的主板传输到外部主机时、它必须是未标记的数据包(无 VLAN-ID)。 这就是它之前在8.1 SDK 中的工作方式(如日志和数据包转储中所示)。 由于我们要将功能移植到定制电路板上的9.2 SDK、因此它必须完全相同。

    此致、

    Sesha Venkata Harikrishna。

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

    您好!

    [报价 userid="476877" url="~/support/processors-group/processors/f/processors-forum/1480421/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes/5709863 #5709863"]
    当数据包从主接口(eth0)上的主板传输到外部主机时、它必须是未标记的数据包(无 VLAN-ID)。 这就是它之前在8.1 SDK 中的工作方式(如日志和数据包转储中所示)。 由于我们要将功能移植到定制电路板上的9.2 SDK、因此它的运行必须完全相同。

    如果您要从 eth0发送 VLAN 标记的数据包、默认情况下、不会根据静态 VLAN 条目删除标记、因为我们使用 UNTAG MASK 作为0。


    如果您希望在外部端口出口时删除标签、需要设置位0、即特定于主机端口。 因此、在从主机端口出口时、所有内部数据包都将取消标记。


    此致、
    Sudheer

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

    尊敬的 Sudheer:

    我们具有以太网连接、如图所示。

     

    1.我们的定制电路板、TDA4运行基于9.2 SDK 的 S/W、通过以太网连接到主机(笔记本电脑)
    2."eth0"是主接口板上的主接口、主接口上有以下 VLAN 接口:vlan1、vlan11、vlan44和 vlan69
    3.如图所示、对主板<=>主机之间的所有 VLAN 接口执行 ping 操作可以正常工作
    4.主接口(eth0)上的 ping 不起作用
    5、调试分析发现,从板上传出的所有包都标有 vlan-id "1"。 因此、主机无法  正确路由数据包以使 ping 成功。
    6.我们的要求:
      a."eth0"上的所有出口数据包均应未标记(无 vlan-id)
      b.所有来自不同 VLAN 接口的数据包都应根据 VLAN 进行相应标记

     

    要满足上述要求(6)、您前面提到的"untagMask"的值应该是多少? 这过去在8.1 SDK 中正常运行。

    此致、

    Sesha Venkata Harikrishna。

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

    嗨、Harikrishna、

    6. 我们的要求:
      a."eth0"上的所有出口数据包均应未标记(无 vlan-id)
      b.所有来自不同 VLAN 接口的数据包都应根据 VLAN[/QUOT]进行相应标记

    默认情况下、VLAN ID -1用于主机端口 VLAN。
    如果接收到主机端口的任何未标记数据包、VLAN -1将添加到数据包、而出口 VLAN ID 将未标记。 (untagMask 为0x1FF)



    如果 添加 具有相同 VLAN-1的静态条目、它将覆盖带有  unagMask 为0的现有条目。  
    因此、从主机端口发送的数据包将使用 VLAN-1进行标记。

    我建议您将超出 HOST_PORT_VLAN_ID 更改为网络中未使用的 VLAN 并进行检查。

    此致、
    Sudheer

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

    您好!

    在不添加睡眠模式(大约400ms)的情况下、代理客户端驱动程序无法按预期工作、我们得到响应超时。 您能否建议是否可以在不添加睡眠的情况下加载驱动程序?

    如果 ETHFW 已加载到 MCU2_0并正在运行、则在 Linux 出现之前、您无需添加延迟。

    [报价 userid="476877" url="~/support/processors-group/processors/f/processors-forum/1480421/tda4vm-issue-in-communication-ping-with-main-interface-when-we-added-ethfw-static-vlan-changes/5720834 #5720834"]

    [ 3.013239] ti_cpsw_proxy_client virtio0.ti.ethfw.ethdevice.-1.108: 注册 IPv4地址失败错误:-5

    [ 3.013239] ti_cpsw_proxy_client virtio0.ti.ethfw.ethdevice.-1.108:IPv4寄存器失败:-5
    [ 3.029248] ti_cpsw_proxy_client virtio0.ti.ethfw.ethdevice.-1.108:错误响应状态:-2

    [报价]

    我想、在连接到 ETHFW 服务器的客户端之前、可能会请求这些命令。

    您可以检查 ETHFW 日志、在连接到服务器之前可能存在多个 IPv4注册。

    成功连接到服务器后的请求获得服务、并且 ping 开始工作。

    此致、

    Sudheer

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

    尊敬的 Sudheer:

    我有几个问题:

    Q1)  8.1. 中、TI SDK 提供了一个默认 MAC 地址、可以在启动脚本中使用以下命令对其进行修改、以设置自定义 MAC 地址。 这种配置使 ping 可以正常运行。


    设置 MAC 地址的命令:  IP 链路集设备 eth0地址02:00:00:10:05:00

    9.2. 、我们还在启动脚本中配置了自定义 MAC 地址、但 ping 不起作用。 进一步调试后、我们直接在源代码中设置自定义 MAC 地址、并且 ping 操作正常。

    更改:  

    diff --git a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/enet_cfg.h b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/enet_cfg.h
    index 608c36dd5..61727c8c3 100644
    --- a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/enet_cfg.h
    +++ b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/enet_cfg.h
    @@ -147,7 +147,7 @@ extern "C" {
    #define ENET_CFG_RM_RX_CH_MAX                       (64U)
    /** \brief SOC specific configuration defines */
    -#define ENET_CFG_RM_PRESENT                         (ENET_ON)
    +#define ENET_CFG_RM_PRESENT                         (ENET_OFF)
    #if defined(SOC_J721E) || defined(SOC_J7200) || defined(SOC_J784S4)
    #define ENET_CFG_LWIP_IFACE_MAX                     (2U)
    diff --git a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/examples/utils/enet_ioctlutils.c b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/examples/utils/enet_ioctlutils.c
    index fc09e76c7..5ae150961 100644
    --- a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/examples/utils/enet_ioctlutils.c
    +++ b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/pdk_jacinto_09_02_00_30/packages/ti/drv/enet/examples/utils/enet_ioctlutils.c
    @@ -104,7 +104,7 @@ int32_t EnetAppUtils_allocMac(Enet_Handle hEnet,
             EnetAppUtils_print("EnetAppUtils_allocMac() failed : %d\n", status);
         }
    #else
    -    uint8_t mac[6] = {0x70, 0xFF, 0x76, 0x01, 0x02, 0x03};
    +    uint8_t mac[6] = {0x02, 0x00, 0x00, 0x10, 0x05, 0x00};
         memcpy(macAddress, mac, sizeof(mac));
    #endif
         return status;

    您能否告诉我是否可以在启动脚本中配置自定义 MAC 地址、而不是修改源代码?

    Q2)作为启动时优化的一部分、我们禁用了 MCU2_1固件 在中 9.2 RTOS SDK .

    更改:

    --- a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/sdk_builder/vision_apps_build_flags.mak
    +++ b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/sdk_builder/vision_apps_build_flags.mak
    @@ -16,7 +16,7 @@ ifeq ($(SOC),j721e)
     BUILD_CPU_MPU1?=yes
     BUILD_CPU_MCU1_0?=no
     BUILD_CPU_MCU2_0?=yes
    -BUILD_CPU_MCU2_1?=yes
    +BUILD_CPU_MCU2_1?=no
     BUILD_CPU_MCU3_0?=no
     BUILD_CPU_MCU3_1?=no
     BUILD_CPU_C6x_1?=yes
    diff --git a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/platform/j721e/rtos/common/app_cfg.h b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/platform/j721e/rtos/common/app_cfg.h
    index 36020fc75..a8d6fca0b 100755
    --- a/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/platform/j721e/rtos/common/app_cfg.h
    +++ b/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/platform/j721e/rtos/common/app_cfg.h
    @@ -73,7 +73,7 @@
     //#define ENABLE_IPC_MCU1_0
     //#define ENABLE_IPC_MCU1_1
     #define ENABLE_IPC_MCU2_0
    -#define ENABLE_IPC_MCU2_1
    +//#define ENABLE_IPC_MCU2_1
     //#define ENABLE_IPC_MCU3_0
     //#define ENABLE_IPC_MCU3_1
     #define ENABLE_IPC_C6x_1
    

    此更改将导致 vx_app_rtos_linux_mcu2_1.out 未生成二进制文件。 因此、当我们加载时 TI_K3_R5_remoteproc.ko 驱动程序中、我们会遇到如下所示的超时错误:

    k3_r5_rproc 总线@100000:r5fss@5c00000:等待5d00000.r5f 内核上电超时!

    您能告诉我如何解决或避免此超时错误吗?


    此致、

    Sesha Venkata Harikrishna。