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.

[参考译文] TMS320F28388D:使用 NDK 库启动"DHCP 服务器"服务

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library

器件型号:TMS320F28388D

您好!

要使用 NDK 库在 TMS320F28388D DSP 上启动 DHCP 服务器服务、我根据 "TI 网络开发者套件(NDK) API (SPRU524)" 文档中的说明更改了"tcpEchoF2838X"示例。 下图显示了这种解释。 我在   "NDK_tirtos.c" 文件的"initIP()"函数中添加了此配置、但每当我运行代码时、DHCP 服务器(TMS320F28388D)和 DHCP 客户端(我的笔记本电脑)都不会获得 IP、并且无法在它们之间进行通信。  

我必须提到、我    以这种方式在"DHCP 客户端"和"Static IP"模式下运行代码、并且代码成功运行。 但是、我不确定在"DHCP 服务器"模式下是否正确。 您能否指导我如何正确执行 F28388D 上的"DHCP 服务器"服务?

最棒的

Alex

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

    尊敬的 Alex:

    您能否详细说明在 DHCP 服务器模式下节点之间没有通信。  

    此配置应该起作用。 您是否看到 f28388D 进行的任何数据包传输(通过 Wireshark 或类似的内容)。 或接收到的数据包。

    在表达式窗口中、观察以太网低级驱动程序调试变量以查看它们是否在递增。

    此致、

    Yashwant

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

    您好、Yashwant、

    感谢你的答复。

    [引用 userid="463143" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library/3672772 #367772"]您是否看到 f28388D (通过 Wireshark 或类似的内容)进行的任何数据包传输[/quot]

    关于数据包传输、没有传输。 F28388D 芯片(DHCP 服务器)和主机(DHCP 客户端)均未分配 IP。 这是我目前的主要问题。 下面是“Wireshark”的屏幕截图。 DHCP 请求已从 DHCP 服务器发送到 DHCP 客户端。 但是,似乎有两个 DHCP 请求被发送到我的笔记本电脑,一个“DHCP”和一个“DHCPv6”似乎彼此冲突。 这至少是我从这张图片中的理解。

    [引用 userid="463143" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library/3672772 #367772">您能否详细说明 DHCP 服务器模式下的节点之间没有通信。  [/报价]

    下面是有关我的实现的更多说明。 我在该通信中有两个节点。 第一个是 DHCP 服务器、它是我的 controlCARD 板(TMDCNCD28388D)、另一个是 DHCP 客户端、它是我的笔记本电脑。 我在“initIP”函数中添加了 DHCP 服务器配置,如下图所示。

    另一方面,我在笔记本电脑的“自动获取 IP 地址”模式下设置以太网 IPv4设置,如下图所示。

    然后、我通过以太网电缆连接我的笔记本电脑和电路板。 但是,每当我在板上运行代码并在“运行时对象视图(ROW)”窗口中观察 SysMin 模块时,就不会向网络添加 IP 地址。 下图显示了这一点。

    但是,每当我使用“DHCP 客户机”或“静态 IP”配置运行代码时,此窗口将显示如下消息:

    因此、我认为由于 DHCP 服务器没有获得 IP、DHCP 客户端也无法获得 IP。 如果有用、我也可以与您私下分享我的项目。

    [引用 userid="463143" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library/3672772 #367772"]在表达式窗口中,查看以太网低级驱动程序调试变量是否在递增。

    为了观察这些变量,我在代码中包含了“ethernet.h”并使用了几个调试变量。 但是,它在“ethernet.h”文件中显示错误。 我想知道您能否指导我如何观察以太网调试变量。

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

    您好、Yashwant、  

    我只是想为您更新一些内容。 在"TI 网络开发者套件(NDK)用户指南"文档(SPRU523K)中、我们可以看到以下有关 NDK 中 NETCTRL 库的说明。 根据这张图片并为了正确使用 DHCP 服务器、我在链接器设置中将我正在使用的 NETCTRL 版本从"最小值"更改为"完整"。

    但是、在构建项目后、我遇到了这样的错误、即"NetTool_IPv4"库中存在一个未解析的符号。 我认为、解决此错误可以解决我的问题。 但是 、我无法访问"NetTool_IPv4"库的源代码。 我想知道您能否提及我如何 修复此错误。

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

    请参阅 第271行中 NDK_f2838x_3_61_01\SOURCE \ti\NDK\config\PACKAGE.xs 位置处的 PACKAGE.xs、查看是否有用。

    项目中包含的默认堆栈库为 ti/ndk/stack/lib/stk.aem4。 您必须将其更改为 ti/ndk/stack/lib/stk_nat.aem4

    您还可以尝试启用 serviceReportHook 函数以进一步调试 DHCP 服务器服务(可能是堆栈大小不足且需要增加)。

    我们无法调试您的代码。 如果以太网低级驱动程序或示例中存在问题、请随时联系我们、因为该问题未进行修改。

    谢谢、

    Yashwant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="463143" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library/3678429 #3678429"]

    请参阅 第271行中 NDK_f2838x_3_61_01\SOURCE \ti\NDK\config\PACKAGE.xs 位置处的 PACKAGE.xs、查看是否有用。

    项目中包含的默认堆栈库为 ti/ndk/stack/lib/stk.aem4。 您必须将其更改为 ti/ndk/stack/lib/stk_nat.aem4

    [/报价]

    感谢您的信息。 我现在使用的是完整版 netctrl 库、我更改了堆栈库、代码构建得很好。

    [引用 userid="463143" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/993624/tms320f28388d-launching-the-dhcp-server-service-using-ndk-library/3678429 #3678429"]您还可以尝试启用 serviceReportHook 函数以进一步调试 DHCP 服务器服务(可能是堆栈大小不足且需要增加)。

    我启用了这些函数并在代码中增加了两个堆栈大小(与 ndkStackThread、高优先级任务、低优先级任务、规范优先级任务和 NDK 引导任务相关的任何堆栈大小) 、在链接器设置中增加了堆栈大小、甚至高达4096。  我还在"netsrv.h"文件中启用了 DHCP 服务器的宏、如下图所示、并重建了代码库和 NDK 库。

    但问题尚未解决,我看到 ROV 中“serviceReportHook”函数的“服务状态:DHCP:失败::000”消息。

    要正确运行 DHCP 服务器,是否还需要进行其他更改?  我是否应该更改上面提到的 DHCP 服务器配置?

    我想知道您是否会指导我。

    谢谢、

    Alex

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

    尊敬的 Alex:

    您能告诉我们 DHCP 服务为什么以前失败以及如何解决。

    此致、

    Yashwant

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

    您好、Yashwant、

    当然,问题是我们必须将以下行添加到 DHCP 服务器配置中。 请注意、尽管 提到"上述代码是使用配置系统调用此服务所需的全部代码"、但 NDK 文档中提供的代码段中缺少此行(在我之前的文章中共享)。

    netAddr.NetType = CFG_NETTYPE_DHCPPS;

    此致、

    A.