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.

[参考译文] Starterware/SW-EK-TM4C1294XL:配置静态 IP 地址中出现问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579985/starterware-sw-ek-tm4c1294xl-issue-in-configure-static-ip-address

器件型号:SW-EK-TM4C1294XL

工具/软件:Starterware

尊敬的所有人

刚刚导入 enet_lwip 示例并开始播放、也就是说、当我使用 DHCP IP 地址配置它并能够通过 PC 回拨时、它就会开始播放。 但是、当我尝试使用静态 IP 地址配置它并将 LWIP_DHCP 选项设置为1时、我的 IP 地址无法设置、并且所有地址都以0结束。 追查了 lwipplib.c,发现了以下情况:

1.      当设置了 LWIP_DHCP 选项时,lwIPLinkDetect()以常规间隔运行(由 lwIPServiceTimer()调用),而在这里,当更改链接状态时,它通过以下代码 snip 清除所有 IP 设置:

  //

   //从网络接口清除任何地址信息。

   //

   ip_addr.addr = 0;

   net_mask.addr = 0;

   gw_addr.addr = 0;

   netif_set_addr (&g_sNetIF、&ip_addr、&net_mask、&gw_addr);

               我不知道链路状态变化的定义,它是由初始化到 IP 地址引起的吗?

2.      将 LWIP_DHCP 清除为0,静态 IP 地址工作正常。 但是、我需要让这两个选项都对客户开放。

3.      检查了我们使用过的等效 StellarisWare,它看起来也检查了 LwIpServiceTimer()中的链路状态, 但不清除任何设置。 想知道它是否是错误吗?

 

有人有类似的问题吗?

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

    Ping 您好、

    以太网客户端可能初始化 IP 、如下所示。 我 认为 双工中存在错误(tiva129.c)抽象层等... 自动 IP 模式类似于静态模式,但它首先检查 DHCP,就像 Windows 客户端可能执行的那样。

    //StellarisWare 客户端:使用系统时钟、MAC 和使用 DHCP 来初始化 lwIP。
    lwIPInit (ui32SysClock、pucMACArray、//0、0、0、0、
    DEF_IPADDR、DEF_GATEWAY_ADDR、DEF_NET_MASK、
    (bUseDHCP? ipaddr_use_dhcp:IPADDR_use_static);// IPADDR_use_AUTOIP 
    //
    // Tivaware client:使用系统时钟、MAC 初始化 lwIP 并使用 DHCP。
    //
    lwIPInit (ui32SysClock、g_Senet.pui8MACAddr、0、0、0、0、 ipaddr_use_dhcp); 

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

    感谢您的回复、您是否能够让 TivaWare 使用静态 IP、如下所示并使用 lwipopt.h 设置:

    #define LWIP_DHCP 1

    /* TiveWare:执行静态 IP 线路工作*/
    lwIPInit (g_ui32SysClock、pui8MACArray、IpAddr、IpMask、网关、IPADDR_USE_STATIC);

    我只能使其在 LWIP_DHCP 清零时工作。 :(

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

    我希望下面的帖子可以提供一些见解、让您了解如果 DHCP 不分配 IP 地址、如何获取静态地址。 首先尝试从 IPADDR_USE_STATIC 更改为 IPADDR_USE_AUTOIP。
    e2e.ti.com/.../1458810
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ping 您好、

    正如 Charles 提到 的、Auto IP 与静态 IP 具有相同的功能、但通过 LWIP (AutoIP.c)客户端为我们提供了预设 IP 地址。

    上次检查静态函数时、它在向客户端添加行后起作用。

    //
    //! 要使用的默认自动 IP 地址。
    //
    #ifndef DEF_IPADDR
    #define DEF_IPADDR (((192u << 24)|(168 << 16)|(10 << 8)| 1)
    #endif
    
    //
    ! 要使用的默认网关地址。
    //
    #ifndef DEF_gateway_ADDR
    #define DEF_gateway_ADDR ((255u << 24)|(255 << 16)|(255 << 8)| 0)
    #endif
    
    //
    ! 要使用的默认网络掩码。
    //
    #ifndef DEF_NET_MASK
    #define DEF_NET_MASK ((255u << 24)|(255 << 16)|(255 << 8)| 0)
    #endif 

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

    大家好

    感谢您的回复。 尝试了 AUTOIP、它工作正常、但我认为它无法控制 要使用哪个 IpAddr。 忽略上述定义  

    我每次运行时都得到相同的值、它是标准定义的169.254.0.0 - 169.254.255.255之间的有效值。

    Ping

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

    正确的做法是、自动 IP 不被 IEEE 视为静态 IP、其行为更像本地 DHCP 客户端。 您仍然必须设置 IPADDR_USE_STATIC、以便它分配上述静态 IP 地址、或在 DHCP 失败时使用它回退。 布尔测试根据在 LwIPIinit()调用期间传递的标志选择 DHCP 或静态 IP 的方式。 分配 IP 地址有3种方法。

    我发布的上述代码应提供静态 IP、可能值得回答问题。 不清楚为什么要说 Auto IP、因为它始终使用 StellarisWare 生成静态 IP。