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.

[参考译文] EK-TM4C1294XL:EK-TM4C1294XL

Guru**** 2604225 points
Other Parts Discussed in Thread: EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/745063/ek-tm4c1294xl-ek-tm4c1294xl

器件型号:EK-TM4C1294XL

我正在尝试使 enet_weather 示例程序正常工作。 当我将 EK-TM4C1294Xl 板连接到我的网络交换机时、加载程序并运行它、同时使用 Wire Shark 监控通信。该板发出多条 Discovery 消息、DHCP 服务器以报价进行响应、该板以请求进行响应、 DHCP 服务器永远不会以应答进行响应。 由于 DHCP 过程从未完成、因此电路板上运行的程序绝不会继续联系天气站点以获取天气信息。 当我查看 USB 调试端口时、我看到电路板接收到来自 DHCP 服务器的 IP 地址、但对于我来说、该过程没有完成、电路板重新启动发现过程。

然后、我将 DHCP 服务器下载到单独的笔记本电脑上、将该笔记本电脑、板和另一台笔记本电脑连接到交换机上、并且 Wire Shark 正在运行。 然后、我运行了程序。 我没有使用此配置连接到互联网、但我能够看到发现、提供、请求和确认功能完全正常。 那么板上的 LED 看起来是正确的。 有线 Shark 上的过程非常完美。 四条消息中的所有字段都与文档完全匹配。  

回到将主板连接到我的网络上、我注意到来自 DHCP 服务器的报价消息在目标 IP 地址字段中具有它提供的 IP 地址。 当我使用本地 DHCP 服务器时,目标 IP 地址字段中的 IP 地址为255.255.255.255。 我不知道这是否很重要。

我上周刚获得了最新版本的 Tivaware、我不知道 DHCP 代码是否无法处理我认为 DHCP 服务器提供的非标准服务。 我不确定如何继续尝试对此问题进行故障排除、因为大多数代码都是第三方软件/Tivaware。

我假设其他人在该计划中取得了成功。 也许我缺少了一些东西。 是否值得修改代码以放入静态 IP 以绕过此 DHCP 问题、以查看电路板上的应用是否会联系天气站点以获取温度信息。  

谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    不确定到底是什么问题。 由于客户端尚不知道其 IP 地址、因此服务器应在提供消息中的目标 IP 字段上放置255:255.255.255。 服务器应使用 IP 地址255:255.255.255向网络中的每个人广播该 Offer 消息。

    我对您的两种不同设置/场景还有点不清楚。 您能再解释一次吗? 在我看来、在第一个失败的情形中、您的网络中有一台 DHCP 服务器、但它无法发送 DHCPACK。 但在工作方案中、网络中也有 DHCP、但它正在工作。 这两个网络有何不同? 两台 DHCP 服务器之间有何区别?

    还有其他以太网示例、例如 enet_lwip 或 enet_io。 您也可以尝试一下吗? 我只想知道它们是否会在您的网络中产生不同的结果。 如果这些示例也无法从 DHCP 服务器获取 IP 地址,则可能与 DHCP 服务器端有关。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    感谢您的回答。

    我同意您的观点、即在 Offer 消息中、服务器应输出255.255.255.255、但当 DHCP 过程不能正常工作时、目标地址中的地址是服务器分配给客户端的地址、在本例中、客户端是 TI 电路板。 我知道这是来自服务器的报价消息、因为我查看了 Wire Shark 上的消息以确认 MAC 地址正确。 它只是不明白这是怎么可能的。

    也许我没有充分地解释我的两种情形。 第一种不起作用的情况是、当我将 TI 电路板放在公司网络上时。 我的办公桌上有一台网络交换机、连接了4台计算机、可以访问我们的所有网络驱动器和互联网。 在这种情况下、我从 DHCP 服务器收到的报价消息对我来说似乎没有意义。   

    在第二种情况下、我想看看我是否可以将 TI 电路板与我在使用 DHCP 时看到的问题分开。 我想在我的办公室创建一个非常本地的网络来解决此问题。 我将一个 DHCP 服务器应用程序从 SorgeForce 下载到另一台笔记本电脑上。 我将该笔记本电脑连接到我办公室的备用网络交换机。 我将 TI 板连接到交换机、并将另一台运行 Wireshark 的笔记本电脑连接到同一备用网络交换机。 我在第一台笔记本电脑上运行了 DHCP 应用程序、并将软件加载到 TI 板中、DHCP 操作工作正常。 我能够监控 Wireshark 上的 DHCP 操作、它看起来像我预期的那样工作。 所有4条消息中的所有字段都是我所期望看到的。 在这种情况下、我没有连接到互联网、因此唯一可以执行的操作是 DHCP 过程。

    TI 电路板似乎可以与本地 DHCP 服务器配合使用、但当我尝试与公司网络上的 DHCP 服务器连接时、它不能正常工作。 我记录了一个实例、其中我有发现、报价、请求、但没有得到确认。 然后、该过程刚刚从 TI 电路板上发出的另一条发现消息开始。 有时、TI 电路板会根据 Wireshark 以大约10到50ms 的间隔重复发送发现消息、而 DHCP 服务器不提供消息。 如果我返回到我的本地网络、它工作正常。  

    最初、我尝试了公司网络上的所有 Enet 示例、它们似乎不起作用、因此我转到了天气示例、我开始利用此示例来解决问题。

    也许我需要查看其他一些示例程序、看看是否有东西弹出。 我在网络通信方面没有太多经验、因此我不确定如何继续。

    如果我尝试修改 enet_weather 示例以使用固定的 IP 地址、可能会暂时解决 DHCP 问题、以查看示例程序的其余部分是否正常工作。 我想我必须在程序中的静态 IP 地址中进行硬编码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    您能否向 IT 部门查询 DHCP 服务器在您的第一个方案中的位置,以及服务器是否在您的 LAN 中? 我认为您的 DHCP 服务器可能无法响应来自位于不同 VLAN 或子网中的设备的 DHCP 请求。 我希望您的 IT 部门在这方面能有更好的解决方案、例如将请求从一个 VLAN 转发到另一个 VLAN。 来自客户端的广播消息将在其 VLAN 内停止,并且无法跨越另一个,因为您不希望广播淹没每个网段的网络。 所有 enet_xxx 示例都使用 DHCP 获取 IP 地址。 如果其中的任何一个都无法完成 DHCP 过程、那么我倾向于认为它与 DHCP 服务器所在的位置有关。

    您应该能够使用静态地址临时绕过此问题,但仍希望最终解决 DHCP 问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../dhcp02.txtCharles

    感谢您的回复、我了解您对某些消息可能无法通过各个网段进行发送的担忧。

    我在这方面做了更多的工作、我找到了更多信息。  我打开了 enet_weather 程序中的调试代码。 然后、我在我的办公桌上设置了本地网络、在连接到网络交换机的笔记本电脑#1上安装了自己的 DHCP 服务器、在 TI 主板上安装了 Wireshark、在另一台笔记本#2上安装了 Wireshark。 笔记本电脑#2已连接调试端口。 我记录了调试信息并将其存储在一个文件中。 查看文件,DHCP 过程完成 ,分配了 IP 地址,然后执行了 DHCP_ARP_Reply()函数。 Wireshark 再次展示了整个 DHCP 过程、它似乎可以正常工作。

    然后、我使用 Wireshark 将 TI 板和笔记本电脑#2连接到我的公司网络交换机、并重置 TI 板。 我仍然在 TI 板上运行调试代码。 我将所有调试消息存储在文件中。 查看 Wireshark、我似乎没有从 DHCP 服务器获得报价或 Ack 消息、但当我查看所有调试消息的日志文件时、它看起来就像 DHCP 过程完成了。 我匹配了这两个文件、除了与公司网络的连接中的某些超时外、它非常匹配。 我在代码中添加了一些我自己的调试语句、只是为了指出正在调用的一些函数。

    此时、我的结论是、当我连接到公司网络交换机时、DHCP 在 TI 电路板上工作。 虽然 TI 电路板似乎看到并处理了这些消息,但 Wireshark 似乎没有向我显示其中的一些消息。 由于我在我的小网络上看到了这些消息、我刚才假设我在连接到公司网络时会看到这些消息。

    展望未来、TI 电路板似乎仍然无法正常工作。 我仍然没有从天气网站获得信息。 似乎有一个专用网络配置更改函数被调用、它会停止并启动 DHCP、在我看来、它基本上是重置 IP 地址并尝试重新建立 IP 地址、而只是继续循环。  我知道、在 ACK 消息中、我应该会获取一些 DNS 服务器地址、程序应该使用这些地址来解析天气站点的 IP 地址、但由于我无法在 Wireshark 上看到消息 、我无法看到将哪个 DNS 地址传递给 TI 电路板。

    我想我需要根据我当前的发现跟进 DHCP 过程完成后运行的代码。

    如果您有兴趣了解在这两种情况下从电路板上得到的结果、我将附上这两个日志文件。 如果您能根据拥有一个很好的已建立 IP 地址的情况说明哪些方面需要进一步发展、那就更好了。 我真的很惊讶、它不能为我工作。

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

    e2e.ti.com/.../dhcp01.txtCharles

    我想在上一篇文章中只附加了一个文件。 我将在这个帖子中附加另一个。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我发现这两篇文章有助于回答您关于在 Wireshark 中看不到 DHCP 服务和应答的问题。
    osqa-ask.wireshark.org/.../dhcp-troubleshooting-missing-offer-and-ack
    networkengineering.stackexchange.com/.../can-not-capture-dhcp-offer-with-wireshark
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Michael Cleary"]。 我仍然没有从天气网站获得信息。

    您的公司是否可能有代理服务器来处理来自专用网络系统的互联网公共寻址?  交换机端口 专用桌面交换机连接可能具有安全协议。 您的 IT 部门 可能会限制您的主端口接收 某些公共 IP、 因此代理 http 地址头只能将互联网数据包路由到 LaunchPad EVM。 据我所知、天气软件不支持代理、 该物联网示例预加载在 EVM 上。

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

    我打开了 DHCP 调试、我能够看到正在进行 DHCP 过程。 我获得了分配给电路板的 IP 地址、该地址显示在调试消息中、但在 Wireshark 上看不到。 我还启用了 DNS 调试、并且能够看到 openweathermap.org URL 被解析为两个不同的 IP 地址。  在 DNS 调试消息中,我看到了地址162.243.53.59和192.241.169.168。 我在浏览器中使用了我的台式计算机上的两个地址、并使用了我能够访问 openweathermap.org 网页的两个地址。 我的台式计算机与 TI 板位于同一网络上。 我认为、如果我的台式计算机可以访问这个公共网站、TI 电路板也应该能够访问该网站。 我认为没有任何 Sonicwall 问题会妨碍 TI 电路板从网络角度工作。 如果我能够从与 TI 电路板连接到同一网络开关的桌面上看到 API、我会假设 TI 电路板应该能够看到网站。

    根据与 DN 关联的消息,我看到消息“DSN_TIMER:DNS_CHECK_ENTERINS”重复了大约10次,然后看到“DHCP_STOP()”消息。 发生这种情况的原因是调用函数 EthClientTCPDisconnect、这会导致发出 DHCP_STOP、而这正是所有这些函数看起来都处于分离状态的时候。 我有一个有效的 IP 地址、因为我看到了来自 DNS 调试代码的消息、但出于某种原因连接断开。

    调试很困难、因为我看不到有什么东西离开 TI 电路板还是进入 TI 电路板。 我没有机会查看上一篇文章、该文章可能会帮助我更好地利用 Wireshark。

    我 使用的是最新版本的 Tivaware - SW-TMC-2.1.4.178。  此版本的 Tivaware 是否存在问题?  是否值得下载早期版本以了解 这是否会有所不同。  

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

    [报价用户="Michael Cleary"]假设如果我的台式计算机可以访问此公共网站,TI 主板也应该能够访问该网站。

    可以在 Internet 选项下使用代理地址配置 Web 浏览器。

    [引用用户="Michael Cleary"]我 使用的是最新版本的 Tivaware - SW-TMC-2.1.4.178。[/quot]   

     天气示例调试文件夹(zip 文件)中的*。bin 文件通常 通过早期 Tivaware 版本进行编译。 您 可以  通过 LMFlash 实用程序将 weather.bin 直接上传到 EVM 中。  

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

    我无法使 enet_weather 示例程序在 Tivaware SW-TMC-2.1.4.178中工作。 最初我以为我遇到 DHCP 问题、可能是 DNS 问题、因为示例程序在 TI 电路板上无法正常工作、而且我无法在 Wireshark 上看到大量网络通信。    由于某些消息不是广播消息、Wireshark 无法看到 一些网络消息、这说明了我无法看到某些消息的原因。 我能够使用 enet_weather 示例中的调试功能来打开 DHCP 和 DNS 调试代码、并且能够证明 TI 电路板在程序的 DHCP 和 DNS 方面都工作正常。  然后、我打开了 TCP 调试代码、基本上对示例程序进行故障排除。

    我最终通过 对源代码进行一些修改来使 enet_weather 程序正常工作。  使用 TCP 调试代码、我能够 在 代码中找到  要在网络上传输的实际消息所在的位置。 我获取 了数组的内容、并使用 openweathermap.org 中的 API 信息 将内容复制到浏览器中。 我删除了前面的"获取"文本。 我删除了消息末尾添加的"HTTP/1.0"。 我还必须更改 城市信息。 我不得不进入美国奥斯汀、而不是德克萨斯州的奥斯汀、当我在浏览器中输入此消息时、我从网站获得了 JSON 文件响应。  这正是 TI 电路板需要看到的响应。

     然后、我将这些更改合并到 enet_example 代码中。 在 enet_weather 代码中 需要"get"、但 浏览器中不需要这样、这样就可以保留在程序中。 我删除了消息末尾添加的"HTTP/1.0"。 我在 消息末尾添加了"crlfcrlf"。 我还用正确的城市名称和每个城市名称后面应包含的2个字母的国家/地区代码替换了城市数组。 下面是我更改的前5个城市的示例。 有几个不需要更新,新加坡就是新加坡。 ISO 3166中定义了2个字符的国家/地区代码。

    德克萨斯州奥斯汀  -  美国奥斯汀

    中国北京-北京、中国

    德国柏林-德国柏林

    马萨诸塞州波士顿-美国波士顿

    阿根廷布宜诺斯艾利斯-阿根廷布宜诺斯艾利斯

    等等

    在所有这些更改之后、enet_weather 程序似乎正常工作。 该计划正在缓慢地完成城市列表、并在提示符中键入'h'后更新与这些城市相关的预测字段、然后在下一提示符中键入'scroll'。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    非常高兴您在这方面取得了巨大进展。 您是否介意共享您为 enet_weather.c 修改的代码、以便我们能够在未来的 TivaWare 版本中包含这些更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查尔斯

    我在共享我添加的更改时没有任何问题、 这些更改使该程序适用于我。 更改位于所附文件中。 感谢您访问 help.e2e.ti.com/.../enet_5F00_weather-changes.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Michael。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否曾尝试刷写压缩的调试文件夹中的 weather.bin 而不进行工程编译来创建它?

    那么、您暗示 weather.org 对其握手协议进行了几次更改? 几年前、我已将该应用刷写到 EVM 中、尽管它在连接和报告过程中没有您报告的此主题。

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

    是的、我尝试了调试目录中的 enet_weather.bin 文件。 我使用了 LM 闪存编程器、得到的结果与 在 Code Composer Studio 中编译程序时得到的结果相同。

    为了确认我没有犯错、我使用了全新版本的 Tivaware 示例 程序、在运行时遇到了同样的问题、添加了一些微小的更改、我能够使其正常工作。

    感谢您的帮助和建议。 他对此表示非常赞赏。