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.

[参考译文] TM4C1294NCPDT:当使用特定 IP 时、UIP 不发送数据包、但如果使用广播 IP (255.255.255.255)、则能够广播数据包

Guru**** 2605435 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/747047/tm4c1294ncpdt-uip-does-not-send-packets-when-a-specific-ip-is-used-but-is-able-to-broadcast-if-broadcast-ip-255-255-255-255-is-used

器件型号:TM4C1294NCPDT

您好!

我将以太网引导加载程序用于应用程序,引导加载程序在网络中广播 BOOTP 请求。

现在,我想将这些 BOOTP 请求发送到特定的 IP 而不是广播。

我所做的是为器件分配一个 IP 地址 UIP_hostaddr。

然后使用如下所示的功能打开连接

G_PCONN = UIP_UDP_NEW (&sAddr、HTONS (BOOTP_SERVER_PORT));

sAddr 是服务器 PC 的地址。

然后发送 BOOTP 请求包。

引导加载程序不发送 BOOTP 请求。

现在、当 sAddr 是广播 IP 时、我可以在 Wireshark 中看到 BootP 数据包。

但是、当我将此 IP 更改为服务器 PC 时、IP 引导加载程序不会发送 BOOTP 数据包。

问题可能出在哪里?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我当然不会宣称任何有关 UIP 的专业知识。 我不确定问题是什么。 在调用 UIP_UDP_NEW 后、是否调用 UIP_UDP_BIND 来绑定本地端口?

    您是否正在使用 TivaWare 以太网引导加载程序?

    如果您使用的是 TivaWare 以太网引导加载程序、则在 bl_emac.h 中、UIP_CONF_broadcast 当前设置为1。 尝试将其更改为0。 我不知道这是否可以解决问题。

    //
    //
    //启用 UDP 广播支持。
    //
    //
    #define UIP_CONF_broadcast 1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    按照 UIP 文档中的建议、我在之后调用了 UIP_UDP_BIND。

    是的、我使用 Tivaware 引导加载程序。

    根据 UIP、UIP_CONF_broadcast 用于接收 UDP 广播包。 我通过将其更改为0再次进行了检查、但它仍然不起作用。

    我在 Stellaris 器件上有相同的应用、它在那里工作正常。

    UIP 堆栈没有变化。

    您能否检查发送到特定 IP 会出现什么问题?

    谢谢。

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

    您是否还有可以在同一网络上运行的 Stellaris 电路板? 我只是想确保我们在相同的操作环境中比较 Tiva 和 Stellaris 电路板、即在同一网络、同一子网、同一 VLAN 等中 原因是、如果 StellarisWare 和 TivaWare 具有相同的 UIP 堆栈、那么我无法理解为什么它在 Tiva 中不起作用。

    您是否还可以使用 Wireshark 捕获 Stellaris 板和 Tiva 板 BOOTP 流量并比较两者之间的区别?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    发现 SysTick 初始化中的问题。  UIP 工作正常。

    此外、在设置 UIP 的 IP 地址时、使用了 UIP_addr_copy、而不是直接分配 IP。

    现在代码工作正常。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Prassanna、
    您是否想与我们分享您对 SysTick 初始化所做的更改以及使用 UIP_addr_copy 配置 IP 所使用的代码? 我相信这将使论坛中的许多人受益、并且我们可能能够整合到未来的 TivaWare 版本中。