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.

[参考译文] TMDXSK437X:发送 eth0和 eth1的不同数据

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1002158/tmdxsk437x-sending-different-data-of-eth0-and-eth1

器件型号:TMDXSK437X

您好、E2E、

你好。

我们的客户正在使用 AM437x 入门套件、需要您在 SDK 示例故障排除方面的帮助。 以下是查询:

"现在、我将使用 SDK 的 EMAC_BasicExample_skAM437x_armBiosExampleProject。 我已禁用回路并在 eth0 (Phy0)上发送和接收数据。 之后、我为2个 ETH 端口输入"emac_cfg.numPorts=2;"。 两个端口都成功打开并接收端口上的数据、而每当我在 APP_TEST_TASK_SEND_pkts 下使用 EMAC_SEND (0、p_pkt_desc)发送数据时、两个端口都会在这些端口上发送相同的数据。 实际上、我希望在这两个 ETH 端口上发送不同的数据。 我尝试了 EMAC_SEND (1、p_pkt_desc)、但 EMAC_BasicExample_skAM437x_armBiosExampleProject 将停止并退出。 我还会浏览"emac_DRV_ERR_E EMAC_SEND (uint32_t port_num、emac_PKT_Desc_T* p_desc)"和 EMAC_SEND_v4、但未成功。 我还读了 EMAC_LLD_SD.pdf、但看不出。 在“基于 UDMA/NavSS 的 IP 驱动程序 IPv5”下的一些详细信息,当我使用 IPv4时,有关7.4.13.1下的直接数据包发送,但不知道如何配置端口和在 IPv4下发送直接数据包。

感谢您的指导。 谢谢你。

此致、
卡洛

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

    您好、Carlo、

    您可以共享您正在使用的处理器 SDK 版本吗? 此6.3版本是否适用于 AM437x?

    谢谢

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

    您好 Aravind、

    根据我们的客户、这是"ti-processor-sdk-rtos-AM437X-EVM-06.03.00.106-Windows-x86-Install"

    此致、
    卡洛

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

    您好、Carlo、

    让我与 EMAC 驱动程序专家核实 CPSW 是否支持此功能。 我的回复可能会有一些延迟。

    谢谢

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

    您好 Aravind、

    期待您的更新。 谢谢你。

    此致、
    卡洛

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

    您好、Carlo、

    我计划在我的设置中重现此问题。 我没有 SK 板。 我有 https://www.ti.com/tool/TMDSIDK437X 板。  两个电路板的 EMAC 驱动程序库相同(因为 AM437x 的库特定于 SoC 而不是电路板)。

    您能否分享客户为启用两个端口所做的所有更改?

    在有关"emac_cfg.numPorts=2"的说明中、 这是客户所做的唯一更改吗? 请告诉我。

    谢谢

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

    您好 Aravind、

    我将要求客户提供有关电路板 设置的配置和更改。

    谢谢。

    此致、
    卡洛

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

    当然。。。 谢谢 Carlo。 将等待您的输入。

    谢谢

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

     您好 Aravind、

    根据我们的客户、他们实施的更改仅适用于主 文件和函数上的双端口"emac_cfg.numPorts=2"。

    此致、
    卡洛

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

    您好、Carlo、

    谢谢。。。 示例是环回示例、您能分享一下它们是如何在示例应用中禁用环回的?

    我从客户那里看到以下内容:

    "SDK 的 EMAC_BasicExample_skAM437x_armBiosExampleProject。 我禁用了回路 "...

    谢谢

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

    您好 Aravind、

    根据我们的客户,他们 只需设置“open_cgF.loop bi=0;”。

    此致、
    卡洛

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

    您好、Cabaccan、

    感谢您的确认。 我将进行与客户相同的更改、并检查以下问题。

    我无法在 idkAM437x 板上重现此问题、因为 idkAM437x 板上只有一个 CPSW 端口。 (另两个连接到 idkAM437x 中的 PRU eth 端口)。 我刚从我的一位同事那里获得了一个 skAM437x 板、我想尝试与客户类似的示例、看看我是否可以重现问题以确定根本原因。

    [引用 userid="392211" URL"~/support/processors-group/processors/f/processors-forum/1002158/tmdxsk437x-sending-different-data-of-eth0-and-eth1 ]EMAC_SEND (1、p_pkt_desc)但 EMAC_BasicExample_skAM437x_armBiosExampleProject 将停止并退出[/quot]

    谢谢

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

    您好、Carlo、

    我认为客户可能会有更多变化。

    我进行了以下2项更改、您建议了这些更改、但无法在 skAM437x 上重现此问题:

    1. /* Aravind cfg 至2个端口*/
    EMAC_cfg.numPorts = 2;

    2.// Aravind open_cfg.LOOP_Back = 1;
    open_cfg.LOOP_Back = 0;

    我获得以下 UART 输出:

    SetPhyMode:000021e1自动:1、FD10:64、HD10:32、FD100:256、HD100:128、 FD1000:8192 LPBK:0
    SetPhyMode:000021e1自动:1、FD10:64、HD10:32、FD100:256、HD100:128、 FD1000:8192 LPBK:0
    主:EMAC_OPEN 成功
    链路状态:上行链路未处于环回状态
    链路未处于环回状态、返回错误

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

    您好、Carlo、

    我更新了测试、以在测试未处于回送状态时不返回错误、如下所示:

    if (emac_check_loopback_status (0)!=1)

    // UART_printf ("链接未处于环回状态、返回错误\n");
    //返回-1;

    此更改后、测试继续以非环回模式发送数据包。 我还将端口号更改为1、未看到任何崩溃或停止并退出。

    我注意到了几件事:

    测试正在发送一个已完成的数据包(广播数据包):

    静态常量 uint8_t test_pkt[64]={
    0xFF、0xff、0xff、0xff、0xff、 0xFF、
    0xFF、0xff、0xff、0xff、0xff、 0xFF、
    0x08、0x06、0x00、0x01、
    0x08、0x00、0x06、0x04、
    0x00、0x01、0x01、0xbb、
    0xcc、0xdd、0xee、0xff、
    0xc0、0xa8、0x01、0x16、
    0x00、0x00、0x00、0x00、
    0xc0、0xa8、0x01、0x02、
    0x01、0x02、0x03、0x04、
    0x01、0x02、0x03、0x04、
    0x01、0x02、0x03、0x04、
    0x01、0x02、0x03、0x04、
    0x01、0x02、0x03、0x04、
    0xFE、0xFE、0x00、0x00
    };

    2.测试应用程序始终为两个端口发送此预设数据包。 因此、客户可能会在两个端口上看到相同的数据包。

    客户能否进一步修改测试应用程序、以便在端口1上发送不同的预设数据包并进行检查?

    请告诉我。

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

    您好 Aravind、

    感谢您持续处理此查询。 我已经与客户分享了配置、我仍在等待反馈。

    收到响应后、我将向您提供更新。


    此致、
    卡洛

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

    谢谢 Carlo。

    我将等待您的响应和输入。

    谢谢

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

    您好 Aravind、

    我刚刚收到了我们客户的以下更新:

    对于不同的数据,我在 test_utils.c 中生成了另一个数据包

    静态常量 uint8_t testtcp_pkt[64]={
       0xD0、0xBF、0x9C、0x0C、0x4B、0x41、0x01、0xBB、
       0xCC、0xDD、0xEE、0xFF、0x08、0x00、0x45、0x00、
       0x00、0x2E、0x00、0x00、0x40、0x00、0x40、0x06、
       0xB7、0x61、0xC0、0xA8、0x01、0x16、0xC0、0xA8、
       0x01、0x02、0x01、0x96、0x01、0x96、0x00、0x00、
       0x00、0x02、0x00、0x00、0x00、0x00、0x50、0x00、
       0xFF、0xFC、0x29、0x4B、0x00、0x00、0x00、0x00、
       0x00、0x00、0x00、0x00、
       0x0F、0x0d、0xEA、0x8A//0xFE、0xFE、0x00、0x00
    };
    此外, emac_PKT_Desc_T * p_pkt_des1、 p_pkt_des1 = app_alloc_pkt(1、test_PKT_size);和
     
    memcpy (p_pkt_desc1->pDataBuffer、&test_pkt[0]、test_PKT_size);
                P_pkt_dep1->AppPrivate =(uint32_t) p_pkt_des1;
                       P_pkt_desc1->Flags       = EMAC_PKT_FLAG_SOP | EMAC_PKT_FLAG_EOP;
                       p_pkt_da1->ValidLen    = test_PKT_size;
                       P_pkt_desc1->DataOffset  = 0;

                       p_pkt_dep1->pktLength   = test_PKT_size;
                       P_pkt_dep1->PktFrags    = 1;
                       p_pkt_dep1->pNext =空;
                       P_pkt_desc1->pPrev =空;
                       P_pkt_dep1->PktChannel    = 0;
                       p_pkt_dep1->pktLength     = test_PKT_size;

                emac_send (1、p_pkt_des1);
    我还在连接 test_utils.c (其中我还尝试  调用 app_test_task_send_pkts1、但未成功)。
    请提供建议。 谢谢、
    此致、
    卡洛
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Carlo、

    请确认

    1.在两个端口上同时发送不同的预设数据包(哪些是单播数据包)?

    2.应用程序(示例)是为一个端口编写的-客户是否在示例中添加了另一个端口以进行同步端口发送? 或者,他是否正在寻找修改它以发送到 端口1,并注意到在其他端口上看不到重复的数据包?

    我将比较您与版本软件共享的修改、以了解更多 详细信息。  

    在实际 EVM 上执行更改时、我可能会延迟一些时间。 同时、请确认以上两个问题。

    谢谢

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

    您好 Aravind、

    以下是我们客户的回应:

    1.在两个端口上同时发送不同的预设数据包(哪些是单播数据包)?
    不、我只需创建另一个数据包(使用数据包构建器的 TCP 数据包、长度为64字节)、类似于" TI 示例代码中给出的测试数据包"。 之后、我连续(100倍时间)将这些数据发送到不同的端口。 这意味着不同端口的数据包不同(端口0上的测试数据包、端口1上的 TCP 数据包)。 将测试数据包和 TCP 数据包分别交换到端口1和端口0。 只有 TCP 数据包会显示在两个端口上。
     
    2.应用程序(示例)是为一个端口编写的-您是否在示例中添加了另一个端口以进行同步端口发送? 或者您是否希望修改它以发送到端口1,并注意到在其他端口上看不到重复的数据包?
    我 想测试两个端口是否正常工作、是否独立工作。 为此、我对 EMAC_BASIC 示例进行了"修改"。  
    使用    emac_cfg.numPorts=2;"    (open_cfg.loop_back  = 0;)添加端口、并 通过检查端口状态  
     
    if (emac_check_loopback_status (0)!=1)
           {
               UART_printf ("\n Link0未处于环回状态:\n");
               //返回-1;
           }
    if (emac_check_loopback_status (1)!=1)
           {
               UART_printf ("\n Link1未处于环回状态:\n");
               //返回-1;
           }
    对于发送数据包、修改后的代码附加在之前的响应中(test_utils.c)

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

    您好、Carlo、

    谢谢。。。 我计划在下周左右的某个时候优先处理此问题。

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

    您好、Carlo、

    很抱歉将其推送一段时间。 我还有其他一些任务、可能可以在下周左右进行计划。 我将向您提供最新信息。

    谢谢

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

    您好 Aravind、

    我会就此通知客户。 谢谢你。

    此致、
    卡洛

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

    您好、Carlo、

    抱歉! 我仍然不能花时间来解决这个问题。 我可能需要向我的一位同事寻求帮助、以了解这一点。

    我假设客户一次至少能够在一个端口上发送和接收数据包-对吗? 请确认。

    谢谢、

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

    您好 Aravind、

    我仍在等待我们的客户确认他们是否能够发送/接收数据包。

    另一方面、如果您的团队能够处理我们客户的问题、请分享最新消息。 谢谢你。

    此致、
    卡洛

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

    您好、Carlo、

    我们很难在内部获得有关 NDK 驱动程序和 NDK 项目的一些支持。 请等待下一位学员回答此问题。 可能需要一段时间。

    谢谢。

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

    大家好、团队、

    对此、

    [报价 userid="35255" URL"~/support/processors-group/processors/f/processors-forum/1002158/tmdxsk437x-sending-different-data-of-eth0-and-eth1/3758397 #3758397"]我假设客户一次至少能够在一个端口上发送和接收数据包-对吗?


    根据我们的客户、 两个端口传输相同的数据、但可以接收不同的数据。

    此致、
    卡洛

x 出现错误。请重试或与管理员联系。