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.

[参考译文] RTOS/TM4C1294NCPDT:如何访问 DHCP 客户端的内部数据?

Guru**** 2550550 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/793608/rtos-tm4c1294ncpdt-how-do-i-get-access-to-the-internal-data-of-the-dhcp-client

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

我需要访问 TI-RTOS DHCP 客户端的内部数据、例如租赁时间、剩余租赁时间以及其他信息、以支持在客户网络上测试我的器件。

我有一个回调设置、当有特定的 DHCP 状态更新时(例如、当接收到新的 IP 地址时)、该设置会被调用、但所提供的信息并不足够。

在以下文件中支持 DHCP 的函数中:

C:\ti_tirtos_tivac_2_16_01_14\products\NDK_2_25_00_09\packages/ti\NDK\nettools\dhcpsm.c

有一个名为 Please pointing to a data structure named  DHCPLEASE 的指针、其中包含我要查找的信息。

是否有任何方法可以通过 Cfg*接口或任何其他函数集访问此指针或 DHCPLEASE 数据结构?

如果不可能、并且我想向 dhcpsm.c 添加一些附加代码以向我的应用程序提供此信息、是否有有关构建 NDK 的最新说明?

我在下面找到了该网站、但它似乎过时了:

processors.wiki.ti.com/.../Rebuilding_the_NDK_Core

谢谢、
sjf

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

    您好 SFJ、

    您现在无法访问 DHCPLEASE 数据结构。 这是因为 DHCPLEASE 未包含在顶层头文件中。 它仅在 dhcp.h 中 您必须重建 NDK 才能使其正常工作、因为您不能直接包含 dhcp.h 而不对其进行微调。  

    由于您位于 tivac SDK 上、因此您可以导航到 tivac 目录中的顶级 makefile 文件并调用:  

    使-f tirtos.mak NDK 

    您可能需要将 tirtos.mak 中的一些 make 变量设置到已安装的依赖项位置。

    现在、要使应用程序可以查看 DHCPLEASE、您需要编辑 ti/NDK/nettols/DHCP/dhcp.h、以便现在可以查看前2个示例

    #include 
    #include 

    之后、您可以重建 NDK。

    在您的应用中、您需要放置以下代码:

    #include 
    #include 
    #include 
    
    CISARGS *PA;
    void *hCfgEntry;
    int RC = 0;
    RC = CfgGetEntry (0、CFGTAG 服务、CFGITEM_SERVICE_DHCPCLIENT、1、&hCfgEntry);
    RC = CfgEntryInfo (hCfgEntry、0、(unsigned char **)(&PA));
    DHCPLEASE *请=(DHCPLEASE *)PA->hService; 

    然后、您将能够遍历"please structure (请结构)"以获取所需的内容。  

    此致、

    达尔顿

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

    感谢 Dalton 的回应。

    我使用您显示的 Cfg*函数添加了代码,然后在不重新编译 NDK 的情况下,很有耐心地继续编译并运行。 在首次调整编译器设置中的 include 目录后、使 dhcp.h 对我的代码可见、它不仅进行了编译、而且在运行时看起来也正常工作。 现在、我将从 DHCPLEASE 结构中复制租赁时间和当前状态。  

    我将继续进行重新编译、但是否需要深入了解为什么需要重新编译 NDK? 在对 dhcp.h 的简短检查中、编译器似乎具有在代码中使用 DHCPLEASE 结构所需的一切。

    谢谢、

    sjf

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

    你好、sjf、

    是的、编译器应该具有 DHCP.h 中所需的一切 实际上、我已经为您精心设计了解决方案、因为更快的解决方案是执行您所做的操作并将标头添加到编译器链接行。 对于 NDK、我们尝试进行修改、这样您就不需要多个"-i"来编译它、因此我默认使用允许该用例的修复。   

    您是否需要 DHCPLEASE 结构来执行运行时操作、还是仅用作调试/测试信息? 我之所以提出这一要求、是因为我希望将其作为一项更受支持的功能(无需在您的应用程序中直接包含 dhcp.h)、如果您的需求很大、我们可以在我们的调试工具中披露这一点。  

    此致、

    达尔顿  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DHCPLEASE 结构中的信息最初用于测试,但可能成为常规功能。

    再次感谢您的帮助。