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.

[参考译文] MSP432E401Y:通过 USB 转网络适配器与 PC 的以太网连接停止工作

Guru**** 2513185 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1362242/msp432e401y-ethernet-connection-to-pc-over-usb-to-network-adapter-stopped-working

器件型号:MSP432E401Y

您好:

我有一款产品使用 MSP432E401Y 处理器、通过以太网与 NETGEAR LB1120 4G LTE 调制解调器的网络进行通信。 我还一直使用同一个以太网端口与本地 PC 通信、使用 USB 转网络适配器进行测试和开发新功能。

我最近发现、当我尝试与本地 PC 通信时、我的应用程序的最新版本不再工作。 他们在 NETGEAR LB1120上仍然工作正常。

我的应用程序的早期版本仍然可以与本地 PC 一起工作,所以我必须已经做了一个改变,这导致了这个问题,但我有一个困难的时间来确定这是.

首先、我尝试将代码从较早版本复制到最新版本、以查看是否可以找出问题、然后我尝试将代码从最新版本复制到较早版本、每次遇到问题时都是如此。

有人能告诉我应该关注什么、以了解为什么通过 USB 到网络适配器与本地 PC 的连接停止工作?

谢谢!

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

    您好、Brad、

    您可以尝试另一台 PC 吗? 它有什么不同?

    您能否比较工作和非工作版本的 Wireshark 捕获?

    您可以在 Launchpad 上尝试新版本吗? 有任何不同的结果吗?

    您可以运行常用的 TivaWare 以太网示例吗? 它们在您的本地 PC 上工作吗?

    您的 PC 是否与该板位于同一个子网?

    您是使用带 NDK 的裸机 Ith lwip 堆栈还是 TI-RTOS?

      

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

    您好 Charles、

    以下是我的回答:

    1.您可以尝试另一台电脑吗? 它有什么不同?

    -------- 我尝试了另一台 PC 具有相同的结果:我的应用程序的早期版本工作,而最新版本没有

    2.您能比较一下在工作和不工作的版本之间的 Wireshark 捕获吗?

    公司名称: 我不熟悉 Wireshark 捕获。 您能提供更多有关如何执行此操作的信息吗?

    3.可以在 Launchpad 上尝试新版本吗? 有任何不同的结果吗?

    ... 两个版本都不能在 LaunchPad 上运行、但这可能是由于我的产品和 LaunchPad 之间可能存在一些设计差异。

    4.可以运行常用的 TivaWare 以太网示例吗? 它们在您的本地 PC 上工作吗?

    ... 我不熟悉 TivaWare 以太网示例。

    您的 PC 是否与该板位于同一个子网?

    ... PC 设置为192.168.1.1 --255.255.255.0,板设置为192.168.1.105

    您是使用带 NDK 的裸机 Ith lwip 堆栈还是 TI-RTOS?

    ...... 我很确定、我是从"Modbus_with_lwip_MSP_EXP432E401Y_nortos_ccs"构建我的应用程序的、这是我几年前从 Bruce McKenney 收到的信息。

    谢谢你。

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

    您好、Brad、

    2.您能比较一下在工作和不工作的版本之间的 Wireshark 捕获吗?

    公司名称: 我不熟悉 Wireshark 捕获。 您能提供更多有关如何执行此操作的信息吗?

    [/报价]

     请从 https://www.wireshark.org/download.html 下载 Wireshark。这是一款非常有用的工具、它可以嗅探网络上的所有以太网事务。  

    4.可以运行常用的 TivaWare 以太网示例吗? 它们在您的本地 PC 上工作吗?

    ... 我不熟悉 TivaWare 以太网示例。

    [/报价]

    对于诊断问题、在本地 PC 上运行 Ethernet_with_lwip (裸机)示例和简单 tcpecho (TI-RTOS)示例非常有用。  

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

    您好 Charles、

    我在 MSP432E401Y 电路板上的2种条件下、在 PC 上运行了 Wireshark。 首先、运行可以通过以太网成功运行的应用程序的早期版本(图片的上半部分)、然后使用当前版本无法通过以太网成功运行的应用程序(图片的下半部分):

    如您所见、顶部的"Ethernet 2"连接看起来处于活动状态、而底部的"Ethernet 2"在列表中移动到了下方、它看起来处于非活动状态、并添加了一个新条目"Local Area Connection 12"。

    这是否有助于了解为什么以太网连接不再适用于我的应用的当前版本?

    我不清楚应该如何测试  Ethernet_with_lwip (裸机)示例和/或简单的 tcpecho 示例。 我是否应该将它们加载到 MSP432E401Y 板中、并使用 Wireshark 查看另一台 PC 的以太网连接?

    谢谢你。

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

    您好、Brad、

     如果"Ethernet 2"是您的 NIC (网络接口卡)、则由于某种原因、它在较新版本上消失。 无论主板是否已插入、您都应能够在设备管理器中看到 NIC。 NIC 是 PC 的一部分。  

     您是否有其他可运行较新版本固件的电路板? 是否所有运行相同更新版本的主板都存在相同的问题?

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

    您好 Charles、

    我开始想、数据字节正在成功地通过以太网连接实现这些功能、但在到达它们所在的位置之前、它们会以某种方式在代码中的某个位置被删除。

    是否有一个标准位置、最初在目的地检测到它们? 我正在尝试从应用程序中的一个点向后跟踪、但我没有太多的运气。

    如果我可以检测到一个最初进入的字节、那么弄清楚它被删除的位置应该会容易得多。

    谢谢你。

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

    您好、Brad、

     在 Windows 命令提示符下、键入 ipconfig。 在以下情况下、您看到以太网2了吗:

     -电路板未连接?

     -电路板已连接但运行旧版本?

     -电路板已连接但正在运行新版本?

     如果以太网2 (如运行旧版本所示)是要执行数据通信的电路板在同一网络上的节点 、则在运行新版本时、该节点仍必须存在。  

     您是否运行了我建议您尝试的两个示例? 如果它们按预期工作、则您的较新版本固件肯定存在问题。 请运行这些示例、它们将提供有关该问题的进一步见解。

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

    您好 Charles、

    感谢您的答复。 我想我们正接近解决这个问题、


    对于 ipconfig 结果、我从固件的旧版本开始(可行)、得到:

    以太网适配器以太网2:

    特定于连接的 DNS 后缀。 :
    本地链路 IPv6地址。 。 。 。 。 : fe80::64fb:dd1a:9bd9:7caf%11
    IPv4地址。 。 。 。 。 。 。 。 。 。 。 :192.168.1.1
    子网掩码。 。 。 。 。 。 。 。 。 。 。 :255.255.255.0
    默认网关。 。 。 。 。 。 。 。 。 :


    然后、拔下 USB 转网络适配器并获得:

    以太网适配器蓝牙网络连接:

    媒体状态。 。 。 。 。 。 。 。 。 。 。 :媒体已断开连接
    特定于连接的 DNS 后缀。 :


    然后、我运行固件的新版本(插回适配器)并获得:

    以太网适配器以太网2:

    特定于连接的 DNS 后缀。 :
    本地链路 IPv6地址。 。 。 。 。 : fe80::64fb:dd1a:9bd9:7caf%11
    IPv4地址。 。 。 。 。 。 。 。 。 。 。 :192.168.1.1
    子网掩码。 。 。 。 。 。 。 。 。 。 。 :255.255.255.0
    默认网关。 。 。 。 。 。 。 。 。 :

    因此、从这一点来看、以太网2连接对于我的固件的两个版本都很好


    如果运行你建议的两个例子,我不得不承认,我是有点不知道如何做到这一点。 例如、我已将"ethernet_with_lwip"示例加载到 CCS 中、但当我尝试将其加载到电路板中时、收到了错误消息:

    无法启动所选内容、且没有最近的启动


    我已经能够将代码跟踪回传入数据进入我的电路板的位置。 下面是该函数的前几行:

    //当 lwIP 栈有传入的数据包时调用该函数
    //待处理。

    静态 err_t
    ModbusReceive (void *arg、struct tcp_pcb、*pcb、struct pbuf *p、err_t err)
    {

    当我在此函数的第一行放置一个断点时、早期版本的固件执行会在我向其发送表明已成功接收数据包的数据时在该点停止。

    但是、当我在使用新版本的同一位置放置一个断点时、向其发送数据时不会发生任何情况。

    这看起来在两种情况下都成功连接了以太网2、但在随新版本固件发送数据包时、从未调用该功能。

    顺便说一下、我在两个不同的板上遇到了同样的情况、因此这一定是固件的问题。

    感谢您的帮助。

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

    您好、Brad、

     我不确定较新的固件有什么问题。 您是否在这两个项目之间进行了超越级的比较? 两者之间必须存在一些细微差异。  

     在 Wireshark 上、单击以太网2、您应该可以看到所有进出以太网2的流量。 您还可以应用筛选器、以便只观察进出电路板 IP 地址或 MAC 地址的流量。 它将让您了解新版本何时停止工作。  

     如果没有  USB 转网络适配器、您是否可以将电路板和 PC 同时放在同一网络上? 我希望您能找到一台 PC、它具有可插入网络的以太网端口、而无需 USB 转网络适配器。 这样、您就可以排除是否与适配器有任何关系。  

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

    您好 Charles、

    我能够通过强制使用所需的 IP 地址使较新的固件在今天正常工作、因此问题似乎是由于较新的固件使用了错误的 IP 地址。 我用两种不同的方式来工作、但它们都不是很好的长期解决方案。  

    首先、我可以在初始化过程中将参数设置为所需的 IP 地址、但这不是一个很好的长期解决方案、因为用户需要能够在初始化完成后更改 IP 地址。

    然后、我查看了早期固件放置 IP 地址的位置、该地址位于堆栈上的特定地址;当我在同样可用的较新固件上、以完全相同的堆栈地址将 IP 地址强制到堆栈上时、又查看了该地址。  我担心、如果我这样做、软件中的其他一些更改会导致堆栈地址错误、从而使应用程序再次无法运行。

    您觉得如何确定应用程序在哪里获得 IP 地址来建立连接有什么想法吗? 如果可以转到该位置、并对其编程为使用存储在 EPROM 中的 IP 地址、我可以确保每次都使用正确的 IP 地址。

    谢谢你。

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

    您好、Brad、

    您是否知道如何确定应用程序从何处获得 IP 地址来建立连接? 如果我可以转到该位置并将其编程为使用存储在 EPROM 中的 IP 地址、我可以确保每次都使用正确的 IP 地址。

    通常、如果您使用 lwIP 栈、有两种方法来获取 IP。 首先是 DHCP、通过它、网络上的 DHCP 服务器可获取 IP 地址。 您可以按如下方式调用 lwIPInit ()。 如果您正在执行此操作、请检查您的代码。  

    lwIPInit (g_ui32SysClock、pui8MACArray、0、0、0、 ipaddr_use_dhcp);

    您还可以静态分配 IP、但必须提前知道要使用哪个 IP 地址、这样它就不会与网络上具有相同地址的其他节点发生冲突。 否则、您的节点和其他节点将崩溃。 您需要与 IT 部门核实要使用哪个静态地址。 下面只是一个有关如何分配静态 IP 地址192.168.254.82的示例。 还必须 在 lwipopts.h 文件中将 LWIP_DHCP 设置为0、将 LWIP_AUTOIP 设置为0。  

    lwIPInit (g_ui32SysClock、pui8MACArray、
    (192 << 24)|(168 << 16)|(254 << 8)| 82、
    (255 << 24)|(255 << 16)|(0 << 8)| 0、
    (255 << 24)|(255 << 16)|(0 << 8)| 0、
    ipaddr_use_static);

    我不知道您将如何在运行期间动态更改静态地址。 您的用户如何知道要使用哪个地址? 这是一个您需要回答的应用级问题。 我假设您的用户知道要分配什么地址、然后他/她可以通过 UART 或某种形式的通信输入该地址。

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

    您好 Charles、

    这使我们获得了很大的澄清、我明白问题是什么了。  NETGEAR LB1120调制解调器网络使用 DHCP、而我需要在与本地 PC 通话时使用静态 IP 地址。  我的固件的早期版本使用了静态 IP 地址、出于某种原因、它可以(间歇性 地)在 NETGEAR LB1120调制解调器上工作、因此我认为我可以使用一种技术来讨论这两者、但当我今天做进一步测试时、我发现如果我在 NETGEAR LB1120 网络上使用 DHCP、它的效果会好得多。

    现在、我只需要让用户选择使用静态 IP 地址或 DHCP。

    非常感谢您的所有帮助、您真的帮助了我。