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.

[参考译文] TMDS273GPEVM:TMDS273GPEVM ECU 和 PC 之间的以太网通信

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1270082/tmds273gpevm-tmds273gpevm-ethernet-communication-between-the-ecu-and-the-pc

器件型号:TMDS273GPEVM

我们只需要强调一下、我们在 ECU 和 PC 之间使用了连接。

是否有人知道如何在不使用 DHCP 服务器的情况下静态配置 IP? 如果需要、您能否让我们参考代码中的准确位置以静态配置 IP

下面的代码是错误的,因为函数"LwipifEnetApp_netifOpen"和"LwipifEnetApp_getNotifFromId"中的第一个专利员是一个句柄。

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

    尊敬的 cl Xu:

    分享以下步骤以分配静态 IP:

    您需要采取的唯一预防措施是:

    1.  不为多个 NetIF 分配同一个 IP 地址,原因很明显,

    2.  确保你不要打电话   App_allocateIPAddress()  功能

    static void App_setupNetif()
    {
        ip4_addr_t ipaddr[2], netmask[2], gw[2];
    
        ip4_addr_set_zero(&gw[0]);
        ip4_addr_set_zero(&ipaddr[0]);
        ip4_addr_set_zero(&netmask[0]);
        ip4_addr_set_zero(&gw[1]);
        ip4_addr_set_zero(&ipaddr[1]);
        ip4_addr_set_zero(&netmask[1]);
    
        gw[0].addr = ((uint32_t)0x0100A8C0UL);   // 192.168.0.1
        ipaddr[0].addr = ((uint32_t)0x0a00A8C0); // 192.168.0.10
        netmask[0].addr = ((uint32_t)0x00FFFFFF);// 255.255.255.0
    
        gw[1].addr = ((uint32_t)0x0100A8C0UL);   // 192.168.0.1
        ipaddr[1].addr = ((uint32_t)0x0300A8C0); // 192.168.0.3
        netmask[1].addr = ((uint32_t)0x00FFFFFF);// 255.255.255.0
    
        DebugP_log("Starting lwIP, local interface IP is dhcp-enabled\r\n");
        hlwipIfApp = LwipifEnetApp_getHandle();
        for (uint32_t netifIdx = 0U; netifIdx < ENET_SYSCFG_NETIF_COUNT; netifIdx++)
        {
            /* Open the netif and get it populated*/
            g_pNetif[netifIdx] = LwipifEnetApp_netifOpen(hlwipIfApp, NETIF_INST_ID0 + netifIdx, &ipaddr[netifIdx], &netmask[netifIdx], &gw[netifIdx]);
            netif_set_status_callback(g_pNetif[netifIdx], App_netifStatusChangeCb);
            netif_set_link_callback(g_pNetif[netifIdx], App_netifLinkChangeCb);
            netif_set_up(g_pNetif[NETIF_INST_ID0 + netifIdx]);
        }
        LwipifEnetApp_startSchedule(hlwipIfApp, g_pNetif[ENET_SYSCFG_DEFAULT_NETIF_IDX]);
    }

    我测试了 Ping 功能、运行正常。 尝试一下后、如果您遇到任何问题、请告诉我。
    此致、
    Shaunak
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的答复。

    但是、我们无法在 ECU 和 PC 之间进行 UDP 通信。

    我测试了 ping 命令、但失败了。

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

    尊敬的 CL Xu:

    我看到在应用程序中分配了错误的 IP (192.168.0.10)、而不是所需的 IP (192.168.60.10)。 只是为了确认一下、 重建 应用 是否要重新测试它? Ping 失败、因为分配了不正确的 IP。

    您能否重新检查并告诉我它是否有效、因为我在本地测试了相同的权变措施、Ping 成功了。

    谢谢。此致、
    Shaunak

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

    我很抱歉。

     ipaddr.addr 的值为 ((uint32_t) 0x0A00A8C0)、 注释不正确。

    请看上面的第二幅图、本地接口 IP 为192.168.0.10。

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

    您好、CL XU:

    我将再次使用其他一些 IP 地址进行重复迭代、以避免产生混淆。
    让我们按如下方式来处理:

    IP 地址 :192.168.1.3   (0x0301A8C0)
    网关 :  192.168.1.1   (0x0101A8C0)
    网络掩码 :  255.255.255.0 (0x00FFFFFF)

    进行这些更改后、请重新构建应用程序并现在加载新生成的二进制文件、应用程序中分配的 IP 现在应为192.168.1.3。 从 IP 为192.168.1.xx 的 PC 运行 Ping 命令、对其进行测试

    此致、
    Shaunak

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

       "examples/networking/lwip/enet_cpsw_udpclient"文件夹中的 UDP 客户端示例无法成功通信。

     在"examples/networking/lwip/enet_cpsw_tcpclient"文件夹中、可以找到 TCP Client 示例。

    请 测试"UDP 客户端示例"、然后让我知道它是否起作用。

    ------------------

    ------------------

    有两个问题、如下所示:

    (1)、在 TCP Client 示例中、"DebugP_log ("xxxx")"无法显示在 Congose 窗口中。

    (2)、 在导入 "TCP Client Example"时、示例工程中的源无法在本地导入。  图标显示为图像。

    那么请告诉我如何使用硬件   

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

    您好、CL XU:

    我使用静态 IP 分配测试了 TCP Client 和 UDP Client 应用程序(按照 我在上一个回复中分享的相同步骤和 IP 地址)、将两个应用程序的控制台输出作为参考:

    TCP 客户端:

     e2e.ti.com/.../tcp_5F00_client_5F00_Static_5F00_IP_5F00_output.txt

    UDP 客户端:  

    e2e.ti.com/.../udp_5F00_client_5F00_static_5F00_IP_5F00_output.txt

    要运行服务器,请在 Linux 终端中使用命令,并在应用程序提示时输入服务器的 IP。

    TCP 服务器:ncat -e /bin/cat -kV -l 8888
    UDP 服务器: ncat -e /bin/cat -ukv -l 8888

    默认的开箱即用应用程序配置为传输特定数量的数据包并关闭连接。

    注:

    套接字连接仅在短时间内保持打开状态、在此期间将传输某些 TCP (或 UDP)数据包。 如果您在此期间尝试 Ping EVM、则会起作用、一旦数据包传输完成、套接字连接将关闭、 Ping 命令将无响应(目标主机无法访问)。

    如果您希望保持连接打开、则必须注释以下代码行、以使连接保持有效。

    ret = lwip_close(sock);

    1)。  在本例中选择了正确的 COM 端口后、两个示例中都可以看到 DebugP_LOGS。 在您的情况下、您是否观察不到任何日志或某些特定的日志?

    2) 您能否进一步说明同样的内容、您是否在示例中添加了一些在导入工程时不可见的文件?

    此致、
    Shaunak

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

    感谢您的答复。

    我们可以在 ECU 和 PC 之间进行通信、

    有人知道如何配置该 端口??

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

    您好、CL XU:

    如果 IP 分配问题已得到解决、请关闭该主题并打开一个新的端口配置主题、相应的专家将被分配。

    此致、

    Shaunak