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.

[参考译文] TM4C129XNCZAD:使用 TI-NDK 发送 ARP 探测和通知数据包

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1241454/tm4c129xnczad-send-arp-probe-and-announcement-packets-using-ti-ndk

器件型号:TM4C129XNCZAD

在更改 IP 设置时、我会在 Wireshark 上注意到 NDK 会发送 ARP 探针并在更改 IP 时公布数据包、如何在启动期间执行同样的操作?

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

    您好!

     看起来像在 NtAddNetwork()中,它称为 RTCAddHook()。 我可以看到、一旦调用 RTCAddHook、就会像在 Wireshark 上看到的一样发送 ARP 数据包。 这是在第一次获得 IP 之后。 我不是 NDK 专家。 这是我通过放置断点可以找到的结果。  

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

    感谢 Charles 的回复

    我同意您的看法、我们位于同一页面、 正如我在本主题中提到的  
    TM4C129XNCZAD:在 NS_BootTask 任务期间 ARP 公告数据包问题-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    此问题与 NDK 任务的时序问题有关、因此在对 NDK 稍作调查后、我发现 NDK 默认会发送此 ARP 广播消息、但 NDK 内部存在时序问题、阻止此消息在网络接口上传输 因此我们无法在 Wireshark 上看到它、但弄乱了 NDK、我在发送数据包之前添加了延迟。  

    - ndk/stack/bind/bind.c file 我添加了绿色行

    句柄 BindNew(句柄 HIF, IPN IPHost, IPN IPMask )
    {
      ...
      if ( IFGetType ( HIF )== HTYPE_ETH && IPHost != INADDR_ANY && IPHost != INADDR_BROADDR_BROADCAST )
      {
         TaskSleep (2500);
         LLIGenArpPacket( HIF, IPHost );
      }
      ...


    这将使引导任务能够等待执行较低 NDK 任务初始化  

    我将再次尝试找到初始化 NDK 任务接口的特定信号、但现在这解决了我的问题、现在我可以在网络上看到 ARP 广播消息、每个 NDK 引导牺牲时间开销 (2500ms)  

    当然、如果有人进行了该更改、请不要忘记构建